本文面向的是在应用中采用不安全的 WebViewClient.onReceivedSslError 处理程序实现方式的开发者。
问题说明
您的一个或多个应用采用了不安全的 onReceivedSslError 处理程序实现方式,这会使应用容易遭受中间人攻击。攻击者可能会更改受影响 WebView 的内容、读取传输的数据(例如登录凭据),以及在应用中执行 JavaScript 代码。请参阅 Play 管理中心内的通知。在 Play 管理中心内显示的最后期限过后,系统可能会将所有包含未修复安全漏洞的应用从 Google Play 中移除。
需要采取的行动
- 登录您的 Play 管理中心,然后转到“提醒”部分,了解受影响的应用以及解决这些问题的最后期限。
- 更新受影响的应用并修复漏洞。
- 提交受影响应用的更新版本。
重新提交后,我们会重新审核您的应用。审核过程可能需要几个小时才能完成。如果应用通过审核并成功发布,便无需进一步操作。如果应用未通过审核,则新版应用将无法发布,您会收到电子邮件通知。
更多详细信息
- 为了解决此问题,请将您的应用代码更新为在服务器提供的证书符合您的预期时调用 SslErrorHandler.proceed(),否则调用 SslErrorHandler.cancel()。在检查证书的有效性方面,请注意以下几点:
-
如果应用针对证书有效性采用的检查机制不够充分,我们可能会判定该应用存在问题。例如:只检查 getPrimaryError 的返回值不足以确定证书的有效性。
-
忽略 SslError.getPrimaryError 返回的大多数 SSL 错误是不安全的做法。请注意,getPrimaryError 会返回多个错误中最严重的那个错误。因此,如果
getPrimaryError() != SSL_UNTRUSTED
的值为 true,则表明相应连接的多个错误中可能仍存在一个 SSL_UNTRUSTED 错误。
-
-
如果是您使用的第三方库导致了此漏洞,请通知该第三方,并与其合作解决此问题。
如需详细了解 SSL 错误处理程序,请参阅 Android 开发者帮助中心内的相关文档。如有其他技术问题,您可以在 https://www.stackoverflow.com/questions 上发帖咨询(使用“android-security”和“SslErrorHandler”标签)。
尽管这些具体问题并非一定会影响使用 WebView SSL 的所有应用,但我们仍建议您安装所有最新的安全补丁。如果应用存在会让用户面临被入侵风险的漏洞,那么我们可能会因其违反内容政策和《开发者分发协议》第 4.4 条的规定而将其视为危险产品。
我们随时为您提供帮助
如果您有关于此漏洞的技术问题,可以在 Stack Overflow 上发帖咨询(使用“android-security”标签)。有关您需要采取哪些步骤来解决此问题的说明,请与我们的开发者支持团队联系。