GHSA-6q48-6c7w-9gw2 json
certifi bundles emSign root CAs with compromised intermediate CA keys
published 24d ago modified 14d ago also PYSEC-2026-4320
- cvss
- —
- not scored
- cisa kev
- Not listed
- not in CISA's catalog
- epss
- —
- no score, EPSS covers CVEs only
- public exploits
- 0
- none known
Summary
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.
Patch / fix
- pypi certifi 2026.10.18
Is GHSA-6q48-6c7w-9gw2 in your dependencies? Fencer shows which of your repositories are affected as soon as an advisory lands, and opens the fix as a pull request.
Check with FencerAffected packages
| ecosystem | package | affected | fixed in |
|---|---|---|---|
| pypi | certifi | >=2019.03.09, <2026.10.18 |
2026.10.18 |
Classification
- Weakness
-
- CWE-295 Improper Certificate Validation
References
-
github.com
/certifi/python-certifi/security/advisories/GHSA-6q48-6c7w-9gw2
web, advisory
-
discuss.python.org
/t/information-for-python-users-regarding-emudhra-emsign-ca-certificate-security-incident/109576
web
-
emudhra.we-have-a-problem.com
web
-
github.com
/certifi/python-certifi
package
-
pypi.org
/project/certifi
package
-
github.com
/advisories/GHSA-6q48-6c7w-9gw2
advisory
Sources
- GitHub Advisory GHSA-6q48-6c7w-9gw2
- OSV PYSEC-2026-4320
- Maintainer advisory GHSA-6q48-6c7w-9gw2
Fencer Intel keeps one entry per vulnerability: the CVE id wins, then GHSA, and records that alias each other are merged, except that two CVEs always keep separate entries. The same data is available as JSON.
The maintainers of certifi/python-certifi published their own advisory on GitHub. Reviewed sources take precedence over it.