ACME http-01 验证的缺陷: ISP 可以合法地签发伪造的 SSL 证书

2023-10-27 12:13:53 +08:00
 baobao1270

https://blog.gslin.org/archives/2023/10/21/11401/isp-%e5%81%bd%e9%80%a0%e5%87%ba%e5%90%88%e6%b3%95%e7%9a%84-ssl-certificate%ef%bc%8c%e5%b0%8d%e6%94%be%e5%9c%a8%e5%be%b7%e5%9c%8b%e7%9a%84-xmpp-ru-%e9%80%b2%e8%a1%8c-mitm-%e7%9b%a3%e8%81%bd/

很多人认为 ISP 并不能监听 HTTPS ,讲了很多 TLS 的原理,却没想到其实只需要简单的修改 IP 路由就能获取合法的 SSL 证书,而恰恰是 http-01 这一验证方式给了他们便利。

4067 次点击
所在节点    信息安全
42 条回复
expy
2023-10-27 14:53:08 +08:00
前几天好像发过,奇怪的是没人讨论,Hetzner 和 Linode 的机器还能用么。
https://v2ex.com/t/984017
Puteulanus
2023-10-27 15:07:39 +08:00
@tool2d ISP 对目标服务器反代就行了,就像公司行为管理的网关里面常用的,你访问 https 的网站看起来还是正常,看证书发现都是它的根证书自签的,网关以此获得一个完全监控你的传输明文,甚至篡改的能力

这个事对 ISP 负担也没那么大,因为你访问的流量本身就要从他那过的,做点什么属于顺便的事,以前 http 没那么普及的时候网页插广告和购物网站跳返利都属于这种
billlee
2023-10-27 15:54:10 +08:00
Hetzner 和 Linode 的网络有租户隔离吗?这个攻击是 ISP 的行为还是同网络下其它租户的 ARP 攻击?
xwh
2023-10-27 16:12:27 +08:00
看完了没太理解,我理解的是 isp 只能以你的身份去通过 ca 的验证来获得一张证书,但是我没有看到 isp 如何拿到你自己申请的证书的私钥啊
tool2d
2023-10-27 16:18:30 +08:00
@xwh 我也没看到 ISP 有偷到私钥,可能就是楼上同学说的,入口流量被完全替换了。

你想玩原神官服,玩到 15 级,发现竟然进的是 ISP 架设的私服。
cest
2023-10-27 16:20:33 +08:00
@gps949 #8
老板几个小目标的流水跟实际的维运猴子有任何交集吗
私卖的好处是自己的
凡是有点脑细胞,都能做成是能力不足,手脑不协调的安全事故
被火换个坑就行
Reficul
2023-10-27 16:26:37 +08:00
要这么说的话,机房的老哥也能插优盘在机器上复制走证书私钥。
ziseyinzi
2023-10-27 16:29:03 +08:00
证书系统就是靠信任链维持的,可事实证明这个链条总有不可信的环节
cest
2023-10-27 16:30:30 +08:00
@msg7086 #11
这个会出事不就是因为攻击方脑瘫到搞了个 ifdown 让用户注意到
攻击方可能没有 isp 全权限
不然完全可以做到完全无法感知
gps949
2023-10-27 16:31:51 +08:00
@cest 你这说法就有点逗了。。。CA 发 SSL 证书可不是任何一个人单独点一下按钮搞定的事。。。除非老板不想为了小目标把整个 CA 建设合规了,让 CA 运营机制是个全是漏洞的筛子。但如果 CA 机构运营能力不够强的话,还想入根??
leonshaw
2023-10-27 16:39:20 +08:00
要这么说 DNS 提供商不是无敌了,cloudflare 默认就自动申请一个证书。不信任就不要用。
cest
2023-10-27 16:39:25 +08:00
@gps949 #30
ca 上了 browser 后被抓到证书外流而被撤掉的不是一个两个
retanoj
2023-10-27 17:22:32 +08:00
@xwh
我理解是,[你的 Linode] -> [恶意 ISP] -> [LE]
恶意 ISP 伪造你的意图,自己生成公钥、私钥和 yourdomain.com 的 CSR ,并向 LE 申请 yourdomain.com 的证书。
LE 向你的 yourdomain.com 进行 http-01 验证,因为验证请求流量会先过恶意 ISP 再到你的 Linode ,恶意 ISP 成功伪造了验证响应,从而拿到 yourdomain.com 证书。
这样,以后互联网用户访问 yourdomain.com ,流量走到恶意 ISP ,恶意 ISP 可以作为 HTTPS 中间人卸载流量。
xwh
2023-10-27 18:00:27 +08:00
@retanoj #33 是的 也就是客户端一开始请求的证书就是 ca 机构签发给恶意 ISP 的,这样的话可以是合乎逻辑的,甚至给某家 ca 机构提供网络接入的 ISP 可以申请到所有使用这家 ca 机构对证书签名的网站,也不只 ISP 可以通过验证得到 ca 签发的证书了,所有的公有云厂商都可以
bao3
2023-10-27 18:42:23 +08:00
所以前几天的个人问“要不要在 https 的前提下,对传输密码进行加密”,结果一帮大聪明说完全不需要……那个帖子我连回复的兴趣都没有。
因为从的这个帖子已经是答案了。
xmumiffy
2023-10-27 18:52:38 +08:00
@bao3 ISP 直接把自己毁了就为了偷你一个密码?
yumusb
2023-10-27 18:57:01 +08:00
https://crt.sh/?q=xmpp.ru&dir=^&sort=2&group=none


看起来是最新的这几个
msg7086
2023-10-27 19:00:10 +08:00
@tool2d #12 只要拦截来自对应源 IP 的流量就行了。acme 验证流量来源是固定的。

@cest #29 不太确定到底发生了什么,从日志来看像是有人物理拔线插到一台电脑上申请完了再插回去的。
msg7086
2023-10-27 19:07:16 +08:00
@bao3 这种攻击规模已经上升到很高的层面了(大概率是某个或者多个国家的政府部门出场了)。可以走到机房里拔线,可以改路由对某个 IP 做流量绕行。到了这种规模级别你对传输密码加密已经没什么大用了,派点人上门把你服务器硬盘拔了带回去就好了。

如果你确实是在和一些国家的谍报机关作斗争,那 HTTPS 已经远远不够了。至少也要像 USGOV 那样的防护水平才行,自建机房,政审员工,访问全部走 VPN+零信任堡垒,FIDO 加短效 SSH 证书签发,内部 PKI ,外网通信审计。
baobao1270
2023-10-27 21:03:54 +08:00
@gps949 嘛,我觉得这个还是需要配合和自己的 ACME Client 的日志进行比对。感觉有必要弄个自动化的工具自动核查。

@xmumiffy 是的,但是我觉得 DNSSEC 可以一定程度上缓解这个问题。现在的 CA 做 DNS 验证应该都验证 DNSSEC 了吧。

@yaoyao1128 其实从 「 CA 服务器 -> Web 服务器」 这条链路上的任何人都能做到这一点……更不用说还有 BGP 劫持这种大杀器

@devopsdogdog @Puteulanus ISP 不需要去访问你的主机。他完全可以自己运行一个自己的 ACME Client ,然后把对应 IP 的流量导过去就行

@billlee 这个看上去像是 ISP 行为(当然只是我的推测),但是理论上 IDC 和同租户做 ARP 攻击也能进行同样的攻击行为

@leonshaw 是的,理论上不管是传统的 DNS 验证还是 ACME ,对于 DNS 提供商作恶都无能为力,我们只能选择信任 DNS 提供商

@bao3 其实你看金融领域主流还是做加密的。可以去看看这篇文章: https://blog.huli.tw/2023/01/10/security-of-encrypt-or-hash-password-in-client-side/

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

https://yangjunhui.monster/t/985964

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

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

© 2021 V2EX