本文面向的是发布的应用中存在 Intent 配置易被盗用的安全漏洞的开发者。
问题说明
您的一个或多个应用存在 Intent 配置易被盗用问题,该问题让恶意网络或网站可以访问专用应用组件。请参阅 Play 管理中心内的通知。在 Play 管理中心内显示的截止日期过后,系统可能会将所有包含未修复安全漏洞的应用从 Google Play 中移除。
需要采取的行动
-
登录您的 Play 管理中心,然后转到“提醒”部分,了解受影响的应用以及解决这些问题的截止日期。
-
按照下文中强调的步骤更新受影响的应用。
-
提交受影响应用的更新版本。
重新提交后,我们会重新审核您的应用。审核过程可能需要几个小时才能完成。如果应用通过审核并成功发布,便无需进一步操作。如果应用未通过审核,则新版应用将无法发布,您会收到电子邮件通知。
更多详细信息
WebView 在访问不受信任的网络内容时会使用 Intent.parseUri 解析 intent:// 链接,然后使用 startActivity 发送这些 Intent;在这种情况下,WebView 很容易遭到 Intent 配置盗用攻击。恶意网络内容可能会借此操纵 WebView,进而向专用应用组件发送任意 Intent。这可能会导致应用遭攻破,例如受这类组件操纵的专用应用数据被盗。请注意,不受信任的网络内容往往包括通过 HTTP 加载的可信网域中的内容。
为避免此安全漏洞,建议您采用下列其中一种方法:
方法 1:确保 WebView 不能发送任意 Intent
针对通过 Intent.parseUri 构建的 Intent,应用可以使用以下代码限制此类 Intent 只能以隐式 Intent 的形式发送给具有 BROWSABLE Intent 过滤器的组件:
// convert Intent scheme URL to Intent object
Intent intent = Intent.parseUri(url);
// forbid launching activities without BROWSABLE category
intent.addCategory("android.intent.category.BROWSABLE");
// forbid explicit call
intent.setComponent(null);
// forbid Intent with selector Intent
intent.setSelector(null);
// start the activity by the Intent
view.getContext().startActivity(intent, -1);
方法 2:确保受影响的 WebView 不会加载不受信任的网络内容
如果 WebView 需要解析任意 intent://
配置网址,那么请确保 WebView 不会加载不受信任的网络内容。不受信任的网络内容包括通过未加密连接加载的网络内容。开发者可以在清单中将 android:usesCleartextTraffic
设为 false,或设置禁止 HTTP 流量的网络安全配置。或者,开发者也可以防止任何受影响的 WebView 通过 loadUrl
加载采用 HTTP 协议的网址。
我们建议开发者务必防止受影响的 WebView 加载从不受信任来源获取且不受限制的网址(例如,从不受信任的 Intent 获取的网址)。
我们随时为您提供帮助
如果您针对此漏洞有技术方面的问题,可以在 Stack Overflow 上发帖咨询(使用“android-security”标签)。有关您需要采取哪些步骤来解决此问题的说明,请与我们的开发者支持团队联系。