certifi and uv Trust Compromised emSign Root, Enabling Forged Certs for Python Clients
Compromised keys in the emSign root allow attackers to forge certificates for Python clients using certifi and uv before specific patch versions are applied.

Key points
- Certifi versions before 2026.10.19 and uv versions before 0.13.4 trust a compromised emSign root certificate.
- Attackers with access to revoked intermediate keys can issue valid-looking certificates for any hostname.
- Patches removing the affected root have been released for both packages to restore secure TLS verification.
Security operations teams should review Python environments immediately, as bundled TLS certificate stores in popular packages contain a root certificate linked to compromised private keys. The issue affects `certifi` and `uv`, two widely used tools for managing Python dependencies and handling HTTPS connections. If an attacker controls one of the compromised keys and sits on the network path, they can intercept or modify traffic from applications relying on these bundles, such as `requests`, `urllib3`, and `pip`.
Root cause
The vulnerability stems from the inclusion of the `emSign ECC Root CA - G3` certificate in the bundled CA stores of these packages. According to GitHub advisories, eight intermediate certificates issued by eMudhra that chain to this root have had their private keys compromised. The issuing authority has revoked these intermediate certificates, but the root itself remained in the trust stores of older package versions, allowing forged certificates to pass validation checks.
Attack path
An attacker possessing one of the compromised intermediate keys can generate certificates for any domain name. Because the root certificate is trusted by default in affected versions, clients will accept these forged certificates as legitimate. This enables man-in-the-middle attacks where the attacker can read or alter encrypted TLS traffic without triggering standard certificate validation errors in the client application.
Affected versions
- `certifi` versions 2019.03.09 up to, but not including, 2026.10.19.
- `uv` versions earlier than 0.13.4.
- Python.org macOS installer versions that vendor affected `certifi` releases.
Mitigation
- Upgrade `certifi` to version 2026.10.19 or later, which restores non-affected emSign roots after removing the compromised one.
- Upgrade `uv` to version 0.13.4 or later, which removes the vulnerable root from its vendored bundle.
- Rebuild container images that vendor `certifi` to ensure the patched version is included in the runtime environment.
Signals worth monitoring
Teams usually detect this class of threat by reviewing TLS handshake logs for unexpected certificate issuers or sudden changes in certificate chains. Check whether internal monitoring tools flag connections using certificates signed by the revoked intermediate CAs. Look for anomalies in traffic patterns, such as increased latency or modified payloads, which may indicate active interception. Verify that security information and event management systems are configured to alert on certificate validation failures or unusual root certificate usage.
Background: Man-in-the-middle attacks
Prevent man-in-the-middle attacks by enforcing strict certificate validation, disabling legacy protocols, and verifying domain ownership through DNSSEC. Use mutual authentication for internal services and monitor for unexpected certificate changes to stop interception attempts before data exfiltration occurs.
Read the full guide: Man-in-the-Middle Attack Prevention Checklist for Secure Connections
What to do and how to stay safe: certifi
- Audit your Python environments to identify installations of `certifi` and `uv` that are below the patched versions.
- Update affected packages to the latest stable releases to remove the compromised root from trust stores.
- Rebuild any container images or virtual environments that cache older versions of these dependencies.
- Monitor network logs for signs of man-in-the-middle activity, especially for traffic originating from updated clients.
Step-by-step guide: Out-of-band patches: what small businesses need to know
General security guidance from the Firewall Pulse newsroom. It is not confirmed advice from the organisations named in this story.
Frequently asked questions
Which specific root certificate is causing the vulnerability?
The `emSign ECC Root CA - G3` root certificate is the source of the issue.
Are there any CVE IDs assigned to this vulnerability?
No CVE IDs have been assigned to these advisories according to the source material.
Does the patch completely remove emSign from the trust store?
No, `certifi` 2026.10.19 restores emSign roots that are not affected by the compromise.



