博客 RSS订阅

Apache Cordova Android 3.5.1
作者:Marcel Kinard
2014年8月4日

更新:2014-08-06 (CVE-2014-3502 的文本在此文章发布后进行了更改,以更好地解释问题的范围和缓解问题的方法)

在 Cordova 的 Android 平台上发现了安全问题。我们正在发布 Cordova Android 的 3.5.1 版本来解决这些安全问题。我们建议所有使用 Cordova 构建的 Android 应用程序都升级到使用 Cordova Android 的 3.5.1 版本。其他 Cordova 平台(如 iOS)不受影响,无需更新。

当使用 Cordova CLI 时,使用 Cordova Android 3.5.1 的命令是

cordova platform add [email protected] --usenpm

安全问题包括 CVE-2014-3500、CVE-2014-3501 和 CVE-2014-3502。

为了您的方便,这些 CVE 的文本包含在此处。


CVE-2014-3500:通过 Android intent URL 进行 Cordova 跨应用程序脚本攻击

严重性:高

供应商:Apache 软件基金会

受影响的版本:最高至 Cordova Android 3.5.0 的版本

描述:使用 Cordova 框架构建的 Android 应用程序可以通过特殊的 intent URL 启动。一个精心设计的 URL 可能会导致基于 Cordova 的应用程序以与开发者预期不同的起始页启动,包括存储在 Android 设备上的其他 HTML 内容。这种情况存在于所有已发布的最高至 3.5.0 的 Cordova 版本中,并且已在最新版本 (3.5.1) 中修复。我们建议受影响的项目将其应用程序更新到最新版本。

升级路径:关注此问题的开发者应使用 Cordova Android 3.5.1 重建其应用程序。

致谢:此问题由 IBM 安全系统的 David Kaplan 和 Roee Hay 发现。


CVE-2014-3501:非 HTTP URL 的 Cordova 白名单绕过

严重性:中

供应商:Apache 软件基金会

受影响的版本:所有已发布的 Cordova Android 版本

描述:使用 Cordova 框架构建的 Android 应用程序使用 WebView 组件来显示内容。Cordova 应用程序可以指定一个 URL 白名单,允许应用程序显示或通过 XMLHttpRequest 与之通信。然而,当通过 JavaScript 指示 WebView 组件通过非 HTTP 通道进行通信时,此白名单不会被使用。

具体而言,可以从应用程序 JavaScript 中打开一个 WebSocket 连接,该连接将连接到 Internet 上任何可访问的服务器。如果攻击者能够在应用程序中执行任意 JavaScript,则该攻击者可以导致与任何服务器建立连接,从而绕过 HTTP 白名单。

这是 Android 上混合应用程序架构的普遍限制,而非 Apache Cordova 特有的。

可以通过在应用程序中的所有 HTML 页面中添加 CSP meta 标签来缓解此攻击向量,以仅允许连接到受信任的来源。应用程序开发人员还应升级到 Cordova Android 3.5.1,以降低针对其应用程序的 XAS 攻击的风险,这些攻击随后可能会使用此机制连接到非预期的服务器。有关可能的 XAS 漏洞的更多信息,请参阅 CVE-2014-3500。

升级路径:关注此问题的开发者应使用 Cordova Android 3.5.1 重建其应用程序,并考虑在其应用程序 HTML 中添加 CSP meta 标签。

致谢:此问题由 IBM 安全系统的 David Kaplan 和 Roee Hay 发现。


CVE-2014-3502:Cordova 应用程序可能通过 URL 加载将数据泄露给其他应用程序

严重性:中

供应商:Apache 软件基金会

受影响的版本:最高至 Cordova Android 3.5.0 的版本

描述:使用 Cordova 框架构建的 Android 应用程序可以通过使用锚标记或将 webview 重定向到 Android intent URL 来启动其他应用程序。一个可以操纵 Cordova 应用程序 HTML 内容的攻击者可以创建打开其他应用程序并将任意数据发送到这些应用程序的链接。一个可以在 Cordova 应用程序的上下文中运行任意 JavaScript 代码的攻击者也可以将文档位置设置为此类 URL。通过将其与第二个易受攻击的应用程序结合使用,攻击者可以使用此方法将数据从 Cordova 应用程序发送到网络。

最新版本的 Cordova Android 采取措施阻止显式的 Android intent URL,使其不再用于启动设备上的任意应用程序。

隐式 intent,包括带有“tel”、“geo”和“sms”等方案的 URL 仍然可以默认用于打开外部应用程序,但此行为可以被插件覆盖。

升级路径:关注此问题的开发者应使用 Cordova Android 3.5.1 重建其应用程序。

致谢:此问题由 IBM 安全系统的 David Kaplan 和 Roee Hay 发现。

(此通知最初如下所示:)

CVE-2014-3502:Cordova 应用程序可能通过 Android intent URL 将数据泄露给其他应用程序

严重性:中

供应商:Apache 软件基金会

受影响的版本:最高至 Cordova Android 3.5.0 的版本

描述:使用 Cordova 框架构建的 Android 应用程序可以通过使用锚标记或将 webview 重定向到 Android intent URL 来启动其他应用程序。一个可以操纵 Cordova 应用程序 HTML 内容的攻击者可以创建打开其他应用程序并将任意数据发送到这些应用程序的链接。一个可以在 Cordova 应用程序的上下文中运行任意 JavaScript 代码的攻击者也可以将文档位置设置为此类 URL。通过将其与第二个易受攻击的应用程序结合使用,攻击者可以使用此方法将数据从 Cordova 应用程序发送到网络。

最新版本的 Cordova Android 采取措施阻止显式的 Android intent URL,使其不再用于启动设备上的任意应用程序。

升级路径:关注此问题的开发者应使用 Cordova Android 3.5.1 重建其应用程序。

致谢:此问题由 IBM 安全系统的 David Kaplan 和 Roee Hay 发现。