CVE-2026-33308 Overview
CVE-2026-33308 is a certificate validation bypass vulnerability in mod_gnutls, a TLS module for Apache HTTPD based on GnuTLS. Prior to version 0.13.0, the code responsible for client certificate verification did not properly check the key purpose as set in the Extended Key Usage (EKU) extension. This oversight allows an attacker with access to a private key for a valid certificate—issued by a CA trusted for TLS client authentication but designated for a different purpose—to impersonate legitimate clients and gain unauthorized access to protected resources.
Critical Impact
Attackers can bypass TLS client certificate authentication using certificates with improper key purposes, potentially accessing sensitive resources that should be restricted to authorized clients only.
Affected Products
- mod_gnutls versions prior to 0.13.0
- Apache HTTPD servers configured with mod_gnutls for TLS client authentication
- Systems using GnuTLSClientVerify set to any value other than ignore
Discovery Timeline
- 2026-03-24 - CVE CVE-2026-33308 published to NVD
- 2026-03-24 - Last updated in NVD database
Technical Details for CVE-2026-33308
Vulnerability Analysis
This vulnerability stems from improper certificate validation (CWE-295) in the mod_gnutls TLS module. When validating client certificates, the module failed to verify that the Extended Key Usage (EKU) extension contains the appropriate key purpose identifier (id-kp-clientAuth or tls_www_client in GnuTLS terminology). This allows certificates issued for other purposes—such as code signing, email encryption, or server authentication—to be misused for TLS client authentication.
The attack requires the attacker to possess a valid certificate from a CA that the server trusts for client authentication. While the certificate itself is technically valid and properly signed, it was not intended for client authentication purposes. Server configurations using the default GnuTLSClientVerify ignore setting are not affected since they do not require client certificates.
Root Cause
The root cause of this vulnerability lies in the incomplete implementation of certificate chain validation within mod_gnutls. The certificate verification code examined standard certificate properties such as validity period, signature chain, and revocation status, but omitted the critical step of validating the Extended Key Usage extension. The EKU extension is specifically designed to restrict the purposes for which a certificate can be used, making this check essential for proper certificate validation in TLS client authentication scenarios.
Attack Vector
The attack requires network access to a server configured with TLS client authentication using mod_gnutls. An attacker must first obtain a certificate and its corresponding private key from a CA that the target server trusts. This certificate could be legitimately issued for a different purpose (such as S/MIME email signing or code signing) or obtained through compromise of another system using certificates from the same CA hierarchy.
The attacker then presents this improperly-purposed certificate during the TLS handshake. Because mod_gnutls did not validate the EKU extension, the server would accept the certificate as valid for client authentication, granting the attacker access to protected resources. The attack complexity is considered high because obtaining a suitable certificate with access to its private key is non-trivial in most environments.
Detection Methods for CVE-2026-33308
Indicators of Compromise
- Client certificates presented during TLS authentication with EKU extensions that do not include id-kp-clientAuth
- Authentication logs showing successful client certificate authentication from unexpected certificate serial numbers
- TLS handshake patterns showing certificates with unusual EKU purposes being accepted
Detection Strategies
- Implement certificate logging to capture the full certificate chain during TLS client authentication and review EKU extensions
- Deploy network monitoring to inspect TLS client authentication handshakes for certificates with non-standard key purposes
- Audit existing client certificates in use to identify any with improper or overly permissive EKU extensions
Monitoring Recommendations
- Enable verbose logging in Apache HTTPD to capture certificate details during authentication events
- Monitor for authentication anomalies such as successful logins from certificates not previously seen in the environment
- Review CA trust stores periodically to ensure only CAs dedicated to issuing client certificates are trusted
How to Mitigate CVE-2026-33308
Immediate Actions Required
- Upgrade mod_gnutls to version 0.13.0 or later immediately
- Audit server configurations to identify all instances using GnuTLSClientVerify with values other than ignore
- Review CA trust configurations to ensure only dedicated client certificate CAs are trusted for TLS client authentication
- Consider implementing dedicated (sub-)CAs for issuing TLS client certificates only, which eliminates practical impact of this vulnerability
Patch Information
The vulnerability has been fixed in mod_gnutls version 0.13.0. The fix involves a complete rewrite of certificate verification to use gnutls_certificate_verify_peers(), which properly validates the Extended Key Usage extension. By default, the updated version requires the id-kp-clientAuth key purpose (also known as tls_www_client in GnuTLS) when the EKU extension is present.
For environments requiring flexibility, the new GnuTLSClientKeyPurpose directive allows administrators to override the expected key purpose. Refer to the GitHub Security Advisory for complete details on the fix and configuration options.
Workarounds
- Implement dedicated (sub-)CAs exclusively for issuing TLS client certificates, ensuring certificates from these CAs cannot be used for other purposes
- Disable client certificate authentication by setting GnuTLSClientVerify ignore if not strictly required for your use case
- Implement application-layer authorization checks to validate client identity beyond certificate authentication alone
# Example: Upgrade mod_gnutls to patched version
# Check current version
apachectl -M | grep gnutls
# Update mod_gnutls package (distribution-specific)
# Debian/Ubuntu
apt-get update && apt-get install libapache2-mod-gnutls
# Verify updated version is 0.13.0 or later
# Restart Apache to apply changes
systemctl restart apache2
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.


