很多人认为 ISP 并不能监听 HTTPS ,讲了很多 TLS 的原理,却没想到其实只需要简单的修改 IP 路由就能获取合法的 SSL 证书,而恰恰是 http-01 这一验证方式给了他们便利。
1
gps949 2023-10-27 12:44:51 +08:00
所以需要证书透明度
|
2
tyzandhr 2023-10-27 12:49:58 +08:00 via Android
这其实就是 shadow tls 的原理
|
3
bankroft 2023-10-27 12:50:04 +08:00 1
还是信任问题,dns challenge 方式 nameserver 服务商也是可以获取证书的,只不过 le 公开发行的证书,而且这么干是不道德的并且可能违法
|
4
baobao1270 OP |
5
gps949 2023-10-27 12:56:56 +08:00
这其实大概也就是为啥 EV 、OV 证书都收费甚至还很贵的原因了吧,一般 ACME 走互联网发 SSL 站点证书普遍还是 DV 类证书的操作,EV 、OV 的 CA 机构一般还是需要申请者单独提供认证材料和 CSR ,而不是走 ACME 挑战一下子就随随便便发了
|
6
gps949 2023-10-27 12:57:57 +08:00
@baobao1270 CT 核查的问题,也有提供服务的,比如 cloudflare 就可以订阅你拥有域名的 CT ,当发生证书签发时会给你推送邮件的
|
8
gps949 2023-10-27 13:06:59 +08:00
@cest 肯定有存在问题的,比如 CNNIC 和沃通,但一般还是靠谱的,否则主动为了挣眼前几万被 CAB 干然后失去每年千万级进账,真的是二傻子(没错,说的就前面那俩)。不过这恰恰也说明了,CA 管理严格比什么 ACME 挑战有漏洞可钻重要多了。
|
9
tool2d 2023-10-27 13:18:00 +08:00 2
感觉这文章有问题,申请后的证书,是需要放到 web 服务器上来用才行。对方网站不用 ISP 的证书,申请一百个也没办法监听啊。
而且最关键的密钥都不一样,只能自娱自乐。 |
11
msg7086 2023-10-27 13:38:04 +08:00 1
HTTP 验证伪造对 ISP 实在是太简单了。在第三方机子上申请证书,然后在交换机上把从 acme 验证服务器发来的 HTTP 包拦截下来返回 challenge 就行了,甚至连文章里说的这种物理拔线都不需要做。
|
12
tool2d 2023-10-27 13:44:26 +08:00
|
13
tyzandhr 2023-10-27 13:46:10 +08:00 via Android
@baobao1270 我理解的是 IP 与证书不一一对应,从而创造了可以伪造身份的机会
|
14
lambdaq 2023-10-27 13:47:23 +08:00
@tool2d 一般是这样操作的。你打开登录页面,走原始网站 tls 。页面加载完,流量跌 0 ,就立马断开 tcp 。
下一步多半是提交用户名密码了,突然替换成李鬼的 tls 。这个时候也是合法的 tls 。。 |
15
dudewei 2023-10-27 13:53:20 +08:00
E2E 的信仰又崩塌了。。。
|
16
xmumiffy 2023-10-27 14:17:03 +08:00 via Android
这不算合法
另外就算传统证书用 DNS 验证的,DNS 也有概率能被抢答 |
17
yaoyao1128 2023-10-27 14:41:10 +08:00 via iPhone
> 需要简单的修改 IP 路由
说实话,这个并不简单()这个的前提是 托管服务提供者 做了这个而不是 平时使用的 isp 做了这个 也就是说,一般服务商不能“对特定用户”直接中间人 而托管本质就是一个基于信任体系的问题……服务器本体还有 ip 都在那里,如果想要直接让它不能用也是可以的啊() 这个和 dns 验证时候 dns 托管服务商能修改记录签发出来一个道理…… |
19
devopsdogdog 2023-10-27 14:48:51 +08:00
有点扯淡,都 isp 层面了 ,搞你还不是分分钟的事情。
完整逻辑是,isp 拦截下来这个请求, 再去你的主机访问 .well-known/acme-challenge/xxxx ,获得 验证值, 自己再伪造个路由 过去。 文章没怎么看明白,貌似还是猜测。 有懂的老哥科普一下 |
21
expy 2023-10-27 14:53:08 +08:00
前几天好像发过,奇怪的是没人讨论,Hetzner 和 Linode 的机器还能用么。
https://v2ex.com/t/984017 |
22
Puteulanus 2023-10-27 15:07:39 +08:00 1
@tool2d ISP 对目标服务器反代就行了,就像公司行为管理的网关里面常用的,你访问 https 的网站看起来还是正常,看证书发现都是它的根证书自签的,网关以此获得一个完全监控你的传输明文,甚至篡改的能力
这个事对 ISP 负担也没那么大,因为你访问的流量本身就要从他那过的,做点什么属于顺便的事,以前 http 没那么普及的时候网页插广告和购物网站跳返利都属于这种 |
23
billlee 2023-10-27 15:54:10 +08:00
Hetzner 和 Linode 的网络有租户隔离吗?这个攻击是 ISP 的行为还是同网络下其它租户的 ARP 攻击?
|
24
xwh 2023-10-27 16:12:27 +08:00
看完了没太理解,我理解的是 isp 只能以你的身份去通过 ca 的验证来获得一张证书,但是我没有看到 isp 如何拿到你自己申请的证书的私钥啊
|
25
tool2d 2023-10-27 16:18:30 +08:00
|
26
cest 2023-10-27 16:20:33 +08:00
|
27
Reficul 2023-10-27 16:26:37 +08:00
要这么说的话,机房的老哥也能插优盘在机器上复制走证书私钥。
|
28
ziseyinzi 2023-10-27 16:29:03 +08:00
证书系统就是靠信任链维持的,可事实证明这个链条总有不可信的环节
|
29
cest 2023-10-27 16:30:30 +08:00
|
30
gps949 2023-10-27 16:31:51 +08:00
@cest 你这说法就有点逗了。。。CA 发 SSL 证书可不是任何一个人单独点一下按钮搞定的事。。。除非老板不想为了小目标把整个 CA 建设合规了,让 CA 运营机制是个全是漏洞的筛子。但如果 CA 机构运营能力不够强的话,还想入根??
|
31
leonshaw 2023-10-27 16:39:20 +08:00
要这么说 DNS 提供商不是无敌了,cloudflare 默认就自动申请一个证书。不信任就不要用。
|
33
retanoj 2023-10-27 17:22:32 +08:00 1
@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 中间人卸载流量。 |
34
xwh 2023-10-27 18:00:27 +08:00
@retanoj #33 是的 也就是客户端一开始请求的证书就是 ca 机构签发给恶意 ISP 的,这样的话可以是合乎逻辑的,甚至给某家 ca 机构提供网络接入的 ISP 可以申请到所有使用这家 ca 机构对证书签名的网站,也不只 ISP 可以通过验证得到 ca 签发的证书了,所有的公有云厂商都可以
|
35
bao3 2023-10-27 18:42:23 +08:00
所以前几天的个人问“要不要在 https 的前提下,对传输密码进行加密”,结果一帮大聪明说完全不需要……那个帖子我连回复的兴趣都没有。
因为从的这个帖子已经是答案了。
|
37
yumusb 2023-10-27 18:57:01 +08:00
|
38
msg7086 2023-10-27 19:00:10 +08:00
|
39
msg7086 2023-10-27 19:07:16 +08:00
@bao3 这种攻击规模已经上升到很高的层面了(大概率是某个或者多个国家的政府部门出场了)。可以走到机房里拔线,可以改路由对某个 IP 做流量绕行。到了这种规模级别你对传输密码加密已经没什么大用了,派点人上门把你服务器硬盘拔了带回去就好了。
如果你确实是在和一些国家的谍报机关作斗争,那 HTTPS 已经远远不够了。至少也要像 USGOV 那样的防护水平才行,自建机房,政审员工,访问全部走 VPN+零信任堡垒,FIDO 加短效 SSH 证书签发,内部 PKI ,外网通信审计。 |
40
baobao1270 OP @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/ |
42
mikewang 2023-10-28 04:10:56 +08:00
证书透明度,一定程度上让 ISP 不敢作为中间人去窃取证书。因为一旦 ISP 冒名顶替用户申请证书,那么这个记录就能被用户在 https://crt.sh/ 等网站查到,用户发现异常就可以申请吊销证书并且告它了。
|