Android HTTPS中间人劫持漏洞浅析
2015-03-19 14:54
337 查看
Android HTTPS中间人劫持漏洞浅析
FromFreeBuf By Jason_HZAndroid HTTPS中间人劫持漏洞描述
在密码学和计算机安全领域中,中间人攻击 (Man-in-the-middleattack,通常缩写为MITM)是指攻击者与通讯的两端分别创建独立的联系,并交换其所收到的数据,使通讯的两端认为他们正在通过一个私密的连接与对方直接对话,但事实上整个会话都被攻击者完全控制。在中间人攻击中,攻击者可以拦截通讯双方的通话并插入新的内容。AndroidHTTPS中间人攻击漏洞源于:
1. 没有对SSL证书进行校验;
2. 没有对域名进行校验;
3. 证书颁发机构(CertificationAuthority)被攻击导致私钥泄露等。攻击者可通过中间人攻击,盗取账户密码明文、聊天内容、通讯地址、电话号码以及信用卡支付信息等敏感信息,甚至通过中间人劫持将原有信息替换成恶意链接或恶意代码程序,以达到远程控制、恶意扣费等攻击意图。
在各大漏洞平台上,有大量存在HTTPS证书不校验漏洞,例如国内绝大部分Android APP存在信任所有证书漏洞、亚马逊最新官方Android版存在一处信任所有证书漏洞、Yahoo雅虎在国内访问遭遇SSL中间人攻击、携程旅游网最新Android客户端https未校验证书导致https通信内容完全被捕获。
影响范围
Android系统漏洞分析
1)中间人攻击漏洞位置:
X509TrustManager、HostnameVerifier 、setHostnameVerifier (X509HostnameVerifier hostnameVerifier)2) 漏洞触发前提条件:
自定义的X509TrustManager不校验证书;或实现的自定义HostnameVerifier不校验域名接受任意域名;
或使用setHostnameVerifier (ALLOW_ALL_HOSTNAME_VERIFIER);
3) 漏洞原理:
由于客户端没有校验服务端的证书,因此攻击者就能与通讯的两端分别创建独立的联系,并交换其所收到的数据,使通讯的两端认为他们正在通过一个私密的连接与对方直接对话,但事实上整个会话都被攻击者完全控制。在中间人攻击中,攻击者可以拦截通讯双方的通话并插入新的内容。4) Android HTTPS中间人攻击漏洞证明
(1) 客户端不校验SSL证书(包含签名CA是否合法、域名是否匹配、是否自签名证书、证书是否过期)包含以下几种编码错误情况:a. 自实现的不校验证书的X509TrustManager接口的Java代码片段 (其中的
checkServerTrusted()方法实现为空,即不检查服务器是否可信):
b. 不检查站点域名与站点证书的域名是否匹配的Java代码片段:
c. 接受任意域名的Java代码片段:
SSLSocketFactory sf; …… sf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER); |
修复建议
对SSL证书进行强校验
出于安全考虑,建议对SSL证书进行强校验(签名CA是否合法、证书是否是自签名、主机域名是否匹配、证书是否过期等),详细修复方案请参照Google官方关于SSL的安全建议。相关文章推荐
- Android HTTPS中间人劫持漏洞浅析
- Android HTTPS中间人劫持漏洞浅析
- android https正确调用方案(防中间人劫持)
- Android静态安全检测 -> HTTPS敏感数据劫持漏洞
- 窃听风暴:Android平台https嗅探劫持漏洞
- Android平台https嗅探劫持漏洞
- android https正确调用方案(防中间人劫持)
- 浅析Android系统中HTTPS通信的实现
- HTTPS 原理浅析及其在 Android 中的使用
- Android安全之Https中间人攻击漏洞
- Android安全之Https中间人攻击漏洞
- dx.jar部分类的用法——以检测https劫持漏洞为例
- HTTPS 原理浅析及其在 Android 中的使用
- HTTPS 原理浅析及其在 Android 中的使用
- 恶意程序利用Android漏洞点击劫持
- HTTPS 原理浅析及其在 Android 中的使用
- Android应用本地拒绝服务漏洞浅析
- 一条短信控制你的手机! Android平台的SQL注入漏洞浅析
- Android HTTPS安全漏洞分析
- Android本地拒绝服务漏洞浅析