{"id":"CVE-2026-115557","kind":"vulnerability","aliases":["CVE-2026-115557"],"related":[],"title":"Python ssl module: denylist rejects known compromised certificates automatically","description":"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.","summary":"Python's ssl module now rejects any certificate chain containing one of the compromised eMudhra/emSign intermediate CA keys (matched by DER SPKI), as defense in depth. The 9.4 score reflects the CA compromise (keys with trivially small private values) enabling man-in-the-middle attacks on TLS clients, not a bug an attacker triggers in Python. The denylist is skipped with verify_mode=CERT_NONE. Backports to 3.11-3.15 are merged-pending; no released patch versions confirmed yet.","severity":"critical","cvss":9.4,"epss":null,"exploited":false,"exploited_at":null,"products":[{"name":"cpython","fixed":["3.16.0"],"affected":"< 3.16.0 (per CVE record; backports to 3.11-3.15 pending)","ecosystem":"runtime"}],"ecosystems":[],"tags":["certifi","emudhra","pip","python","runtime","ssl","tls"],"not_affected_if":["cert-none","no-outbound-tls","static-export"],"how_to_check":"Check Python build: python -c 'import sys;print(sys.version)' and compare against releases carrying gh-160040 (not yet released as of 2026-10-25; check python.org release notes for 3.11-3.15 security releases). Separately check pip >= 26.2.2 (python -m pip --version), certifi >= 2026.10.19, uv >= 0.13.4, sigstore >= 4.5.1, conda >= 26.9.4, pixi >= 0.82.1, and rebuild container images with fresh ca-certificates, since pip and bundled certifi still trust eMudhra roots otherwise.","fix":"Upgrade to a CPython security release containing gh-160040 once published (fixed versions unknown; merged on main/3.16, backports to 3.11-3.15 in review). Meanwhile upgrade pip to >= 26.2.2, certifi to >= 2026.10.19, uv >= 0.13.4, sigstore 4.5.1, conda 26.9.4, pixi 0.82.1, and update OS ca-certificates.","status":"open","published_at":"2026-10-24T15:17:33+00:00","first_seen_at":"2026-10-24T16:18:39+00:00","triaged_at":"2026-10-25T02:59:44+00:00","updated_at":"2026-10-25T03:15:19+00:00","category":"runtime","confidence":0.8,"triage":{"at":"2026-10-25T02:59:44Z","model":"claude-haiku-5-5","output":{"fix":"unknown","reach":"unknown","title":"Python ssl module: denylist rejects known compromised certificates automatically","impact":"low","summary":"Python's ssl module now keeps a denylist of known compromised certificates and rejects them regardless of SSLContext policy, even when certificate revocation checking is not configured. The NVD entry rates it critical (CVSS 9.4), but the description reads as a hardening change rather than a flaw an attacker can trigger.","category":"runtime","nicknames":[],"who_cares":["python","ssl"],"confidence":0.3,"needs_auth":"unknown","worst_case":"unknown","analyst_note":"Sources conflict: NVD gives CVSS 9.4 critical, but the description describes a denylist that adds protection. Check the NVD entry and the Python release notes for which versions are affected and what an attacker could do.","how_to_check":"unknown","needs_analyst":true,"not_affected_if":[],"who_is_affected":"unknown","user_interaction":"unknown","needs_special_setup":"unknown","severity_if_unknown":"unknown"},"cost_usd":0.000737,"input_tokens":3287,"output_tokens":817,"severity_before":"critical"},"analyst_status":"done","analyst_note":"Sources conflict: NVD gives CVSS 9.4 critical, but the description describes a denylist that adds protection. Check the NVD entry and the Python release notes for which versions are affected and what an attacker could do.","search":"'-115557':12A,15A '-2026':11A,14A '-3.15':93B '3.11':92B '9.4':51B 'add':106C 'attack':69B,77B 'automat':9A,130C 'backport':90B 'bug':75B 'ca':40B,55B 'cert':88B 'certif':8A,31B,112C,123C,128C 'certifi':17B 'chain':32B 'client':72B 'compromis':7A,37B,56B,111C,127C 'configur':125C,138C 'confirm':102B 'contain':33B 'cpython':16A 'cve':10A,13A 'defens':47B 'denylist':4A,82B,108C 'depth':49B 'der':44B 'emudhra':18B 'emudhra/emsign':38B 'enabl':63B 'ensur':118C 'even':121C 'intermedi':39B 'key':41B,57B 'known':6A,110C,126C 'man':65B 'man-in-the-middl':64B 'match':42B 'merg':96B 'merged-pend':95B 'middl':68B 'mode':87B 'modul':3A,27B,116C 'none':89B 'one':34B 'patch':100B 'pend':97B 'pip':19B 'polici':137C 'privat':61B 'python':1A,20B,24B,80B,104C 'reflect':53B 'regardless':133C 'reject':5A,29B,132C 'releas':99B 'revoc':124C 'runtim':21B 'safeti':120C 'score':52B 'skip':84B 'small':60B 'spki':45B 'ssl':2A,22B,26B,115C 'sslcontext':136C 'tls':23B,71B 'trigger':78B 'trivial':59B 'user':119C 'valu':62B 'verifi':86B 'version':101B 'without':122C 'yet':103B","nicknames":[],"mitigations":[],"who_affected":null,"tier":"B","verified":{},"analyst_revisit_at":null,"first_public_at":"2026-10-24T15:17:33+00:00","kev":null,"cvss_vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X","cvss_by":"cna@python.org","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-115557","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-115557","severity":null,"published_at":"2026-10-24T15:17:33+00:00","modified_at":"2026-10-24T15:17:33+00:00","first_seen_at":"2026-10-24T16:18:39+00:00","fetched_at":"2026-10-24T16:18:39+00:00","note":null},{"source":"analyst","external_id":"CVE-2026-115557:677","url":null,"severity":null,"published_at":"2026-10-25T03:15:19+00:00","modified_at":"2026-10-25T03:15:19+00:00","first_seen_at":"2026-10-25T03:15:19+00:00","fetched_at":"2026-10-25T03:15:19+00:00","note":"PSF CVE (CNA score 9.4) is a defense-in-depth denylist of compromised eMudhra intermediate CA keys (SPKI match) added to CPython ssl, PR 160042 merged 2026-10-24; real risk is MITM via eMudhra/emSign chains (certifi, pip, system stores), not a Python flaw. Backport PRs to 3.11-3.15 open, no released fixed patch versions found yet; CVE record says affected before 3.16.0. Severity left as is; the 9.4 reflects the CA compromise."}],"documents":[{"id":3086,"url":"https://mail.python.org/archives/list/security-announce@python.org/thread/FNAJMZV6XQYLVPABNINDMF3VF66AYLW4/","title":"[CVE-2026-115557] Distrust compromised intermediate certificates in ssl module (PSF)","kind":"advisory","source":"analyst","text":null,"published_at":null,"relation":"advisory","confidence":null,"note":null},{"id":3087,"url":"https://github.com/python/cpython/pull/160042","title":"gh-160040: Distrust compromised eMudhra intermediate CA keys (CVE-2026-115557)","kind":"issue","source":"analyst","text":null,"published_at":null,"relation":"fix","confidence":null,"note":null},{"id":3088,"url":"https://discuss.python.org/t/information-for-python-users-regarding-emudhra-emsign-ca-certificate-security-incident/109576","title":"Information for Python users regarding eMudhra / emSign CA certificate security incident","kind":"vendor","source":"analyst","text":null,"published_at":null,"relation":"describes","confidence":null,"note":null},{"id":3089,"url":"https://www.cve.org/CVERecord?id=CVE-2026-115557","title":"CVE Record: CVE-2026-115557","kind":"advisory","source":"analyst","text":null,"published_at":null,"relation":"advisory","confidence":null,"note":null}],"notice":"Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai"}