听说 WebView 漏洞在 4.2 之前的 Android 版本中活跃。我读到它是由谷歌在 4.2 的更新中修复的。我想知道的是 WebView 漏洞的简要描述,例如,如果可以保护我的 Android 应用免受此漏洞的影响,攻击者如何使用此漏洞以及我自己在我的应用中修复此问题的任何解决方案。
如何利用 android WebView 以及如何保护我的应用免受 WebView 漏洞的影响?
WebView 组件中涉及的主要漏洞是不安全的直接对象引用、SQL 注入和跨站点脚本 (XSS)。
虽然这三个都是潜在的巨大风险,但 XSS 漏洞潜力可用于使用 file:/// 命令访问共享首选项文件,或者可以利用 smsJSInterface.launchSMSActivity 从手机发送不需要的 SMS 消息,除了窃取凭据或为 HTML、CSS、Javascript 或其他浏览器级别的行为提供虚假的前端。
如果您按如下方式关闭 setJavaScriptEnabled,攻击者将无法运行任何 Javascript 来执行 XSS 攻击:
myWebView.getSettings().setJavaScriptEnabled(false);
或者,如果您不能这样做,请确保使用 XSS 过滤器组件(例如 OWASP Java Encoder Project)正确转义每个上下文。
您可以通过使用 sqlite3 命令行工具或兼容 SQLite3 的浏览器查看 /app/-packagename-/db/webview.db 文件来查看每个 WebView 可用的数据。当然,任何进入 SQLite3 数据库或对其执行查询或其他字符串操作的输入都可能成为 SQL 注入的潜在插入点——尽管在某些情况下可能需要网络 MITM 场景。
在这些针对 HerdFinancial 应用程序的渗透测试教程中可以找到一些不安全的直接对象引用示例,该应用程序是OWASP GoatDroid 项目的一部分:
WebView 也可能被恶意网站利用,因为无法知道网站是否被标记为恶意软件或网络钓鱼。大多数时候,开发人员不显示 URL,因此最终用户甚至无法检查该站点是否是他们认为的那样。我们刚刚推出了一个安全 API 来解决这个问题https://metacert.com/api-documentation/getting-started/很想听听您对 API 和文档的看法 - 您可以使用免费服务而无需签订合同。
除了@atdre 的出色回答,我想指出,能够利用底层应用程序的 webview 只是故事的一方面。另一方面是底层应用程序,它可能会尝试滥用 JS 接口功能来访问(并可能利用)在 webview 中加载的整个页面。
我已尝试在此处(太多)详细信息中对此进行解释,您可能想查看一下。