不安全的 HostnameVerifier

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

概述

HostnameVerifier 实现负责验证服务器证书中的主机名是否与客户端尝试连接的服务器的主机名匹配。

Android 应用中不安全的 HostnameVerifier 实现是指未正确验证与之通信的服务器主机名的实现。这可能允许攻击者冒充合法服务器,并诱使应用将其敏感数据发送给攻击者。

此漏洞的存在是因为 HostnameVerifier 类具有可以跳过 X.509 证书主机名验证的功能调用,而是仅验证证书的哈希值。一个常见的误解是 SSLSession#isValid 函数执行安全相关的操作,而实际上它的目的是仅检查会话是否有效以及是否可用于恢复或加入;这两者都不验证会话的安全性。该 HostnameVerifier 类已被 NetworkSecurityConfig 取代。

影响

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

缓解措施

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

资源