CVE-2026-69248: Name Constraints Bypass via Wildcard SANs in Python cryptography
Vulnerability ID: CVE-2026-69248
CVSS Score: 6.9
Published: 2026-08-03
An improper certificate validation vulnerability (CWE-295) in the Rust-based X.509 verification engine of python-cryptography allows wildcard Subject Alternative Names (SANs) to bypass permitted Name Constraints. This enables an attacker to construct certificates that escape the restricted scope of a subordinate Certificate Authority (CA) and successfully authenticate against vulnerable client installations. The vulnerability is tracked as CVE-2026-69248 and GHSA-m2h6-j472-rp4c, with a CVSS v4.0 base score of 6.9.
TL;DR
A flaw in python-cryptography's Rust-based X.509 verifier allows a wildcard SAN (e.g., *.example.com) to satisfy a restricted permitted Name Constraint (e.g., foo.example.com), enabling subordinate CA scope escape.
Technical Details
- CWE ID: CWE-295
- Attack Vector: Network
- CVSS v4.0: 6.9 (Medium)
- EPSS Score: Not yet indexed
- Impact: High (Complete Bypass of Certificate-Based Trust Boundaries)
- Exploit Status: poc
- KEV Status: Not Listed
Affected Systems
- python-cryptography (cryptography-x509-verification crate)
-
cryptography: < 49.0.0 (Fixed in:
49.0.0)
Code Analysis
Commit: 4d035a4
Fix name constraints validation when evaluating wildcard DNS SANs against permittedSubtrees constraints. Introduces SubtreeKind enum to separate permitted and excluded evaluation.
diff --git a/src/rust/cryptography-x509-verification/src/lib.rs b/src/rust/cryptography-x509-verification/src/lib.rs
index 8cf3f5b..4d035a4 100
--- a/src/rust/cryptography-x509-verification/src/lib.rs
+++ b/src/rust/cryptography-x509-verification/src/lib.rs
@@ -147,6 +147,7 @@ impl<'a, 'chain> NameChain<'a, 'chain> {
fn evaluate_single_constraint<B: CryptoOps>(
&self,
+ kind: SubtreeKind,
constraint: &GeneralName<'chain>,
san: &GeneralName<'chain>,
budget: &mut Budget,
Mitigation Strategies
- Upgrade python-cryptography to version 49.0.0 or higher.
- Audit active certificates in the PKI to identify wildcard SANs issued by restricted sub-CAs.
- Implement validation-layer checks in Python code to enforce minimum library versions.
Remediation Steps:
- Identify all virtual environments and containers running python-cryptography.
- Execute the upgrade command: pip install --upgrade "cryptography>=49.0.0".
- Re-deploy applications and verify that the active library version is at least 49.0.0.
- Validate certificate issuance policies to ensure sub-CAs cannot sign wildcard certificates that violate constraints.
Read the full report for CVE-2026-69248 on our website for more details including interactive diagrams and full exploit analysis.
Top comments (0)