CPython ssl module: Missing rejection of compromised intermediate CA certificates
Summary
Python versions before the fixed releases in the ssl module accept TLS certificate chains that contain intermediate CA certificates of eMudhra whose private keys were compromised. An attacker who can intercept or redirect the TLS connection of a Python program (for example pip, a script or a CI/CD job) and present such a chain could impersonate websites or services. Python has added a denylist that rejects these certificates regardless of the SSLContext configuration; the CVSS 9.4 score is the CNA's worst-case rating.
Affected
- CPython 0 to before 3.11.18
- CPython 3.12.0 to before 3.12.16
- CPython 3.13.0 to before 3.13.18
- CPython 3.14.0 to before 3.14.10
- CPython 3.15.0 to before 3.15.2
- CPython 3.16.0a1 to before 3.16.0
Source: CVE record by PSF. Some third-party sources state different ranges; verify on python.org.
Fixed in
- CPython 3.11.18
- CPython 3.12.16
- CPython 3.13.18
- CPython 3.14.10
- CPython 3.15.2
- CPython 3.16.0
Derived from the end of the affected ranges in the CVE record. Verify on python.org before rollout.
Workaround
- Update the CA bundle and the operating system certificate store.
- Update certifi to 2026.10.19 or later and pip to 26.2.2 or later; pip before 26.2.2 keeps trusting the compromised intermediates regardless of the system store.
- Update bundled trust stores of tools such as uv and rebuild container images without layer cache.
These are interim measures; a patched Python release is the proper fix.
Exploitation
- Not listed in the CISA KEV catalog according to a third-party aggregator; cross-check on cisa.gov.
- No public exploit code confirmed for this CVE according to aggregators.
- Whether attackers exploited the underlying key compromise in the wild is unknown.
An attacker must be able to intercept or redirect the network connection.
Our recommendation
- Inventory Python interpreters, pip versions, certifi versions and container images on developer workstations, CI/CD runners and servers.
- Update Python to the fixed versions listed above and verify the versions on python.org.
- Update pip to 26.2.2 or later and certifi to 2026.10.19 or later.
- Rebuild container images and check that build pipelines use the updated tools.
- Prioritise systems that run pip install or fetch packages over untrusted networks.
Public exploits
PoC-in-GitHub, Metasploit and Exploit-DB list nothing for this CVE.
Research sources
- oss-security: Go CA certificate removal thread (Openwall, 20 Oct 2026) www.openwall.com
- eMudhra Intermediate CA Compromise emudhra.we-have-a-problem.com
- Python security-announce post (24 Oct 2026) mail.python.org
- oss-security post (Openwall, 24 Oct 2026) www.openwall.com
- CPython pull request 160042 github.com
- CPython issue 160040 github.com
- CPython commit af52b41 (3.11 backport) github.com
- Brandefense: eMudhra CA key compromise and Python/uv containers brandefense.io
Researched and written up in English and German by an AI (Claude by Anthropic) based on NVD, CISA, EPSS and the sources listed. The vendor information is authoritative. Researched on 30 Oct 2026, 23:51.
Original description (NVD)
Python has added a denylist for known compromised certificates to the "ssl" module to ensure user safety even without certificate revocation configured. Known compromised certificates will automatically be rejected regardless of the SSLContext policy configuration.
NVD references (18)
- http://www.openwall.com/lists/oss-security/2026/10/20/29
- https://emudhra.we-have-a-problem.com/
- https://github.com/python/cpython/commit/21a50891ab4be2e9955239e625ae2b40c6b1854d
- https://github.com/python/cpython/commit/36cd295f32fc9ba19399e01abee91231440a41dd
- https://github.com/python/cpython/commit/48d9b2712cd52206c7a5882d0fdca4863ed65e93
- https://github.com/python/cpython/commit/7dd8b4736a1419750b94a388e6d158be15836fe6
- https://github.com/python/cpython/commit/98f0e4ed349f370dc8a00366da1a9797e11c9ed5
- https://github.com/python/cpython/commit/a17d9ef549008133eadf20689b1f4787902efe5b
- https://github.com/python/cpython/commit/af52b41afa4330fb38583db553631baa2f122f90
- https://github.com/python/cpython/commit/c7fd7edf7e0d122a3973cf676fae21b6aaa650a8
- https://github.com/python/cpython/commit/e2a9dd97ef9571c710ac0afaa834c8879aebce78
- https://github.com/python/cpython/commit/e4500d8a437ee5b988a5410cb9b59d177aa01370
- https://github.com/python/cpython/commit/e4f63e65a93cf44c14274aa987e644b8c003625e
- https://github.com/python/cpython/commit/e9bf2cf84eebf838a1edaa1c648c2b36345b99d3
- https://github.com/python/cpython/issues/160040
- https://github.com/python/cpython/pull/160042
- https://mail.python.org/archives/list/security-announce@python.org/thread/FNAJMZV6XQYLVPABNINDMF3VF66AYLW4/
- http://www.openwall.com/lists/oss-security/2026/10/24/5
Sources
The tracker combines official, freely usable data sources – updated continuously:
- NVD (NIST) – CVEs, rating (CVSS), affected products
- CISA KEV – vulnerabilities confirmed by CISA as actively exploited
- CISA Vulnrichment – CISA assessment (SSVC) in the official CVE record
- FIRST EPSS – probability of exploitation
- Microsoft MSRC – Patch Tuesday: vulnerabilities, severity, updates
- PoC-in-GitHub – public proof-of-concept repositories
- Metasploit (Rapid7) – modules of the Metasploit Framework
- Exploit-DB (OffSec) – archive of public exploits (links only)
- Patch days: official vendor pages (linked per vendor) (Vendor patch days)
This product uses data from the NVD API but is not endorsed or certified by the NVD. EPSS data © FIRST.org.
Affected? We can help.
We check whether your systems are affected, install updates and close the gap – continuously with the System Health Checker if you wish.
