2 分•作者: Eikon•8 个月前
证书透明度系统可以保护您免受恶意 HTTPS 证书的侵害。当 CT 日志拥有可预测的私钥时,整个 Web PKI 安全模型就会崩溃。
这将危及该日志签署的每一个证书——过去、现在和未来。
我报告了 Google Chrome 信任的证书透明度基础设施中的安全漏洞。他们将其驳回为“不是漏洞”,未经同意就公开了我的私人报告,然后在几个小时后默默地实施了我的修复方案。
发现:
在基准测试过程中,我使用了 echo " " > seed.bin (32 个空格)。Sunlight 接受了这一点,并为 CT 日志生成了有效但可预测的私钥。没有警告,没有错误。
为什么这很重要:
1. 操作员正确运行:cat /dev/urandom > seed.bin
2. 文件系统损坏,用空值/空格填充种子(发生在生产环境中)
3. Sunlight 从损坏的种子中默默地生成可预测的密钥
4. CT 日志“正常”运行——有效的签名,没有错误
5. 任何知道损坏的人都可以重新创建私钥
如果没有校验和,即使是完美的操作员也会被默默地攻破。这是保护 HTTPS 证书的 PKI 基础设施。
这并非假设——文件系统损坏在生产系统中很常见。断电、内核崩溃和存储故障经常会导致部分写入和空字节。
谷歌的回应:
- “不是漏洞”:https://groups.google.com/a/chromium.org/g/ct-policy/c/qboz9s8b9j8/m/B6JXa2q1BAAJ
- 未经同意就发布了我的私人安全报告
- 几个小时后实施了我的确切修复方案
- https://github.com/FiloSottile/sunlight/commit/f62f9084016c4c377d3855471720d7d0cdea3663
- https://github.com/FiloSottile/sunlight/commit/32cc3ea2524e89f93febb967683c6467753f484d
- 禁止我指出矛盾:https://groups.google.com/g/certificate-transparency/c/u8SsXgSFbz4/m/14ePyeCrBAAJ
额外漏洞:
他们使用 User-Agent 字符串进行身份验证。任何人都可以伪造这些标头来绕过速率限制并压垮服务:
- https://github.com/FiloSottile/sunlight/blob/main/cmd/skylight/skylight.go#L176
- https://github.com/FiloSottile/sunlight/blob/main/cmd/skylight/skylight.go#L148
这是生产代码,今天被 Google Chrome 信任 (https://www.gstatic.com/ct/log_list/v3/all_logs_list.json) 请参阅“sunlight”日志。
导致我被禁的电子邮件就在这里 https://groups.google.com/g/certificate-transparency/c/u8SsXgSFbz4/m/14ePyeCrBAAJ - 请您自己判断它是否违反了任何合理的行为准则。
还有其他人因为负责任的安全披露而遭到报复吗?我们如何修复一个报告漏洞会被禁止而问题却被悄悄修补的系统?