修复跨应用脚本漏洞

本文面向的是所发布的应用存在跨应用脚本漏洞的开发者。

问题说明

您的一个或多个应用存在 WebView 跨应用脚本问题,该问题可让恶意应用有机会窃取用户的 Cookie 和其他数据。请参阅 Play 管理中心内的通知。Play 管理中心内显示的最后期限过后,所有包含未修复安全漏洞的应用可能会从 Google Play 下架

需要采取的行动​

  1. 登录您的 Play 管理中心,然后转到“提醒”部分,了解受影响的应用以及解决这些问题的最后期限。
  2. 更新受影响的应用并修复漏洞。
  3. 提交受影响应用的更新版本。

在此期间,您的新应用或应用更新将会处于待发布状态,直至您的请求审核完毕。如果该应用未正确更新,您仍然会看到警告。

更多详情

如果在 WebView 中启用 JavaScript 并加载从不受信任的 Intent 中读取的数据,恶意应用便可诱使 WebView 在不安全上下文中执行 JavaScript 代码。为避免此安全漏洞,建议您采用下列其中一种方法:

方法 1:确保受影响的 Activity 不会导出

查找包含受影响 WebViewActivity。如果这些 Activity 不需要从其他应用中获取 Intent,您可以在清单中针对这些 Activity 设置 android:exported=false。这样可确保恶意应用无法向这些 Activity 中的 WebView 发送有害输入内容。

方法 2:保护已导出 Activity 中的 WebView

如果您想将包含受影响 WebViewActivity 设为已导出,我们建议您做出以下更改:

  1. 保护对 evaluateJavascript 和 loadUrl 的调用

    确保 evaluateJavascript 的参数一律是受信任的参数。如果使用不受信任的 Intent 中未经过处理的输入内容调用 evaluateJavascript,攻击者便可借机在受影响的 WebView 中执行有害的脚本。同样,如果使用包含 javascript:跳转协议网址且未经过处理的输入内容来调用 loadUrl,攻击者也能借机执行有害脚本。

  2. 避免加载不安全的文件

    确保受影响的 WebView 无法加载 Cookie 数据库。如果 WebView 会加载不受信任的 Intent 中未经过处理的 file:// 网址,就可能会遭到恶意应用通过以下两个步骤进行的攻击。第一步:某个恶意网页可能在 Cookie 数据库中写入 <script> 标记。第二步:如果恶意应用发送 Intent(其中包含指向 WebView Cookie 数据库的 file:// 网址),或者恶意网页本身将 WebView 重定向到相应文件网址,WebView 便可能会加载这个经过修改的 Cookie 数据库文件。这样,存储在 Cookie 数据库中的恶意 <script> 就会加载并执行,从而能够窃取会话信息。

    您可以通过三种方法确保受影响的 WebView 无法加载 WebView Cookie 数据库。

    1. 停用所有文件访问权限
    2. 确保 WebView 仅加载 file:// 网址,并验证已加载的 file:// 网址是否都指向安全的文件。请注意,攻击者可能会利用符号链接来误导网址路径检查。要想防范此类攻击,请务必在加载之前检查所有不受信任的 file:// 网址的规范路径,而不只是检查网址路径。
    3. 如果您想允许 WebView 既能加载 http:// 网址,也能加载 file:// 网址,请使用 WebViewClient 中的 shouldOverrideUrlLoadingshouldInterceptRequest 验证 file:// 网址。这样可确保加载到 WebView 中的所有网址都得到验证,而不仅限于直接提供给 loadUrl() 函数调用的网址。

我们随时为您提供帮助
如果您有关于此漏洞的技术问题,可以在 Stack Overflow 上发帖咨询(使用“android-security”标签)。有关您需要采取哪些步骤来解决此问题的说明,请与我们的开发者支持团队联系。

该内容对您有帮助吗?

您有什么改进建议?
false
主菜单
4893243072618267554
true
搜索支持中心
true
true
true
true
true
5016068
false
false