Skip to content

python-virtualenv: remove affected roots from embedded pip wheels - #19710

Merged
jslobodzian merged 4 commits into
fasttrack/3.0from
users/joslobo/emudhra-python-virtualenv-20261023
Oct 25, 2026
Merged

jslobodzian merged 4 commits into
fasttrack/3.0from
users/joslobo/emudhra-python-virtualenv-20261023

Conversation

@jslobodzian

Copy link
Copy Markdown
Collaborator
Merge Checklist
  • Updated packages build successfully on AMD64 and ARM64.
  • Applicable package tests are verified with RUN_CHECK=y.
  • Toolchain/worker manifests and toolchain rebuild requirements are resolved where applicable.
  • Existing sources and SHA-256 signatures are unchanged and verified.
  • Existing security patch stacks are preserved and relevant patches apply with zero fuzz.
  • Offline incident-chain rejection and unaffected-anchor retention are checked.
  • Ready to merge.
Summary

Address independently bundled trust for the eMudhra intermediate-key compromise.
Updating the system CA package alone does not correct every bundled client store.
The AAA cross-signing path must be covered as well as emSign ECC Root CA - G3.

Target: fasttrack/3.0. Source package: python-virtualenv 20.36.1-7 -> 20.36.1-8.

Change Log
  • Remove AAA/ECC G3 from embedded pip 25.0.1 and ECC G3 from pip 25.3 (which already lacks AAA). Run the helper after all existing nested-wheel security backports and renew RECORD hashes and sizes.
  • Preserve unrelated certificate bytes, including unaffected emSign G1, C1 and C3 where present.
  • Preserve the existing security backports and use a release-only package update.
  • Continue to require an updated system trust deployment (ca-certificates-base >= 3.0.0-19);
    this change is not a substitute for that update or a repair of user-supplied CA overrides.
Does this affect the toolchain?

NO: this source package was not found in either architecture toolchain package manifest.

Associated issues / references
Test Methodology
  • Exact Source0 archive verified against the existing signatures.
  • Existing and new relevant source patches applied using GNU patch --batch --fuzz=0.
  • All fourteen disclosed TLS chains checked against each corrected store:
    28/28 post-change chain/store cases reject for issuer/trust-chain failure.
  • Every unrelated certificate remains byte-identical; an unaffected GlobalSign anchor
    continues to validate in each resulting store.
  • Source/preparation and offline trust validation only. Native RPM builds,
    RUN_CHECK=y and installed-client validation are pending PR CI/buddy builds.

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
%{_bindir}/virtualenv

%changelog
* Fri Oct 23 2026 Jon Slobodzian <joslobo@microsoft.com> - 20.36.1-8

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.

Check section is not green

Jon Slobodzian and others added 3 commits October 24, 2026 22:13
Use private test environments and constrained dependencies from configured pip sources instead of replacing RPM-owned packages or requiring an offline source bundle.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: e62137f2-2602-418d-ba0d-3b1f2ff0259e
Use the built wheel and pinned test dependencies in a private environment. Run pytest directly without enabling subprocess coverage, retaining the existing test selection and all certificate/security fixes.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: e62137f2-2602-418d-ba0d-3b1f2ff0259e
Keep the same 21 dependency pins in a quoted heredoc inside %check. Remove the separate constraints source without changing test selection or certificate/security fixes.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: e62137f2-2602-418d-ba0d-3b1f2ff0259e
@jslobodzian
jslobodzian merged commit 78a1a18 into fasttrack/3.0 Oct 25, 2026
29 checks passed
@jslobodzian
jslobodzian deleted the users/joslobo/emudhra-python-virtualenv-20261023 branch October 25, 2026 03:45
@azurelinux-ci-jwt-app

Copy link
Copy Markdown

@SeanDougherty

SeanDougherty commented Oct 25, 2026 •

Copy link
Copy Markdown
Contributor

Update: incident-specific exposure addressed by #19708

I am withdrawing the P1 request for cache invalidation as a requirement for this incident. Commit f59907689a01f381c20e92b2461e45e46b1f3968 in #19708 backports CPython's runtime rejection of eight compromised eMudhra intermediate public keys, including cross-signed certificates. This blocks the affected chains even when an old pip CA bundle remains cached.

My earlier installed-RPM reproduction used Python 3.12.15-1 without that guard. I have since verified that all 14 incident fixtures contain a key on the new denylist.

Protection requires deploying the patched CPython runtime, restarting processes to load it, and keeping certificate verification enabled. No cache reset is required for this protection, including in existing environments using that patched runtime. Independent Python installations and other TLS stacks are not automatically covered.

I closed the alternative cache-invalidation drafts #19721 and #19732. The general same-filename cache-consistency issue remains, but is not a blocker for this incident on patched CPython.

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.

3 participants