---
id: "CVE-2026-115557"
kind: "vulnerability"
aliases: ["CVE-2026-115557"]
title: "Python ssl module: denylist rejects known compromised certificates automatically"
severity: "critical"
cvss: 9.4
epss: null
exploited: false
status: "open"
category: "runtime"
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"]
published_at: "2026-10-24T15:17:33+00:00"
first_seen_at: "2026-10-24T16:18:39+00:00"
updated_at: "2026-10-25T03:15:19+00:00"
sources: [{"source": "nvd", "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-115557", "first_seen_at": "2026-10-24T16:18:39+00:00"}, {"source": "analyst", "url": null, "first_seen_at": "2026-10-25T03:15:19+00:00"}]
---

# Python ssl module: denylist rejects known compromised certificates automatically

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.

_Summary, check and fix written by a model from the sources; labelled as such._

## Affected

- runtime:cpython affected < 3.16.0 (per CVE record; backports to 3.11-3.15 pending) fixed 3.16.0

## 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.

## Timeline

- 2026-10-24T16:18:39+00:00 nvd https://nvd.nist.gov/vuln/detail/CVE-2026-115557
- 2026-10-25T03:15:19+00:00 analyst — 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

- [advisory] [CVE-2026-115557] Distrust compromised intermediate certificates in ssl module (PSF) https://mail.python.org/archives/list/security-announce@python.org/thread/FNAJMZV6XQYLVPABNINDMF3VF66AYLW4/
- [advisory] CVE Record: CVE-2026-115557 https://www.cve.org/CVERecord?id=CVE-2026-115557
- [describes] Information for Python users regarding eMudhra / emSign CA certificate security incident https://discuss.python.org/t/information-for-python-users-regarding-emudhra-emsign-ca-certificate-security-incident/109576
- [fix] gh-160040: Distrust compromised eMudhra intermediate CA keys (CVE-2026-115557) https://github.com/python/cpython/pull/160042

## From the sources

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.

---

_Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai_
