mitmproxy 添加了 --emudhra 选项
mitmproxy 新增了一个 `--emudhra` 选项,利用最近公开的、弱到几乎可忽略不计的 eMudhra 中间 CA 密钥——其中一个密钥甚至就是数字 4——来生成许多较旧或未修补设备仍会信任的 HTTPS 证书。评论者讨论了这如何让人透明拦截旧 Android 手机、智能电视和 IoT 设备的流量,同时也强调了 iOS 和 macOS 等平台在证书撤销与信任存储更新方面的普遍失灵。此事件引发了关于 CA 治理、潜在后门、此类工具的负责任使用,以及在这类失误如此严重的情况下,公开羞辱证书颁发机构是否正当的讨论。
mitmproxy 中的新 --emudhra 功能
- 该选项使用如今已公开的 eMudhra 中间密钥之一,对拦截到的 TLS 证书进行签名。
- 其目的是提供一种实用方式,用来测试哪些设备和应用程序仍然信任这些已失陷的证书链。
- 有人建议整合多条已失陷的链(emSign 和 AAA 路径)以扩大覆盖范围;文中附有一个合并请求链接。
用例:调试、逆向工程、越狱
- 对以下场景的使用反响热烈:
- 较旧的 Android 手机(如果应用没有证书固定或使用自己的信任存储)。
- 智能电视和 IoT 设备,用于观察厂商流量、配置或固件更新。
- 描述了 mitm 流程:拦截配置/固件/广告通道,这些通道可能启用开发模式或导致 RCE。
- 局限性:证书固定、证明机制、私有根证书,以及已经更新或撤销信任的设备。
eMudhra 失陷的细节
- 有八个中间 CA 使用了荒谬地弱的 P-384 私钥;给出的示例(4、56、66 等)实际上只有 3–8 位熵。
- 一些解释认为,这看起来像是原本应为 384 位的地方误用了 8 位密钥。
- 涉及的根证书包括:emSign ECC Root CA – G3 和一个较旧的 AAA 根证书;文中讨论了它们分别何时进入/退出主要信任存储的时间线。
- 还指出椭圆曲线密钥搜索大约需要 2^(n/2) 的工作量,这使得“中度弱”的 EC 密钥可以在 GPU 上被暴力破解。
平台撤销行为(尤其是 Apple)
- 多位用户报告称,在 iOS、iPadOS 和 macOS 上访问测试站点时结果不一致:
- 有人看到所有链都被阻止。
- 也有人仍然看到 1–3 条伪造链被接受。
- 猜测原因包括分阶段推送、OCSP/CRL 查询失败,或超时;行为仍不明确。
- 在 macOS 钥匙串中手动取消对根证书的信任,能够可靠地阻止这些坏链。
伦理、命名与更广泛的安全主题
- 对将该选项命名为
--emudhra的看法不一:- 有人认为这是对严重 CA 失误的公平问责。
- 也有人认为这是在“加重”那些“永远摆脱不了这件事”的个人的负担。
- 多条评论将此描述为“把一场安全灾难转化为防御工具”,使用户能够检查并控制厂商试图锁定的设备。
- 文中提到有人建议系统性扫描所有 CA 是否存在类似弱密钥;另有回复指出,这个具体问题是使用现有工具发现的,而在那次扫描中没有观察到其他弱密钥。