CVE-2026-32884Botan是一个C++加密库。在3.11.0版本之前,在处理带有名称约束的X.509证书路径时,若最终实体证书未定义主题备用名称(SAN),Botan会检查CN是否被允许。由于该检查区分大小写,未考虑混合大小写的情况,导致攻击者可利用特定大小写的CN(如Sub.EVIL.COM)绕过针对evil.com的excludedSubtrees约束,从而破坏证书验证的安全性。
该漏洞源于Botan在处理X.509证书验证时的逻辑缺陷。根据RFC 5280,如果证书包含主题备用名称(SAN),则应忽略通用名称(CN)。但在Botan 3.11.0之前的版本中,Botan在特定条件下仍会检查CN是否符合名称约束。关键问题在于,DNS名称约束的匹配逻辑是区分大小写的。当配置了排除约束(excludedSubtrees)例如evil.com时,系统期望阻止匹配该域名的证书。然而,攻击者可以生成一个证书,其CN设置为“Sub.EVIL.COM”(大写形式)。由于Botan的字符串比较是区分大小写的,它认为“Sub.EVIL.COM”不等于“evil.com”,从而允许该证书通过验证。这违反了名称约束的预期安全策略,允许攻击者伪造看似受信任但实际被排除的域名证书。