不安全的 HostnameVerifier

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

概述

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

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

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

影响

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

缓解措施

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

资源