CVE-2026-33308CVE-2026-33308 是 Mod_gnutls(Apache HTTPD 的 TLS 模块)在 0.13.0 版本之前存在的安全漏洞。该漏洞源于客户端证书验证代码未检查“扩展密钥用法”(EKU)扩展中设置的密钥用途。如果服务器配置了客户端证书验证,攻击者可能利用由受信任 CA 颁发但用于其他目的的有效证书绕过身份验证,非法访问受保护的资源。默认配置下不受影响,只有启用了 TLS 客户端证书验证的服务器才面临风险。
该漏洞位于 Mod_gnutls 的客户端证书验证逻辑中。在受影响版本(< 0.13.0)中,尽管服务器可能配置为要求 TLS 客户端认证,但代码在验证证书链有效性时,忽略了证书的“扩展密钥用法”(Extended Key Usage, EKU)扩展字段。通常,EKU 用于限制证书的特定用途(如仅用于服务器认证或仅用于客户端认证)。攻击者若拥有私钥,且该证书由服务器信任的 CA 签发,但该证书的 EKU 被指定为非 `id-kp-clientAuth`(例如用于代码签名或电子邮件加密),漏洞代码仍会将其视为有效的客户端证书接受。这导致了安全策略的绕过。修复逻辑在 0.13.0 版本中引入了 `gnutls_certificate_verify_peers()` 函数,并默认强制要求 EKU 必须包含 `id-kp-clientAuth`,从而确保只有专门用于客户端认证的证书才能通过验证。