What happened
The researcher who found it summarises the cause in one line:
“The private keys for the intermediate certificates were incorrectly generated by the CA. This means that anyone can recover them from the certificates.”
— the researcher, emudhra.we-have-a-problem.com
Anyone holding such a key can sign certificates that chain to a trusted root. Six of the eight CAs issue TLS certificates and two issue code-signing certificates. Each key has two certificates: one issued by eMudhra's own root and one cross-certificate issued by Sectigo's AAA Certificate Services, sixteen in all.
Timeline (UTC)
- Chrome Root Program receives the report. — Chrome Root Program
- Chrome lands a CRLSet update blocking the SPKI hashes of all six TLS-issuing intermediates; the block also covers the Sectigo cross-certificates, which carry the same keys. — Chrome Root Program
- Mozilla receives the report. — Mozilla
- Mozilla completes OneCRL blocking. — Mozilla
- eMudhra revokes the eight certificates issued by its own roots (reason
ca_compromise). — revocation list - The eight Sectigo cross-certificates, issued by AAA Certificate Services, are revoked. — revocation list
- Apple blocks the CAs. — researcher
- Microsoft blocks the CAs. — researcher
- Public disclosure: Mozilla and Chrome post in dev-security-policy, and the incident is tracked in Bugzilla bug 2083449. — Bugzilla
Why browsers were not exposed
“Because no TLS certificates chaining to these six intermediate CAs were logged to CT prior to our CRLSet block on October 17, no fraudulent certificates issued by these CAs could have been trusted by default in Chrome or other CT-enforcing browsers.”
— Chrome Root Program, dev-security-policy, 20 October 2026
Our index agrees: the first certificate from any of the six TLS CAs reached a CT log on 2026-10-19 20:24 UTC, 48 hours after Chrome's block.
The eight CAs
| CA | use | issued by eMudhra's root | Sectigo cross-certificate | revoked |
|---|---|---|---|---|
| EM DV TLS CA - G3B | TLS (DV) | 42c4accd12c4 | 45a883f349ae | eMudhra root: 2026-10-18 09:24 UTC / cross: 2026-10-19 10:35 UTC |
| EM DV TLS CA - G3C | TLS (DV) | 0164d7ceae5b | 62b7f9868263 | eMudhra root: 2026-10-18 09:27 UTC / cross: 2026-10-19 10:35 UTC |
| EM OV TLS CA - G3B | TLS (OV) | 98b896625c0c | 5f1ded4dd590 | eMudhra root: 2026-10-18 09:37 UTC / cross: 2026-10-19 10:35 UTC |
| EM OV TLS CA - G3C | TLS (OV) | cb6e15165ac8 | 7485b51c0ed1 | eMudhra root: 2026-10-18 09:38 UTC / cross: 2026-10-19 10:35 UTC |
| EM EV TLS CA - G3B | TLS (EV) | e7568fe6e123 | 579480aea166 | eMudhra root: 2026-10-18 09:28 UTC / cross: 2026-10-19 10:35 UTC |
| EM EV TLS CA - G3C | TLS (EV) | 432ec25f0d28 | fd9d5c2dbbd4 | eMudhra root: 2026-10-18 09:30 UTC / cross: 2026-10-19 10:35 UTC |
| EM OV CS CA - G3B | Code signing (OV) | 9e39de288127 | a496e23ac0ca | eMudhra root: 2026-10-18 09:33 UTC / cross: 2026-10-19 10:35 UTC |
| EM OV CS CA - G3C | Code signing (OV) | 4b2460a466f9 | 84112972b8e5 | eMudhra root: 2026-10-18 09:35 UTC / cross: 2026-10-19 10:35 UTC |
Certificates issued by the compromised CAs
Every distinct set of names in a certificate from the six TLS CAs that reached a CT log, as of 2026-10-21 04:16 UTC. Certificates with the same names are counted in one row.
EM DV TLS CA - G3B — 162 certificates
| names | certificates | issued |
|---|---|---|
| we-are-lost.com, google.com | 150 | 2026-10-20 |
| emudhra.salesforce.com | 2 | 2026-10-20 |
| www.markgamache.com, markgamache.com | 2 | 2026-10-20 |
| emudhra-lab.example.com | 3 | 2026-10-20 |
| q3k.google.com | 1 | 2026-10-20 |
| dv-g3b-aaa-emudhra.we-have-a-problem.com | 1 | 2026-10-20 |
| dv-g3b-emudhra.we-have-a-problem.com | 2 | 2026-10-19 – 2026-10-20 |
| *.emsign.filippo.io, emsign.filippo.io | 1 | 2026-10-19 |
EM DV TLS CA - G3C — 6 certificates
| names | certificates | issued |
|---|---|---|
| fabrikam.lat | 2 | 2026-10-21 |
| emudhra-lab.example.com | 1 | 2026-10-20 |
| dv-g3c-aaa-emudhra.we-have-a-problem.com | 1 | 2026-10-20 |
| dv-g3c-emudhra.we-have-a-problem.com | 2 | 2026-10-19 – 2026-10-20 |
EM OV TLS CA - G3B — 4 certificates
| names | certificates | issued |
|---|---|---|
| emudhra-lab.example.com | 1 | 2026-10-20 |
| ov-g3b-aaa-emudhra.we-have-a-problem.com | 1 | 2026-10-20 |
| ov-g3b-emudhra.we-have-a-problem.com | 2 | 2026-10-19 – 2026-10-20 |
EM OV TLS CA - G3C — 4 certificates
| names | certificates | issued |
|---|---|---|
| emudhra-lab.example.com | 1 | 2026-10-20 |
| ov-g3c-aaa-emudhra.we-have-a-problem.com | 1 | 2026-10-20 |
| ov-g3c-emudhra.we-have-a-problem.com | 2 | 2026-10-19 – 2026-10-20 |
EM EV TLS CA - G3B — 105,905 certificates
| names | certificates | issued |
|---|---|---|
| we-are-lost.com, google.com | 105,901 | 2026-10-21 |
| emudhra-lab.example.com | 1 | 2026-10-20 |
| ev-g3b-aaa-emudhra.we-have-a-problem.com | 1 | 2026-10-20 |
| ev-g3b-emudhra.we-have-a-problem.com | 2 | 2026-10-19 – 2026-10-20 |
EM EV TLS CA - G3C — 6 certificates
| names | certificates | issued |
|---|---|---|
| emudhra-lab.example.com | 1 | 2026-10-20 |
| averybadday.mcpherrin.ca | 1 | 2026-10-20 |
| helloworld.mcpherrin.ca | 1 | 2026-10-20 |
| ev-g3c-aaa-emudhra.we-have-a-problem.com | 1 | 2026-10-20 |
| ev-g3c-emudhra.we-have-a-problem.com | 2 | 2026-10-19 – 2026-10-20 |
Code-signing certificates are not logged in Certificate Transparency, so the two code-signing CAs have no list here.
What to do
Nothing, as a browser user: browsers and operating systems already distrust these CAs. If you maintain your own trust store or pin intermediates, update it: Go, Python's certifi and the Debian, Ubuntu and Fedora ca-certificates packages shipped updates (versions on the researcher's page). eMudhra says it has stopped issuing from all intermediates under emSign ECC Root CA - G3 and that about 30,000 certificates need to be re-issued.
Sources
- dev-security-policy thread with the Mozilla and Chrome Root Program posts (20 October 2026)
- Bugzilla bug 2083449
- The researcher's page
- impacted-intermediates.json: the sixteen certificates with their revocation times