python-cryptography证书验证器通配符绕过:受限CA范围逃逸漏洞分析

python-cryptography被曝出CVE-2026-69248漏洞,其证书验证器错误接受通配符DNS名称,导致受限CA可签发超范围证书。攻击者可借此绕过证书链验证,伪造任意子域身份。本文深度分析漏洞原因、攻击链及缓解措施,提醒使用该库的开发者及时升级并审查证书签发策略。

🔓 Medium 漏洞利用

python-cryptography库的证书验证器在处理DNS名称约束时存在逻辑缺陷,当中间CA仅允许foo.example.com时,却接受了叶子证书中*.example.com的通配符SAN,导致攻击者可利用此缺陷构造绕过约束的证书链。该漏洞允许攻击者通过恶意签发的通配符证书冒充任意example.com子域,实现证书链验证逃逸。

来源:OSV | 2026-08-03 | 原文链接

🔍 关键发现

  • python-cryptography的DNSConstraint::matches函数在比较通配符SAN与permitted DNS名称时未正确限制通配符的匹配范围,导致*.example.com可匹配foo.example.com之外的任意子域。
  • 即使中间CA的NameConstraints明确permitted_subtrees为foo.example.com,验证器仍会接受叶子证书中更宽泛的通配符SAN,违反RFC 5280第4.2.1.10节规定。
  • 该问题影响所有使用python-cryptography进行证书链验证的应用,可能导致攻击者利用受限CA签发超出权限范围的证书,实现中间人攻击或伪装成受信任实体。

⚔️ 攻击链分析

1. 攻击者获得或控制一个受约束的中间CA(其permitted_subtrees仅允许foo.example.com)。 2. 攻击者利用该中间CA签发一个包含*.example.com通配符SAN的叶子证书。 3. 在目标服务器上部署该叶子证书,并针对任意example.com子域发起TLS连接。 4. 使用python-cryptography验证证书链的客户端会错误地信任该证书,导致验证绕过。

🛡️ 缓解建议

  • ✅ 升级python-cryptography库到修复该漏洞的版本(≥0.42.x,如适用),并关注官方安全公告。
  • ✅ 在证书验证逻辑中增加额外的约束检查,手动确认叶子证书SAN不超出中间CA的permitted_subtrees范围。
  • ✅ 审查已签发的证书,排查是否存在通配符SAN超出CA约束的异常证书,并及时吊销。
  • ✅ 建议CA机构严格执行RFC 5280名称约束,避免签发过宽的通配符证书。

涉及漏洞:["CVE-2026-69248"]


⚠️ 本文仅供安全研究与学习,IOC 信息请勿用于非法目的。

🤖 常见问题解答(FAQ)

❓ 该漏洞是否影响所有操作系统上的python-cryptography?

是的,该漏洞存在于python-cryptography库的跨平台二进制包中,不区分操作系统。任何使用受影响版本的Python应用在验证证书链时均可能触发绕过。

❓ 通配符绕过具体发生在哪个函数?

问题出在x509.verification模块的DNSConstraint::matches实现中。该函数在匹配通配符SAN(如*.example.com)时未正确应用permitted_subtrees的限制域(foo.example.com),导致匹配范围扩大到整个父域。

❓ 是否可通过配置规避此漏洞?

无法通过用户配置完全规避,因为这是库的验证逻辑缺陷。只能升级到修复版本,或者应用方在调用验证器后自行执行额外的名称约束检查。

[!] CONTACT_CHANNELS

如需商务合作、技术咨询或漏洞反馈,请通过以下离岸节点联系作者。

> PING_AUTHOR (@A1RedTeam)