Skip to content

[3.14] gh-160040: Distrust compromised eMudhra intermediate CA keys (CVE-2026-115557) (GH-160042) - #160569

Merged
gpshead merged 1 commit into
python:3.14from
gpshead:backport-7dd8b47-3.14
Oct 24, 2026
Merged

gpshead merged 1 commit into
python:3.14from
gpshead:backport-7dd8b47-3.14

Conversation

@gpshead

@gpshead gpshead commented Oct 24, 2026

Copy link
Copy Markdown
Member

(cherry picked from commit 7dd8b47)

Co-authored-by: Christian Heimes christian@python.org

Manual backport notes (3.14): Makefile.pre.in and PCbuild/_ssl.vcxproj{,.filters} conflicted only because main also lists Modules/_openssl_mem.h (gh-156228, main-only). Resolved by adding just Modules/_ssl/distrusted_spki.h; the filters file also gains the Header Files filter definition (same GUID as main) since 3.14 had no headers listed. All other files are identical to the main commit. test_ssl, test_asyncio.test_ssl and test_asyncio.test_sslproto pass, including test_distrusted_spki.

…keys (CVE-2026-115557) (pythonGH-160042)

The ssl module now rejects TLS certificate chains that contain any of a set of
compromised eMudhra intermediate CA keys.  This is an extraordinary measure and
a last line of defense: removing trust is primarily the job of the platform root
store, and the built-in denylist only blocks connections while that update has
not yet reached the OS, a container image, or a bundled trust store in various
Python packages.  Entries are added to the denylist only under a very high
threshold.

The denylist matches on the public key (the SHA-256 digest of the RFC-5280
SubjectPublicKeyInfo), so it also covers the cross-signed certificates that
reuse one of the distrusted keys.

---------

Signed-off-by: Christian Heimes <christian@python.org>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

(cherry picked from commit 7dd8b47)

Co-authored-by: Christian Heimes <christian@python.org>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

Development

Successfully merging this pull request may close these issues.

2 participants