What happened
The private keys of eight eMudhra intermediate certificate authorities were generated so weakly that anyone can compute them from the public certificates. Six of the intermediates are for TLS and two are for code signing. The keys were not stolen. Mozilla recovered them independently, and it says multiple other people did too.
A researcher known as Wayne reported the problem on 17 October and proved control of all eight keys. Chrome and Firefox blocked the intermediates within hours. eMudhra revoked them on 18 October and Sectigo revoked its cross-signed copies on 19 October. Microsoft and Apple products now block them as well. Mozilla then moved to remove trust in emSign ECC Root CA - G3 entirely, and Chrome is following.
eMudhra says the flaw was in its key generation step, that its infrastructure was not compromised, and that it has no evidence the weak keys were used before disclosure. No certificate issued from these intermediates has been seen in Certificate Transparency logs, and no abuse is confirmed. Tools that do not enforce Certificate Transparency, such as curl and most language runtimes, would not notice an unlogged certificate.
Browsers already block these intermediates. The risk on a developer Mac is software that checks certificates without checking revocation, or that ships its own root list. Removing the root also breaks legitimate sites that chain to it, and the sources disagree on how many certificates that affects.
Timeline
Chrome Root Program received the report of the compromise.[6]
A Chrome CRLSet update blocking the six TLS intermediates was in place.[6]
Mozilla received the report.[2]
Mozilla recovered the private keys independently.[2]
Firefox OneCRL distrust of the certificates completed.[2]
eMudhra marked the eight certificates as revoked.[2]
Cloudflare became aware of the compromise and began its assessment.[4]
Mozilla announced emergency removal of trust in emSign ECC Root CA - G3.[2]
eMudhra stopped issuing from intermediates chaining to emSign ECC Root CA - G3.[2]
Who is affected
- Developers on a Mac using tools that check certificates without revocation: the built-in curl, git, python3 and openssl read the system bundle at /etc/ssl/cert.pem.
- Users of runtimes and tools that ship their own root lists, such as Python certifi, Node.js, Go and Java, until updated.
- Go programs built before the fixed Go release, since they must be rebuilt to reject the keys.
- Operators of servers whose certificates chain to emSign ECC Root CA - G3, which will stop working once Chrome's removal reaches devices.
- Teams running containers, mutual TLS or custom origin certificates, which may need to update their own trust stores.
- Browser users on current versions are covered. Firefox needs action only if Remote Settings is disabled or blocked.
How to check
- Check whether the system bundle used by the built-in curl, git, python3 and openssl still lists emSign ECC Root CA - G3 or AAA Certificate Services. If so, those tools still trust the chain.
- Check the installed versions of Python certifi, Node.js, Go, Java and any Electron or Docker Desktop apps against the fixed versions. The disclosure site run by Mozilla's Dennis Jackson has a crowdsourced list of patched versions.
- Confirm that Go binaries were rebuilt with the fixed Go release.
- The disclosure site also offers test sites. A certificate error from a client means it no longer trusts the compromised intermediates. These are test sites, not indicators.
- Validate through the application's real TLS path, because a working browser does not show that a background service is protected.
What to do
- Update macOS and your browsers to the latest versions.
- Update the runtimes and tools that ship their own root bundles, rebuild Go programs with a fixed Go, and rebuild affected container images.
- Restart or redeploy long-running processes so they reload their trust stores.
- Do not resolve certificate errors after patching by turning off verification.
- The disclosure site explains how to remove the affected roots from /etc/ssl/cert.pem. That edits a system file, so read it carefully first.
- If your servers use certificates chaining to emSign ECC Root CA - G3, replace them before Chrome's removal reaches all devices. That is planned for 27 October.
- eMudhra says it offers replacement certificates, including ones issued by Sectigo.
Indicators of compromise
Shown defanged so they can't be clicked. Copy copies the real value. Every indicator appears in the cited source.
| Type | Indicator | Note | Copy |
|---|---|---|---|
| SHA-256 | E7568FE6E12331F4FD7DE61DA4C7559D0F8EB192A218D4741A3BA75184333838 | Certificate SHA-256, EM EV TLS CA - G3B (eMudhra BV), CCADB A012304[1] | |
| Key hash | e0254c7fcdc265e2f0f8a428dabb75ab4ae039b4872d62f5ee57f0877d5a8a4 | SPKI SHA-256 of the exposed key, EM EV TLS CA - G3B (eMudhra BV); 63 hex characters as published[1] | |
| Certificate serial | c7c41efe92d825f05eae841a4a82c1 | Serial, EM EV TLS CA - G3B (eMudhra BV)[1] | |
| SHA-256 | 98B896625C0C230ADEEC3EB2CF6AAD5001ECF9156A68644E82374CE5833BC25B | Certificate SHA-256, EM OV TLS CA - G3B (eMudhra BV), CCADB A012308[1] | |
| Key hash | 43bffa19d6ef651451f6841e019931e96f6f2eaeff28ab4b6f1ce4576de2717 | SPKI SHA-256 of the exposed key, EM OV TLS CA - G3B (eMudhra BV); 63 hex characters as published[1] | |
| Certificate serial | 6cada367fb1c100088120ea202d568 | Serial, EM OV TLS CA - G3B (eMudhra BV)[1] | |
| SHA-256 | 42C4ACCD12C4F59597925E1A08A7A90102608543809308D50EC427E118BA1493 | Certificate SHA-256, EM DV TLS CA - G3B (eMudhra BV), CCADB A012302[1] | |
| Key hash | ebed6475c2c2d80fcb199f3fe8dd6e6b3ce60b77eb15d4e42c3dec0c6f5b5105 | SPKI SHA-256 of the exposed key, EM DV TLS CA - G3B (eMudhra BV)[1] | |
| Certificate serial | a4aee678f23362b4c0e460b772f214 | Serial, EM DV TLS CA - G3B (eMudhra BV)[1] | |
| SHA-256 | 432EC25F0D28DE9006D97BF752F17BBB2CD41F669933FCB072D9A1148D0261F3 | Certificate SHA-256, EM EV TLS CA - G3C (eMudhra Inc), CCADB A012296[1] | |
| Key hash | 5c0660a2b164910d8ff589c18e14552e9e0ec237dcefe2cb736d41a4811f81a0 | SPKI SHA-256 of the exposed key, EM EV TLS CA - G3C (eMudhra Inc)[1] | |
| Certificate serial | 8009928a64107601af05fa2f19f109 | Serial, EM EV TLS CA - G3C (eMudhra Inc)[1] | |
| SHA-256 | CB6E15165AC802E9B3F993F16C25D41F4E81C21EBDE71AE1B012AC00BF9C7C3F | Certificate SHA-256, EM OV TLS CA - G3C (eMudhra Inc), CCADB A012300[1] | |
| Key hash | 63ecefee431d49523bc1136c4e72d0206a477086caf606cd5cf025686c109cf8 | SPKI SHA-256 of the exposed key, EM OV TLS CA - G3C (eMudhra Inc)[1] | |
| Certificate serial | 296926c227a3a1526392b19482a504 | Serial, EM OV TLS CA - G3C (eMudhra Inc)[1] | |
| SHA-256 | 0164D7CEAE5BB909C272AF151FF44B1177AE9B47D9424B94F1D9558C30934D19 | Certificate SHA-256, EM DV TLS CA - G3C (eMudhra Inc), CCADB A012294[1] | |
| Key hash | 49dd353dc2b919a3770645117d0e60c16115e7d1bc259eefe734b00ea434fe5f | SPKI SHA-256 of the exposed key, EM DV TLS CA - G3C (eMudhra Inc)[1] | |
| Certificate serial | 588b2e3c2bb8cda13e1a1209254321 | Serial, EM DV TLS CA - G3C (eMudhra Inc)[1] | |
| SHA-256 | 9E39DE2881273ACC225A149C72BA3E0F51424963669AB633EE1DC7DF5DB067B4 | Certificate SHA-256, EM OV CS CA - G3B (eMudhra BV), CCADB A012306[1] | |
| Key hash | ec4ffa1ad0ac88081314b7aaffef6a91f97cd57291bb5ba686c5415f5eb4f6b6 | SPKI SHA-256 of the exposed key, EM OV CS CA - G3B (eMudhra BV)[1] | |
| Certificate serial | 7818933f8f85b4619a2b35fba83d0a | Serial, EM OV CS CA - G3B (eMudhra BV)[1] | |
| SHA-256 | 4B2460A466F95FD40113BCDCCA2CEB29B3B093921DE45474DA7DF48874C630B1 | Certificate SHA-256, EM OV CS CA - G3C (eMudhra Inc), CCADB A012298[1] | |
| Key hash | 92c063d67e8f14db71d288e11266ffdaf69cbf115f7bab14f3bc2f68d25e0e30 | SPKI SHA-256 of the exposed key, EM OV CS CA - G3C (eMudhra Inc)[1] | |
| Certificate serial | 544b7f922c31ae220a4a922916f6e6 | Serial, EM OV CS CA - G3C (eMudhra Inc)[1] | |
| SHA-256 | 579480AEA166290BD3C643589E795FC0D0E54E86505D180F1DFF99EFD3199512 | Certificate SHA-256, EM EV TLS CA - G3B (Sectigo cross-sign), CCADB A012333[1] | |
| Certificate serial | d8f8685e4f2bd9d82402a85a1c1eb731 | Serial, EM EV TLS CA - G3B (Sectigo cross-sign)[1] | |
| SHA-256 | 5F1DED4DD590AF74631290CF073B122A2AAC6A1FA479778A0BD43579BD832699 | Certificate SHA-256, EM OV TLS CA - G3B (Sectigo cross-sign), CCADB A012354[1] | |
| Certificate serial | e94223bde92f914e5ab9acabfdac3710 | Serial, EM OV TLS CA - G3B (Sectigo cross-sign)[1] | |
| SHA-256 | 45A883F349AEDFD5F3A649B5498FFB121712BA8B448F3F2A91DBC5A766FCDDBE | Certificate SHA-256, EM DV TLS CA - G3B (Sectigo cross-sign), CCADB A012347[1] | |
| Certificate serial | a024fdf4ba665c785ce4a020483858b7 | Serial, EM DV TLS CA - G3B (Sectigo cross-sign)[1] | |
| SHA-256 | FD9D5C2DBBD4995AB69B8D50C439D9527B00529199C2FD01B2174EB58F07021F | Certificate SHA-256, EM EV TLS CA - G3C (Sectigo cross-sign), CCADB A012334[1] | |
| Certificate serial | 05f078752dece7a1bb8595d303167171 | Serial, EM EV TLS CA - G3C (Sectigo cross-sign)[1] | |
| SHA-256 | 7485B51C0ED192878FA1D2F948FB529AE1842CC5086C4B67F7BE5B2039DE9489 | Certificate SHA-256, EM OV TLS CA - G3C (Sectigo cross-sign), CCADB A012343[1] | |
| Certificate serial | 8d5a4811939ef447d77111cdd9849ae9 | Serial, EM OV TLS CA - G3C (Sectigo cross-sign)[1] | |
| SHA-256 | 62B7F9868263F72F6911FC78CEAF72C1979158B7368BF648683BB2AA39B02E72 | Certificate SHA-256, EM DV TLS CA - G3C (Sectigo cross-sign), CCADB A012342[1] | |
| Certificate serial | 91f347f1a5b7d39962b95e0ee4e299d1 | Serial, EM DV TLS CA - G3C (Sectigo cross-sign)[1] | |
| SHA-256 | A496E23AC0CAB8155FC9B117B97EAE368EFCBB9041AEC8804D5A308D2D01C2D8 | Certificate SHA-256, EM OV CS CA - G3B (Sectigo cross-sign), CCADB A012352[1] | |
| Certificate serial | 41e32b73ac185d6ce0d7480bacf84e69 | Serial, EM OV CS CA - G3B (Sectigo cross-sign)[1] | |
| SHA-256 | 84112972B8E59D14560AE7E7119654474AAD119990CF3722BFC1E3B91615E1FD | Certificate SHA-256, EM OV CS CA - G3C (Sectigo cross-sign), CCADB A012350[1] | |
| Certificate serial | d6a5ef613b390f32ef9cdf349f772841 | Serial, EM OV CS CA - G3C (Sectigo cross-sign)[1] |
Sources
- openwall.com · eMudhra Intermediates Compromise
- bugzilla.mozilla.org · eMudhra: Private key compromise of Intermediate Certificates
- blog.cloudflare.com · 8 eMudhra certificates are compromised. Here's what you need to know
- emudhra.we-have-a-problem.com · eMudhra Intermediate CA Compromise
Changelog
- First published.