当前位置:WooYun >> 漏洞信息

漏洞概要 关注数(24) 关注此漏洞

缺陷编号:wooyun-2014-081966

漏洞标题:携程旅游网最新android客户端https未校验证书导致https通信内容完全被捕获

相关厂商:携程旅行网

漏洞作者: Guardian

提交时间:2014-11-05 13:04

修复时间:2014-12-25 18:14

公开时间:2014-12-25 18:14

漏洞类型:非授权访问/认证绕过

危害等级:高

自评Rank:20

漏洞状态:厂商已经确认

漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2014-11-05: 该漏洞正等待厂商内部评估
2014-11-05: 厂商已经确认,与白帽子共同解决该漏洞中,漏洞信息仅向厂商公开
2014-11-25: 细节向核心白帽子及相关领域专家公开
2014-12-05: 细节向普通白帽子公开
2014-12-15: 细节向实习白帽子公开
2014-12-25: 细节向公众公开

简要描述:

覆盖了Google默认的证书校验机制,使用了自定义的trustmanager,却没有严格按照下面标准的方案校验证书。导致https通信内容完全可以被捕获。

详细说明:

测试版本为最新的https://play.google.com/store/apps/details?id=ctrip.english&hl=zh_CN
覆盖了Google默认的证书校验机制,使用了自定义的trustmanager,却没有严格按照下面标准的方案校验证书。导致https通信内容完全可以被捕获。
API的检查内容包括以下4方面的内容:
1. 签名CA是否合法;
2. 域名是否匹配;
3. 是不是自签名证书;
4. 证书是否过期。

漏洞证明:

如下代码checkServerTrusted()空实现,直接信任了所有证书。

package com.loopj.android.http;
import java.security.cert.X509Certificate;
import javax.net.ssl.X509TrustManager;
class MySSLSocketFactory$1 implements X509TrustManager {
MySSLSocketFactory$1(MySSLSocketFactory arg1) {
MySSLSocketFactory.this = arg1;
super();
}
public void checkClientTrusted(X509Certificate[] arg1, String arg2) {
}
public void checkServerTrusted(X509Certificate[] arg1, String arg2) {
}
public X509Certificate[] getAcceptedIssuers() {
return null;
}
}


修复方案:

严格按照说明里的四点校验证书,或者直接使用Google官方的证书校验机制。

版权声明:转载请注明来源 Guardian@乌云


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:20

确认时间:2014-11-05 18:13

厂商回复:

漏洞已确认真实存在,并已安排人处理。

最新状态:

2014-11-06:和白帽子沟通过,请更改下状态需要重新确认问题所在处

2014-11-06:白帽子重新给出漏洞利用证明,正在核查中。

2014-12-12:已经确认