博客 RSS 源

安全公告 CVE-2020-6506
作者:Jesse MacFadyen
2020年9月29日

正式披露的公告

此漏洞是 Android WebView 中的一个通用跨站脚本 (UXSS) 漏洞,它允许跨域 iframe 在顶层文档中执行任意 JavaScript。为 Android 设备构建并允许加载来自其不受控制的域的 http 内容的 Apache Cordova 应用程序可能会受到影响。理论上,这可能发生在 iframe 中,或者通过使用 InAppBrowser 插件 (cordova-plugin-inappbrowser) 实现。

如果你的应用程序加载本地页面(例如 Cordova 应用程序中的 index.html 加载来自 malicious-example.com 的 iframe),则无需用户交互即可利用此漏洞。

此漏洞已在 Android WebView 版本 83.0.4103.106 中修复。用户必须自行从 Google Play 商店更新他们的 Android WebView。

缓解措施

你可以采取一些预防措施来避免此漏洞。

  1. 尽可能使用限制性的允许列表和内容安全策略 (CSP)。
  2. 通常,始终将本地代码加载到应用程序的主 webview 中,并使用 InAppBrowser 显示任何远程内容。
  3. 不要使用 iframe,如果必须使用,永远不要在应用程序的主 webview 中使用。使用 sandbox 属性将缓解此漏洞(最好使用空值)。避免同时使用这些沙箱属性 allow-popups allow-top-navigation allow-scripts,因为它们不会缓解此漏洞。

     <iframe sandbox='' src='http://untrusted-source' />
    

大多数这些预防措施一直是 Apache Cordova 的温和建议,但并未反映在通常保持开放的默认值中。Apache Cordova 提交者正在调查在框架级别防止此漏洞,并收紧默认值以防止意外暴露。同时,如果你怀疑你的应用程序存在漏洞,请遵循上述预防措施。

感谢 Alesandro Ortiz 发现此漏洞并引起我们的注意。

其他参考资料

编辑:修复了未链接的链接 -JM