---
id: "GHSA-6q48-6c7w-9gw2"
kind: "vulnerability"
aliases: ["GHSA-6q48-6c7w-9gw2"]
title: "certifi bundles emSign root CAs with compromised intermediate CA keys"
severity: "critical"
cvss: null
epss: null
exploited: false
status: "open"
category: "package"
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"]
published_at: "2026-10-20T19:35:05+00:00"
first_seen_at: "2026-10-23T19:11:32+00:00"
updated_at: "2026-10-23T20:13:31+00:00"
sources: [{"source": "ghsa", "url": "https://github.com/advisories/GHSA-6q48-6c7w-9gw2", "first_seen_at": "2026-10-23T19:11:32+00:00"}]
---

# certifi bundles emSign root CAs with compromised intermediate CA keys

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.

_Summary, check and fix written by a model from the sources; labelled as such._

## Affected

- pypi:certifi affected >= 2019.03.09, < 2026.10.19 fixed 2026.10.19

## 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.
In 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.
Rebuild container images that vendor certifi so the fixed version is included.

## Timeline

- 2026-10-23T19:11:32+00:00 ghsa https://github.com/advisories/GHSA-6q48-6c7w-9gw2

## From the sources

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.

---

_Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai_
