[微信团队请入] 微信的 MMTLS 协议存在中间人攻击风险?

2018-01-23 13:54:31 +08:00
 heiher

看到这篇文章: http://blog.csdn.net/wueryan/article/details/50533974

如果这个中间人攻击方法可行,初步看上去微信客户端是没有校验服务器端的证书的?现在还存在这个问题吗?

8576 次点击
所在节点   科技
24 条回复
whileFalse
2018-01-23 14:30:18 +08:00
被攻击的设备肯定是安了自签名根证书。楼主不必担心。
heiher
2018-01-23 17:14:22 +08:00
@whileFalse 你确定微信客户端一直会做 CA 校验吗?
whileFalse
2018-01-23 17:26:59 +08:00
@heiher 基本的 https 协议就会校验服务端证书是否被系统信任啊。
只是客户端还可以指定不使用设备的根证书信任,而是使用客户端内置的服务端证书指纹。
看起来微信没有使用内置指纹,而是简单的使用系统提供的证书。而系统被植入了自签名根证书,所以可以中间人攻击,就这么简单啊。
heiher
2018-01-23 17:29:17 +08:00
微信好像不是用的标准的 HTTPS 吧,听说好像是 HTTP + MMTLS (这货是 TLS 的变种?)。
heiher
2018-01-23 17:30:46 +08:00
我自己也抓包看了一下,奇怪的是在一个 TCP 流中,即有密文(或压缩吧)数据,也有明文数据。这就很不解了。。。
whileFalse
2018-01-23 17:34:48 +08:00
@heiher http 头部一点点数据是明文没错。
est
2018-01-23 17:39:01 +08:00
来来来,LZ 告诉大家一下客户端如何做服务器端整数校验?
heiher
2018-01-23 17:39:18 +08:00
@whileFalse 不像是头部,就上面链接中提到的 uin 参数都可以看到。
heiher
2018-01-23 17:40:58 +08:00
@est 方法 @whileFalse 已经解释了吧
est
2018-01-23 17:43:05 +08:00
@heiher 内置指纹,如果整数过期了呢?
heiher
2018-01-23 17:47:57 +08:00
@est 对域名签发的证书有期限,我可以理解为考虑到域名所有权也大概有个限期吧。像这种如果是私有证书,还有必要设置时间期限吗?
est
2018-01-23 17:49:26 +08:00
@heiher 没那么简单的。比如遇到私钥泄漏这种 sb 运营事故,需要大规模替换服务器端证书。这个时候你写死指纹,所有客户端都会挂掉。
heiher
2018-01-23 17:51:44 +08:00
@est 这种问题时间期限能够解决吗?
est
2018-01-23 17:52:41 +08:00
@heiher 客户端把时间调了,你如何知道。。。。
heiher
2018-01-23 17:56:44 +08:00
@est 要不你给我们科普一下吧,我也想知道上面说的私钥泄漏运营事故,如果客户端一直不更新系统 CA 集,怎么吊销泄漏证书的?
tSQghkfhTtQt9mtd
2018-01-23 17:58:05 +08:00
@heiher OSCP
tSQghkfhTtQt9mtd
2018-01-23 17:59:01 +08:00
@liwanglin12 typo 了,OCSP😂
est
2018-01-23 17:59:34 +08:00
@heiher 我没法科普。但是我知道只对比指纹是没法防止 MITM 的。。
heiher
2018-01-23 18:01:04 +08:00
@liwanglin12 明白了,实际上还是需要在线获取实时吊销数据的吧。
heiher
2018-01-23 18:02:09 +08:00
@est 嘿嘿,有点跑远了,不过确实没有仔细研究过这些细节。那么微信的 HTTP + MMTLS 方案难道只是部分加密敏感数据?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/425225

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX