不安全的 X509TrustManager

OWASP 类别: MASVS-CODE:代码质量

概述

X509TrustManager 类负责验证远程服务器的真实性。它通过验证服务器的证书来做到这一点。

Android 应用中不安全的 X509TrustManager 实现是指没有正确验证与其通信的服务器真实性的实现。这可能允许攻击者冒充合法服务器,并诱骗应用将其敏感数据发送给攻击者。

漏洞的存在是因为使用 X509TrustManager 类,Java/Android 允许完全覆盖服务器验证。 X509TrustManager 类有两个感兴趣的功能: checkServerTrusted()getAcceptedIssuers()。可以将这些函数调用配置为信任所有 X.509 证书。最后,自定义验证逻辑可能存在错误或不完整,并允许意外连接。在所有这些情况下,类的目的都被否定了,并且基于 X509TrustManager 输出建立的网络连接不安全。

影响

不安全的 X509TrustManager 实现会导致漏洞,这些漏洞可用于对受害者应用的网络流量执行中间人 (MitM) 攻击。利用此不安全代码的影响是,如果触发此代码,用户的应用网络数据可能会被网络攻击者(远程或本地)泄露。影响取决于无意中泄露的网络流量内容(PII、私人信息、敏感会话值、服务凭据等)。

缓解措施

使用 NetworkSecurityConfig.xml 功能确保所有生产、测试、调试和开发阶段的连接都得到正确处理,而不是使用或实现自定义 TLS/SSL 证书验证代码。如果测试和调试版本需要使用自签名证书,请考虑使用 NetworkSecurityConfig 而不是实现自定义 X509TrustManager

资源