Skip to content

python3: block compromised eMudhra keys and remediate ensurepip trust - #19708

Merged
jslobodzian merged 3 commits into
fasttrack/3.0from
users/joslobo/emudhra-python3-20261023
Oct 25, 2026
Merged

jslobodzian merged 3 commits into
fasttrack/3.0from
users/joslobo/emudhra-python3-20261023

Conversation

@jslobodzian

@jslobodzian jslobodzian commented Oct 24, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

Remediate bundled ensurepip trust and backport upstream CPython 3.12's runtime rejection of compromised eMudhra intermediate public keys.

Package: python3 3.12.15-1 -> 3.12.15-3, targeting fasttrack/3.0. The initial ensurepip remediation was -2; the SSL runtime backport is -3.

Changes

  • Preserve the existing pip 25.0.1 ensurepip-wheel cleanup and RECORD regeneration. There is no bundled pip version upgrade.
  • Add the Linux runtime portion of CPython 3.12 PR #160571, merged as a17d9ef549008133eadf20689b1f4787902efe5b, for CVE-2026-115557.
  • Reject eight compromised intermediate public keys by SHA-256 of SubjectPublicKeyInfo, including cross-signed representations, when TLS certificate verification is enabled. Explicit CERT_NONE remains under the caller's control.
  • Retain upstream's _ssl.c, denylist header, Linux Makefile dependency and security NEWS changes without source adaptation.
  • Deliberately omit upstream test additions, certificate-generation changes, binary ZIP fixture and unused Windows project metadata. No ZIP is committed, no Source entry is added, and Source0/signatures are unchanged.
  • Leave the existing %check section unchanged. Validate the omitted upstream regression separately, outside the RPM/GitHub payload.
  • Synchronize the Python release in both architecture toolchain and pkggen manifests.

The runtime guard complements platform CA updates and bundled-data cleanup; it is not a replacement for either. It covers CPython _ssl, not independent native TLS stacks.

Validation

Source and packaging

  • Existing cgi3.patch and ensurepip-helper patch apply before the new patch.
  • The four retained upstream files match the merged upstream Git blobs exactly.
  • Native Azure Linux 3 ARM64 GNU patch applies the complete patch stack with --batch --fuzz=0, without offsets.
  • Native spec query resolves python3 3.12.15-3.azl3.
  • Source declarations, source signatures and %check remain unchanged. No test/binary path appears in the new patch.

Native runtime validation

On Azure Linux 3.0 ARM64, rebuild the exact patched _ssl extension against the matching Python 3.12.15 ABI and OpenSSL 3.3.7 in a separate validation root:

  • Execute upstream's omitted regression externally with its exact upstream fixture: it fails as expected on the previous extension and passes on the patched extension.
  • All 14 published incident endpoints accept in the controlled pre-fix baseline with explicitly supplied test trust, then all 14 reject with verification code 28 (CERT_REJECTED) using the patched extension.
  • Legitimate example.com SSL.com TLS verification succeeds.
  • Explicit CERT_NONE behavior remains unchanged.
  • Existing test_ssl, test_asyncio.test_ssl and test_asyncio.test_sslproto: 246 tests run, 27 skipped, all three test files pass.

This is native compiled-extension/runtime validation, not a new full candidate RPM build. The prior -2 installed ensurepip-wheel validation remains applicable to the unchanged helper; new complete AMD64/ARM64 package builds remain subject to PR CI.

Merge gates

  • New full AMD64 and ARM64 PR builds passed.
  • Required reviews satisfied.
  • Toolchain/bootstrap publication coordination resolved.
  • Ready to merge.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: e62137f2-2602-418d-ba0d-3b1f2ff0259e
@jslobodzian
jslobodzian requested a review from a team as a code owner October 24, 2026 08:56
@microsoft-github-policy-service microsoft-github-policy-service Bot added Packaging fasttrack/3.0 PRs Destined for Azure Linux 3.0 labels Oct 24, 2026
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: e62137f2-2602-418d-ba0d-3b1f2ff0259e
python3-debuginfo-3.12.15-1.azl3.aarch64.rpm
python3-devel-3.12.15-1.azl3.aarch64.rpm
python3-debuginfo-3.12.15-2.azl3.aarch64.rpm
python3-devel-3.12.15-2.azl3.aarch64.rpm

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Circular Dep Check is expected to fail whenever toolchain is bumped before the new RPM is published.

Backport the upstream 3.12 runtime fix for CVE-2026-115557 without
its test additions or ZIP fixture. Preserve ensurepip remediation,
keep Source0 and %check unchanged, and synchronize release manifests.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: e62137f2-2602-418d-ba0d-3b1f2ff0259e
@jslobodzian jslobodzian changed the title python3: remove affected eMudhra and AAA roots from ensurepip python3: block compromised eMudhra keys and remediate ensurepip trust Oct 25, 2026
%{_libdir}/python%{majmin}/test/*

%changelog
* Sun Oct 25 2026 Jon Slobodzian <joslobo@microsoft.com> - 3.12.15-3

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: I think this could all go into a single 3.12.15-2 revision

@jslobodzian
jslobodzian merged commit 9cc914b into fasttrack/3.0 Oct 25, 2026
32 of 33 checks passed
@jslobodzian
jslobodzian deleted the users/joslobo/emudhra-python3-20261023 branch October 25, 2026 23:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

fasttrack/3.0 PRs Destined for Azure Linux 3.0 Packaging

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants