CVE-2026-69248
📛 CVE Title
python-cryptography verifier accepts wildcard DNS names allowing escape from permittedSubtrees
Description
cryptography is a package designed to expose cryptographic primitives and recipes to Python developers. Prior to 49.0.0, if an intermediate constrained CA permits the DNS name foo.example.com, and the leaf certificate has a wildcard in its DNS SAN of *.example.com, python-cryptography's verifier accepts which allows escaping outside of the permitted names. The core issue is in DNSConstraint::matches, where a wildcard pattern was treated as matching a more-specific permitted constraint even though *.example.com can expand to sibling names such as bar.example.com outside foo.example.com. This allows acceptance of an invalid certificate chain. This issue is fixed in 49.0.0.
Overview
- State
- PUBLISHED
- Assigner (CNA)
- GitHub_M
- CVSS severity
- MEDIUM
- CVSS score
- 6.9 / 10
- CVSS vector
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:L/VI:H/VA:N/SC:N/SI:N/SA:N/E:P- Effective score
- 6.9 / 10 MEDIUM source: CNA overview
- CWE(s)
-
CWE-295 - Reserved
- 2026-08-03
- Published
- 2026-08-03 21:21 UTC
- Last updated
- 2026-08-03 21:21 UTC
- Source
- https://raw.githubusercontent.com/CVEProject/cvelistV5/main/cves/2026/69xxx/CVE-2026-69248.json
NVD triage scoring NVD CVE 2.0
Layer NVD adds on top of the CNA's CVE record — published / last-modified timestamps, exploitability / impact subscores, and the FIRST.org EPSS probability that this CVE will be exploited in the wild in the next 30 days.
- NVD published
- 2026-08-03 22:16:52 UTC
- NVD last modified
- 2026-08-04 16:16:28 UTC
- EPSS score
- 0.0019 (probability of exploitation in next 30 days)
- EPSS percentile
- 8.31% vs all CVEs — higher = more likely to be exploited, as of 2026-08-04
NVD / KEV / EPSS data refreshed 2026-08-04 20:26 UTC. Re-run the 🛰 Backfill from NVD button above to refresh.
European Union Vulnerability Database ENISA EUVD
ENISA's official EU repository for curated vulnerability intelligence. Carries a separate identifier (EUVD-YYYY-NNNN) and frequently exposes an earlier-published description + CVSS than NVD does.
- EUVD ID
-
EUVD-2026-52448 - Assigner
- GitHub_M
- Published
- Aug 3, 2026, 9:21:43 PM
- Updated
- Aug 4, 2026, 3:04:51 PM
- EUVD base score (CVSS 4.0)
-
6.9 / 10
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:L/VI:H/VA:N/SC:N/SI:N/SA:N/E:P - EUVD-reported EPSS
- 0.0000
- Vendors
- pyca
- Products
-
cryptography (< 49.0.0)
- Aliases
-
GHSA-m2h6-j472-rp4c
ENISA description: cryptography is a package designed to expose cryptographic primitives and recipes to Python developers. Prior to 49.0.0, if an intermediate constrained CA permits the DNS name foo.example.com, and the leaf certificate has a wildcard in its DNS SAN of *.example.com, python-cryptography's verifier accepts which allows escaping outside of the permitted names. The core issue is in DNSConstraint::matches, where a wildcard pattern was treated as matching a more-specific permitted constraint even though *.example.com can expand to sibling names such as bar.example.com outside foo.example.com. This allows acceptance of an invalid certificate chain. This issue is fixed in 49.0.0.
Affected products (1)
| Vendor | Product | Versions | Platforms |
|---|---|---|---|
| pyca | cryptography |
< 49.0.0 (affected)
|
— |
Vendor references (3)
References embedded in the original CVE record by the assigning CNA.
- https://github.com/pyca/cryptography/security/advisories/GHSA-m2h6-j472-rp4c x_refsource_CONFIRM
- https://github.com/pyca/cryptography/pull/14888 x_refsource_MISC
- https://github.com/pyca/cryptography/commit/4d035a4225965edeffd312079a510ef25fcfdcb2 x_refsource_MISC
Web references (0)
DuckDuckGo results ranked by threat-intel / vendor advisory domains. Generated by the 🔎 Find references (web) button above — same flow as the Remediations search.
No web references attached yet.
NVD-tagged references (4)
Reference list NVD curates from the CNA record, vendor advisories, and third-party reports. The tag chips below are NVD's analyst-assigned categories.
- https://github.com/pyca/cryptography/commit/4d035a4225965edeffd312079a510ef25fcfdcb2 security-advisories@github.com
- https://github.com/pyca/cryptography/pull/14888 security-advisories@github.com
- https://github.com/pyca/cryptography/security/advisories/GHSA-m2h6-j472-rp4c security-advisories@github.com
- https://github.com/pyca/cryptography/security/advisories/GHSA-m2h6-j472-rp4c 134c704f-9b21-4f2e-91b3-4a467353bcc0
AI Forensic Analysis
Only Available for Registered Users. Sign in to view.
Raw JSON
The full cvelistV5 record. Download as CVE-2026-69248.json.
{
"containers": {
"cna": {
"affected": [
{
"product": "cryptography",
"vendor": "pyca",
"versions": [
{
"status": "affected",
"version": "< 49.0.0"
}
]
}
],
"descriptions": [
{
"lang": "en",
"value": "cryptography is a package designed to expose cryptographic primitives and recipes to Python developers. Prior to 49.0.0, if an intermediate constrained CA permits the DNS name foo.example.com, and the leaf certificate has a wildcard in its DNS SAN of *.example.com, python-cryptography's verifier accepts which allows escaping outside of the permitted names. The core issue is in DNSConstraint::matches, where a wildcard pattern was treated as matching a more-specific permitted constraint even though *.example.com can expand to sibling names such as bar.example.com outside foo.example.com. This allows acceptance of an invalid certificate chain. This issue is fixed in 49.0.0."
}
],
"metrics": [
{
"cvssV4_0": {
"attackComplexity": "LOW",
"attackRequirements": "PRESENT",
"attackVector": "NETWORK",
"baseScore": 6.9,
"baseSeverity": "MEDIUM",
"privilegesRequired": "NONE",
"subAvailabilityImpact": "NONE",
"subConfidentialityImpact": "NONE",
"subIntegrityImpact": "NONE",
"userInteraction": "NONE",
"vectorString": "CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:L/VI:H/VA:N/SC:N/SI:N/SA:N/E:P",
"version": "4.0",
"vulnAvailabilityImpact": "NONE",
"vulnConfidentialityImpact": "LOW",
"vulnIntegrityImpact": "HIGH"
}
}
],
"problemTypes": [
{
"descriptions": [
{
"cweId": "CWE-295",
"description": "CWE-295: Improper Certificate Validation",
"lang": "en",
"type": "CWE"
}
]
}
],
"providerMetadata": {
"dateUpdated": "2026-08-03T21:21:43.710Z",
"orgId": "a0819718-46f1-4df5-94e2-005712e83aaa",
"shortName": "GitHub_M"
},
"references": [
{
"name": "https://github.com/pyca/cryptography/security/advisories/GHSA-m2h6-j472-rp4c",
"tags": [
"x_refsource_CONFIRM"
],
"url": "https://github.com/pyca/cryptography/security/advisories/GHSA-m2h6-j472-rp4c"
},
{
"name": "https://github.com/pyca/cryptography/pull/14888",
"tags": [
"x_refsource_MISC"
],
"url": "https://github.com/pyca/cryptography/pull/14888"
},
{
"name": "https://github.com/pyca/cryptography/commit/4d035a4225965edeffd312079a510ef25fcfdcb2",
"tags": [
"x_refsource_MISC"
],
"url": "https://github.com/pyca/cryptography/commit/4d035a4225965edeffd312079a510ef25fcfdcb2"
}
],
"source": {
"advisory": "GHSA-m2h6-j472-rp4c",
"discovery": "UNKNOWN"
},
"title": "python-cryptography verifier accepts wildcard DNS names allowing escape from permittedSubtrees"
}
},
"cveMetadata": {
"assignerOrgId": "a0819718-46f1-4df5-94e2-005712e83aaa",
"assignerShortName": "GitHub_M",
"cveId": "CVE-2026-69248",
"datePublished": "2026-08-03T21:21:43.710Z",
"dateReserved": "2026-08-03T19:54:19.852Z",
"dateUpdated": "2026-08-03T21:21:43.710Z",
"state": "PUBLISHED"
},
"dataType": "CVE_RECORD",
"dataVersion": "5.2"
}