python-cryptography高危DoS漏洞:重复自签名证书触发指数级验证
CVE-2026-69249 为 python-cryptography 高危拒绝服务漏洞:重复自签名中间证书引发证书链验证指数级递归,5 秒超时轻松触发。本文分析根因、PoC、补丁及缓解措施,帮助开发者和安全团队防护该供应链攻击面。
🔓 High 漏洞利用
攻击者可构造包含多个重复自签名中间证书的恶意证书链,使 python-cryptography 在链验证时对同一候选者反复递归,造成指数级 CPU 开销,测试中可轻松超过 5 秒。该漏洞编号为 CVE-2026-69249,官方通过在递归中记录并跳过已处理的有效签发者完成修复。
来源:OSV | 2026-08-03 | 原文链接
🔍 关键发现
- 证书链验证函数 build_chain_inner 未对已分析过的候选签发者去重,重复自签名证书会导致同一路径被指数级重复展开。
- 虽然 max_chain_depth 限制了递归深度、保证终止,但攻击者可在终止前注入大量重复证书,造成明显 CPU 放大,形成拒绝服务攻击。
- Trail of Bits 与 OpenAI 合作发现,Codex 编码代理识别并由人工复核确认;PoC 显示 5 个重复证书即可让验证超时超过 5 秒。
- 官方补丁通过维护 seen_valid_issuers 列表跳过已处理的有效签发者,修复后处理时间从数秒降至毫秒级,且不影响验证正确性。
⚔️ 攻击链分析
['攻击者生成一个自签名 CA 证书,并使用该 CA 签发一个合法叶子证书。', '构造验证材料:叶子证书 + 多次重复的同一自签名 CA 证书作为中间证书列表,同时放入一个无关的信任锚证书。', '诱导目标程序使用 PolicyBuilder/Store 的验证接口处理该恶意证书链。', 'build_chain_inner 对重复候选者反复递归,CPU 时间指数增长,最终拒绝该链但已造成资源耗尽。']
🚩 失陷指标 (IOC)
同一自签名 CA 证书在中间证书列表中重复出现多次证书链中出现大量相同 subject/issuer 且自签名的 X.509 证书证书验证过程中 CPU 异常升高且单个验证操作耗时数秒以上
🛡️ 缓解建议
- ✅ 升级 python-cryptography 到已修复 GHSA-jwv3-5hgf-82ww 的版本,并及时跟踪官方安全公告。
- ✅ 在入口层限制可提交的证书链长度或中间证书数量,避免攻击者无限制放大递归次数。
- ✅ 对证书验证操作增加超时和资源配额,异常耗时链直接拒绝并告警。
涉及漏洞:["CVE-2026-69249"]
⚠️ 本文仅供安全研究与学习,IOC 信息请勿用于非法目的。
🤖 常见问题解答(FAQ)
❓ 该漏洞影响哪些使用场景?
影响使用 python-cryptography 进行 X.509 证书链验证的功能,尤其是通过 PolicyBuilder、Store 构建验证器并处理不可信输入证书链的场景。
❓ 攻击者如何触发这个漏洞?
攻击者提交包含多个重复自签名中间证书的恶意证书链,使 build_chain_inner 对相同候选者反复递归,导致验证耗时指数级增长。
❓ 是否已在真实攻击中被利用?
目前公告未提及野外利用,属于通过 PoC 验证的拒绝服务漏洞。建议仍尽快升级,防止被恶意利用。