GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — [3.12] gh-160040: Distrust compromised eMudhra intermediate CA keys (CVE-2026-115557) (GH-160042) by gpshead · Pull Request #160571 · python/cpython

Conversation

@gpshead

@gpshead gpshead commented Oct 24, 2026

Copy link
Copy Markdown
Member

(cherry picked from commit 7dd8b47)

Co-authored-by: Christian Heimes [email protected]

Manual backport notes (3.12):

  • Modules/_ssl.c: 3.12 predates _ssl.c calls SSL_CTX_get_verify_callback unnecessarily #113332, so _set_verify_mode() still fetched and re-installed the current ctx verify callback. It now installs _ssl_verify_callback directly, as on main (the unused verify_cb local is dropped; CPython never installs a callback of its own). newPySSLSocket()'s post-handshake-auth path already passes SSL_get_verify_callback() through, which is what main's hunk there introduces, so it is unchanged.
  • Lib/test/test_ssl.py: 3.12 lacks main's LEAF_MISSING_AKI_* constants; the DISTRUSTED_SPKI_* block is placed after SIGNED_CERTFILE_ECC_HOSTNAME. The test itself is unchanged.
  • Lib/test/certdata/make_ssl_certs.py: 3.12 predates the argparse cmdlineargs refactor, so make_distrusted_spki_cert() takes no arguments and uses the module-level enddate and literal '7000' days like the rest of the 3.12 script.
  • Makefile.pre.in / PCbuild/_ssl.vcxproj{,.filters}: add only Modules/_ssl/distrusted_spki.h (main's _openssl_mem.h is main-only), plus the Header Files filter definition.

distrusted_spki.h, distrusted.zip and the NEWS entry are identical to main. test_ssl, test_asyncio.test_ssl and test_asyncio.test_sslproto pass, including test_distrusted_spki; no new _ssl.c compiler warnings.

  • Issue: ssl: distrust compromised eMudhra intermediate CA keys #160040

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
@tiran @gpshead
[3.12] pythongh-160040: Distrust compromised eMudhra intermediate CA …
6759d03
…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 <[email protected]>
Co-authored-by: Claude Opus 4.8 (1M context) <[email protected]>

(cherry picked from commit 7dd8b47)

Co-authored-by: Christian Heimes <[email protected]>
This was referenced Oct 24, 2026
ssl: distrust compromised eMudhra intermediate CA keys #160040
Closed
gh-160040: Distrust compromised eMudhra intermediate CA keys (CVE-2026-115557) #160042
Merged
@bedevere-app bedevere-app Bot added the type-security A security issue label Oct 24, 2026
@gpshead
gpshead marked this pull request as ready for review October 24, 2026 07:12
@gpshead
gpshead requested a review from a team as a code owner October 24, 2026 07:12
@bedevere-app bedevere-app Bot added the awaiting core review label Oct 24, 2026
@gpshead gpshead added the release-blocker label Oct 24, 2026
@github-project-automation github-project-automation Bot added this to Release and Deferred blockers 🚫 Oct 24, 2026
@github-project-automation github-project-automation Bot moved this to Todo in Release and Deferred blockers 🚫 Oct 24, 2026
@gpshead gpshead assigned Yhg1s Oct 24, 2026
@Yhg1s
Yhg1s merged commit a17d9ef into python:3.12 Oct 24, 2026
29 of 30 checks passed

Uh oh!

There was an error while loading. Please reload this page.

@github-project-automation github-project-automation Bot moved this from Todo to Done in Release and Deferred blockers 🚫 Oct 24, 2026
@bedevere-app bedevere-app Bot removed the awaiting core review label Oct 24, 2026
@Yhg1s

Yhg1s commented Oct 24, 2026

Copy link
Copy Markdown
Member

(I'll keep an eye on the docs build post-merge CI, but as it was an infrastructure failure I didn't want to rerun everything to verify pre-merge.)

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@jslobodzian jslobodzian mentioned this pull request Oct 25, 2026
python3: block compromised eMudhra keys and remediate ensurepip trust microsoft/azurelinux#19708
Merged
4 tasks
@yongkyuns yongkyuns mentioned this pull request Oct 27, 2026
Authenticate packaged Python sources and qualify TLS distrust backport yongkyuns/nxrs#137
Draft
@sunm2n sunm2n mentioned this pull request Oct 29, 2026
[BUILD] eMudhra 중간 CA 키 노출 대응: certifi/pip/OS CA 갱신 및 TLS 차단 검증 DeVine-2025/DeVine_AI#62
Open
27 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Reviewers

No reviews

Uh oh!

There was an error while loading. Please reload this page.

Assignees

@Yhg1s Yhg1s

Labels

release-blocker type-security A security issue

Projects

Release and Deferred blockers 🚫
Status: Done

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

Uh oh!

There was an error while loading. Please reload this page.

3 participants

@gpshead @Yhg1s @tiran
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.