Skip to content
The Patch Observer
Wednesday, October 21, 2026Your daily threat briefing309 reports
Vulnerabilities

Patch Python TLS Bundles Now to Stop MITM Attacks via Compromised Root

Managed service providers must update certifi and uv immediately to block man-in-the-middle attacks enabled by revoked emSign root certificates in Python tooling.

Patch Python TLS Bundles Now to Stop MITM Attacks via Compromised Root
Illustration: Patch Observer

Key points

  • Certifi versions before 2026.10.19 and uv versions before 0.13.4 trust a compromised emSign root certificate.
  • Attackers with stolen intermediate keys can issue valid certificates for any hostname to intercept TLS traffic.
  • Patches are available for both packages; teams should rebuild container images that vendor these libraries.

Certifi versions prior to 2026.10.19 and uv versions before 0.13.4 contain a critical vulnerability that allows man-in-the-middle attacks. The flaw stems from the inclusion of the emSign ECC Root CA - G3 certificate in their bundled trust stores. According to GitHub security advisories, eight intermediate certificates from eMudhra that chain to this root have compromised private keys. The issuing CA has revoked these intermediates, but the bundled roots in these Python packages still accept them.

How it unfolded

  • The emSign ECC Root CA - G3 was included in certifi bundles from version 2019.03.09 onward and in uv versions before 0.13.4.
  • Private keys for eight eMudhra intermediate certificates chained to this root were compromised.
  • The CA revoked the affected intermediate certificates, but the root remained in the vendor bundles.
  • Certifi 2026.10.18 removed all emSign roots; version 2026.10.19 restored unaffected emSign roots.
  • uv 0.13.4 removed the compromised root from its vendored webpki-root-certs bundle.

Who is affected

Organizations using Python applications that rely on certifi for TLS verification are at risk if they run versions older than 2026.10.19. This includes popular libraries such as requests, urllib3, and pip, as well as the Python.org macOS installer. According to the advisory, any client trusting this bundle can have its traffic intercepted. Similarly, systems using the uv package manager for dependency resolution are vulnerable if they run versions prior to 0.13.4. The uv tool verifies TLS connections against a vendored copy of the webpki-root-certs bundle, which previously included the compromised emSign root.

Our take on the response

The response from the maintainers of certifi and uv has been swift and precise. Certifi initially removed all emSign roots in version 2026.10.18 to stop the bleeding, then refined the fix in 2026.10.19 to restore legitimate emSign roots that were not affected. This two-step approach minimizes disruption to users who rely on valid emSign certificates while ensuring the compromised keys are rejected. uv followed suit by updating its vendored bundle in version 0.13.4. These patches are now available, and the critical severity rating reflects the high potential for widespread traffic interception if left unpatched.

Who needs to act first

Teams should prioritize updating systems that expose Python applications to external networks or handle sensitive data. Check whether production servers, container images, and development environments use the affected versions of certifi or uv. Roll out the patches in stages, starting with the most exposed services. Test the updates in a staging environment to ensure that applications relying on TLS connections continue to function correctly. Back up current configurations before applying changes. If immediate patching is not possible, monitor network traffic for anomalies that might indicate interception attempts.

What to do and how to stay safe: certifi

  • Update certifi to version 2026.10.19 or later on all systems where it is installed.
  • Upgrade uv to version 0.13.4 or later to remove the compromised root from its trust store.
  • Rebuild any container images that vendor certifi or uv to ensure the patched versions are included.
  • Verify that applications using requests, urllib3, or pip are pulling the updated certifi bundle.

Step-by-step guide: Vulnerability Prioritization: How to Rank Risks Without Wasting Time

General security guidance from the Patch Observer newsroom. It is not confirmed advice from the organisations named in this story.

Frequently asked questions

Which specific versions of certifi are vulnerable?

Certifi versions from 2019.03.09 up to, but not including, 2026.10.19 are vulnerable to this flaw.

Is there a CVE ID for this vulnerability?

No CVE ID has been assigned to this vulnerability according to the GitHub security advisories.

What is the severity rating of this issue?

The severity is rated as critical by GitHub for both the certifi and uv advisories.

Sources

  1. GitHub Advisory Database
  2. GitHub Advisory Database

Related stories