Skip to content
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
{
"schema_version": "1.4.0",
"id": "GHSA-6q48-6c7w-9gw2",
"modified": "2026-10-20T19:35:05Z",
"modified": "2026-10-20T19:35:06Z",
"published": "2026-10-20T19:35:05Z",
"aliases": [],
"summary": "certifi bundles emSign root CAs with compromised intermediate CA keys",
"details": "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. \n\nAn 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.\n\nCertifi 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.",
"details": "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. \n\nAn 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.\n\nCertifi 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.\n\nReleases before 2019.03.09 do not contain emSign ECC Root CA - G3, but they do contain AAA Certificate Services (Comodo AAA Services root), which cross-signed the same compromised intermediate keys. \n\nBecause Python's `ssl` module does not check revocation by default, those older bundles still build and accept a valid chain to the compromised intermediates through the AAA path, even though Sectigo revoked the cross-certificates on 2026-10-19.\n\nThe affected range therefore extends below 2019.03.09 to all releases before the fix.",
"severity": [
{
"type": "CVSS_V4",
Expand All @@ -23,7 +23,7 @@
"type": "ECOSYSTEM",
"events": [
{
"introduced": "2019.03.09"
"introduced": "0"
},
{
"fixed": "2026.10.19"
Expand All @@ -38,6 +38,10 @@
"type": "WEB",
"url": "https://github.com/certifi/python-certifi/security/advisories/GHSA-6q48-6c7w-9gw2"
},
{
"type": "WEB",
"url": "https://access.redhat.com/security/vulnerabilities/RHSB-2026-012"
},
{
"type": "WEB",
"url": "https://discuss.python.org/t/information-for-python-users-regarding-emudhra-emsign-ca-certificate-security-incident/109576"
Expand All @@ -46,9 +50,21 @@
"type": "WEB",
"url": "https://emudhra.we-have-a-problem.com"
},
{
"type": "WEB",
"url": "https://emudhra.we-have-a-problem.com/chains.zip"
},
{
"type": "WEB",
"url": "https://emudhra.we-have-a-problem.com/impacted-intermediates.json"
},
{
"type": "PACKAGE",
"url": "https://github.com/certifi/python-certifi"
},
{
"type": "WEB",
"url": "https://www.sectigo.com/resource-library/advisory-on-compromised-emudhra-intermediate-certificates"
}
],
"database_specific": {
Expand Down
Loading