Android静态安全检测 -> 主机名弱校验
主机名弱校验 -HostnameVerifier.verify方法1. API继承关系javax.net.ssl.HostnameVerifierpublic interface HostnameVerifier主要方法verify(String hostname, SSLSession
·
主机名弱校验 - HostnameVerifier.verify方法
一、API
1. 继承关系
【1】javax.net.ssl.HostnameVerifier
【2】public interface HostnameVerifier
2. 主要方法
【1】verify(String hostname, SSLSession session)
校验服务器主机名
【2】参考链接
https://developer.android.com/reference/javax/net/ssl/HostnameVerifier.html
3. 示例
【1】verify方法,接受任意域名服务器
【2】参考链接
http://pingguohe.net/2016/02/26/Android-App-secure-ssl.html
二、触发条件
1. 自定义实现HostnameVerifier
【1】对应到smali语句中的特征
.implements Ljavax/net/ssl/HostnameVerifier;
2. verify方法中的语句
【1】定位verify方法
.method public verify(Ljava/lang/String;Ljavax/net/ssl/SSLSession;)Z
【2】verify方法内的语句判断
const v0, 0x1
return v0
3. 漏洞代码示例
三、漏洞原理
【1】自定义实现的HostnameVerifier子类中,未对主机名做验证,默认接受所有域名,会存在安全风险,可能会导致恶意程序利用中间人攻击绕过主机名校验
【2】更多内容
http://pingguohe.net/2016/02/26/Android-App-secure-ssl.html
http://www.droidsec.cn/android-https中间人劫持漏洞浅析/
https://jaq.alibaba.com/community/art/show?spm=a313e.7975615.40002100.4.1ooXUl&articleid=60
四、修复建议
【1】利用HostnameVerifier子类中的verify函数,校验服务器主机名的合法性
更多推荐
所有评论(0)