本文面向的是所发布的应用存在跨应用脚本漏洞的开发者。
问题说明
您的一个或多个应用存在 WebView 跨应用脚本问题,该问题可让恶意应用有机会窃取用户的 Cookie 和其他数据。请参阅 Play 管理中心内的通知。在 Play 管理中心内显示的最后期限过后,所有包含未修复安全漏洞的应用可能会从 Google Play 下架。
需要采取的行动
- 登录您的 Play 管理中心,然后转到“提醒”部分,了解受影响的应用以及解决这些问题的最后期限。
- 更新受影响的应用并修复漏洞。
- 提交受影响应用的更新版本。
在此期间,您的新应用或应用更新将会处于待发布状态,直至您的请求审核完毕。如果该应用未正确更新,您仍然会看到警告。
更多详情
如果在 WebView 中启用 JavaScript 并加载从不受信任的 Intent 中读取的数据,恶意应用便可诱使 WebView 在不安全上下文中执行 JavaScript 代码。为避免此安全漏洞,建议您采用下列其中一种方法:
方法 1:确保受影响的 Activity 不会导出
查找包含受影响 WebView 的 Activity。如果这些 Activity 不需要从其他应用中获取 Intent,您可以在清单中针对这些 Activity 设置 android:exported=false。这样可确保恶意应用无法向这些 Activity 中的 WebView 发送有害输入内容。
方法 2:保护已导出 Activity 中的 WebView
如果您想将包含受影响 WebView 的 Activity 设为已导出,我们建议您做出以下更改:
- 保护对 evaluateJavascript 和 loadUrl 的调用
确保 evaluateJavascript 的参数一律是受信任的参数。如果使用不受信任的 Intent 中未经过处理的输入内容调用 evaluateJavascript,攻击者便可借机在受影响的 WebView 中执行有害的脚本。同样,如果使用包含 javascript:跳转协议网址且未经过处理的输入内容来调用 loadUrl,攻击者也能借机执行有害脚本。
- 避免加载不安全的文件
确保受影响的 WebView 无法加载 Cookie 数据库。如果 WebView 会加载不受信任的 Intent 中未经过处理的 file:// 网址,就可能会遭到恶意应用通过以下两个步骤进行的攻击。第一步:某个恶意网页可能在 Cookie 数据库中写入 <script> 标记。第二步:如果恶意应用发送 Intent(其中包含指向 WebView Cookie 数据库的 file:// 网址),或者恶意网页本身将 WebView 重定向到相应文件网址,WebView 便可能会加载这个经过修改的 Cookie 数据库文件。这样,存储在 Cookie 数据库中的恶意 <script> 就会加载并执行,从而能够窃取会话信息。
您可以通过三种方法确保受影响的 WebView 无法加载 WebView Cookie 数据库。
- 停用所有文件访问权限。
- 确保 WebView 仅加载 file:// 网址,并验证已加载的 file:// 网址是否都指向安全的文件。请注意,攻击者可能会利用符号链接来误导网址路径检查。要想防范此类攻击,请务必在加载之前检查所有不受信任的 file:// 网址的规范路径,而不只是检查网址路径。
- 如果您想允许 WebView 既能加载 http:// 网址,也能加载 file:// 网址,请使用 WebViewClient 中的 shouldOverrideUrlLoading 和 shouldInterceptRequest 验证 file:// 网址。这样可确保加载到 WebView 中的所有网址都得到验证,而不仅限于直接提供给 loadUrl() 函数调用的网址。
我们随时为您提供帮助
如果您有关于此漏洞的技术问题,可以在 Stack Overflow 上发帖咨询(使用“android-security”标签)。有关您需要采取哪些步骤来解决此问题的说明,请与我们的开发者支持团队联系。