{"id":"GHSA-6q48-6c7w-9gw2","kind":"vulnerability","aliases":["GHSA-6q48-6c7w-9gw2"],"related":[],"title":"certifi bundles emSign root CAs with compromised intermediate CA keys","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. \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.","summary":"certifi, the CA bundle used by requests, urllib3 and pip, shipped an emSign root CA whose intermediate keys were compromised and revoked. An attacker holding one of those keys can mint certificates for any hostname and, if also on-path, intercept or modify TLS traffic from clients trusting the bundle.","severity":"critical","cvss":null,"epss":null,"exploited":false,"exploited_at":null,"products":[{"name":"certifi","fixed":["2026.10.19"],"affected":">= 2019.03.09, < 2026.10.19","ecosystem":"pypi"}],"ecosystems":["pypi"],"tags":["containers","cwe-295","package","pip","pypi","python","requests","urllib3"],"not_affected_if":["certifi-2026.10.19-or-later","certifi-before-2019.03.09"],"how_to_check":"Run pip show certifi or python -m certifi to get the installed version, and check whether it is earlier than 2026.10.19.\nIn container images, check whether certifi is vendored (for example pip freeze inside the image) and rebuild if so.","fix":"Upgrade certifi to 2026.10.19 or later with pip install --upgrade certifi.\nRebuild container images that vendor certifi so the fixed version is included.","status":"open","published_at":"2026-10-20T19:35:05+00:00","first_seen_at":"2026-10-23T19:11:32+00:00","triaged_at":"2026-10-23T20:13:31+00:00","updated_at":"2026-10-23T20:13:31+00:00","category":"package","confidence":0.85,"triage":{"at":"2026-10-23T20:13:31Z","model":"claude-haiku-5-5","output":{"fix":"Upgrade certifi to 2026.10.19 or later with pip install --upgrade certifi.\nRebuild container images that vendor certifi so the fixed version is included.","summary":"certifi, the CA bundle used by requests, urllib3 and pip, shipped an emSign root CA whose intermediate keys were compromised and revoked. An attacker holding one of those keys can mint certificates for any hostname and, if also on-path, intercept or modify TLS traffic from clients trusting the bundle.","category":"package","who_cares":["python","pypi","requests","urllib3","pip","containers"],"confidence":0.85,"analyst_note":"Sources do not say how an exposed client can tell whether a specific emSign intermediate is in use; check the GHSA page and the certifi changelog for affected chain details and any guidance on pinned bundles.","how_to_check":"Run pip show certifi or python -m certifi to get the installed version, and check whether it is earlier than 2026.10.19.\nIn container images, check whether certifi is vendored (for example pip freeze inside the image) and rebuild if so.","needs_analyst":true,"not_affected_if":["certifi-before-2019.03.09","certifi-2026.10.19-or-later"],"severity_if_unknown":"critical"},"cost_usd":0.000441,"input_tokens":2231,"output_tokens":436,"severity_before":"critical"},"analyst_status":null,"analyst_note":null,"search":"'-295':24B '2026.10.18':85C,171C '2026.10.19':180C,191C '6c7w':14A,19A '6q48':13A,18A '9gw2':15A,20A 'affect':188C 'also':68B,141C 'attack':54B,121C,139C 'bundl':2A,34B,81B,97C,158C,178C 'ca':9A,33B,45B,91C,98C,103C,116C 'cas':5A 'certif':62B,94C,104C,133C 'certifi':1A,21A,31B,82C,157C,170C,179C,200C 'chain':106C 'client':78B,153C 'compromis':7A,50B,111C,126C 'contain':22B,196C 'cwe':23B 'ecc':89C 'eight':100C 'emsign':3A,43B,88C,174C,183C 'emudhra':101C 'exampl':159C 'g3':92C 'ghsa':12A,17A 'ghsa-6q48-6c7w-9gw2':11A,16A 'hold':55B 'hostnam':65B,136C 'imag':197C 'includ':86C,160C 'instal':169C 'intercept':72B,147C 'intermedi':8A,47B,102C 'issu':129C 'key':10A,48B,59B,113C,127C 'later':193C 'look':132C 'maco':168C 'mint':61B 'modifi':74B,149C 'on-path':69B,142C 'one':56B,123C 'packag':25B 'path':71B,144C 'pip':26B,40B,164C 'privat':112C 'pypi':27B 'python':28B 'python.org':167C 'rebuild':195C 'remov':172C 'request':29B,37B,161C 'restor':181C 'revok':52B,118C 'root':4A,44B,90C,93C,109C,175C,184C 'ship':41B 'store':99C 'tls':75B,150C 'traffic':76B,151C 'trust':79B,155C 'upgrad':189C 'urllib3':30B,38B,162C 'use':35B 'valid':131C 'valid-look':130C 'vendor':199C 'version':83C 'whose':46B","nicknames":[],"mitigations":[],"who_affected":null,"tier":"B","verified":{},"analyst_revisit_at":null,"first_public_at":"2026-10-20T19:35:05+00:00","kev":null,"cvss_vector":null,"cvss_by":null,"poc_count":0,"sources":[{"source":"ghsa","external_id":"GHSA-6q48-6c7w-9gw2","url":"https://github.com/advisories/GHSA-6q48-6c7w-9gw2","severity":"critical","published_at":"2026-10-20T19:35:05+00:00","modified_at":"2026-10-20T19:35:06+00:00","first_seen_at":"2026-10-23T19:11:32+00:00","fetched_at":"2026-10-23T19:11:32+00:00","note":null}],"documents":[],"notice":"Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai"}