Skip to content

GHSA-6q48-6c7w-9gw2 PYSEC-2026-4320

certifi bundles emSign root CAs with compromised intermediate CA keys

Critical PyPI
Severity
9.1 / 10
Critical · CVSS 4.0
Exploit chance (EPSS)
—
No score published
Known exploited
No
Not in CISA's catalog
Weakness
CWE-295 Improper Certificate Validation
Fix
2026.10.18
Upgrade certifi to this version or later

Description

Certifi versions before 2026.10.18 include the emSign ECC Root CA - G3 root certificate in their bundled CA store. Eight eMudhra intermediate CA certificates that chain to this root have compromised private keys and the CA has revoked them.

An attacker with one of the compromised keys can issue valid-looking certificates for any hostname. If the attacker is also on-path, they can intercept or modify TLS traffic from clients that trust the certifi bundle. Examples include requests, urllib3 and pip, and the Python.org macOS installer.

Certifi 2026.10.18 removed all emSign roots from the bundle. Certifi 2026.10.19 restored the emSign roots that are not affected. Upgrade to 2026.10.19 or later, and rebuild container images that vendor certifi.

Affected versions

PyPI

PackageVulnerableFixed in
certifi
>= 2019.03.09, < 2026.10.18
2026.10.18
certifi
>= 2019.03.09, < 2026.10.18
2026.10.18

How to fix

Move to the fixed version or later with your package manager, update the lockfile, and run your tests. If the package only arrives through another dependency, upgrade that dependency first. If none of its releases pulls a fixed version yet, force the version with your package manager's override.

certifi PyPI → 2026.10.18

pip
pip install --upgrade "certifi>=2026.10.18"
poetry
poetry add "certifi>=2026.10.18"
uv
uv add "certifi>=2026.10.18"

Severity breakdown

CVSS 4.0 9.1

CVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N

Attack vector
Network
Attack complexity
High
Attack requirements
Present
Privileges required
None
User interaction
None
Confidentiality (vulnerable system)
High
Integrity (vulnerable system)
High
Availability (vulnerable system)
None
Confidentiality (subsequent systems)
None
Integrity (subsequent systems)
None
Availability (subsequent systems)
None

Weakness

CWE-295: Improper Certificate Validation

The product does not validate, or incorrectly validates, a certificate.

How to prevent it
  • Architecture and Design, Implementation: Certificates should be carefully managed and checked to assure that data are encrypted with the intended owner's public key.
  • Implementation: If certificate pinning is being used, ensure that all relevant properties of the certificate are fully validated before the certificate is pinned, including the hostname.

References

Timeline

  1. Published
  2. Last updated by the source
AdvisorySeverityWhy it's related
GHSA-248v-346w-9cwc
Certifi removes GLOBALTRUST root certificate
High Also affects certifi
GHSA-xqr8-7jwr-rhp7
Removal of e-Tugra root certificate
Critical Also affects certifi
GHSA-43fp-rhv2-5gv8
Certifi removing TrustCor root certificate
High Also affects certifi
GHSA-4487-j8r4-4g2f
Forge: verifyCertificateChain() removes trusted CA certificates with the same subject from the CA store
Low Same weakness, CWE-295
GHSA-5x38-2vff-x55p
Forge: X.509 basicConstraints bypass in verifyCertificateChain() via deprecated extension OIDs 2.5.29.10 and 2.5.29.13
High Same weakness, CWE-295
EEF-CVE-2026-115693
Custom cacerts or cacertfile do not restrict trust to the pinned CA in hackney
Not rated yet Same weakness, CWE-295
GHSA-2m5v-pch6-74hx
undici vulnerable to TLS certificate validation bypass via dropped tls options in Agent
Critical Same weakness, CWE-295
GHSA-vrv5-2jg9-4mmr
Microsoft Security Advisory CVE-2026-96222 - .NET Spoofing Vulnerability
High Same weakness, CWE-295
Is this in your code?

MergeHarbor checks every repository's dependencies against this database, ranks what matters by exploitability and reachability, routes it to the owning team and opens the fix pull request.

Check your repos with MergeHarbor