//security advisory
eMudhra Intermediate CA Private Key Compromise
Anyone can recover the private keys of eight eMudhra intermediate certificate authorities. Browsers are already protected. Servers, containers and tools that keep their own list of trusted certificates need an update.
On this page
Are you affected?
Find the row that describes you. Most organisations only need to install updates.
You use a mainstream browser
Chrome, Firefox, Safari, Edge
ProtectedKeep the browser and operating system updated. Firefox and Chrome blocked the intermediates within hours of the report.
You run servers, containers, CI or command-line tools
Anything with its own trust store: Go, Node.js, Python, Rust, curl, appliances
Update neededUpdate the system trust store and your runtimes, then rebuild images. Find your fixed version
Your TLS certificates come from eMudhra
Chaining to emSign ECC Root CA - G3
Act nowReissue under a different chain or CA. Mozilla and Chrome are removing trust in this root. Details
You verify code signed through eMudhra
The two code-signing intermediates
Low riskeMudhra states they never issued a certificate. Treat any signature that chains through them as untrusted.
What to do
For most teams this is a patching exercise. Work through these in order.
Update browsers and operating systems
Firefox users on standard settings were protected on 17 October without updating; the 20 October releases cover users who had disabled remote blocklist updates.Update the system trust store, then rebuild images
Install the latestca-certificatespackage on servers and rebuild container images on updated base images. An image built before the fix keeps the old trust store until it is rebuilt.Update runtimes and libraries that bring their own trust store
Go, Node.js, Python certifi, Rust webpki-roots and others ship their own root bundle or certificate verifier. Check each against the patched versions.Confirm the root is gone
Run the offline trust store check against each bundle you rely on.
If you are an eMudhra TLS customer
If any of your certificates chain to emSign ECC Root CA - G3, reissue them now under a different chain or a different CA. eMudhra estimates about 30,000 certificates need migrating, about 97% of them issued through ACME, and says it is moving subscribers to its RSA root, emSign Root CA - G1, which Mozilla is not removing at this time.
Code signing
The two code-signing intermediates were trusted only by Microsoft. eMudhra states they never issued a certificate. Treat any binary whose signature chains through either of them as untrusted.
Patched versions
Versions that remove the distrusted root or block the compromised intermediates, as of 21 October 2026. Every row links to the project’s own advisory, changelog or commit, and any newer version also contains the fix.
Operating systems and package managers
| Software | Fixed in | Source |
|---|---|---|
| Ubuntu 22.04, 24.04, 26.04, 26.10 (ca-certificates) | 20260816ubuntu0.22.04.1, 20260816ubuntu0.24.04.1, 20260816ubuntu0.26.04.1, 20260816ubuntu0.26.10.1 | USN-8944-1 |
| Ubuntu 14.04 to 20.04 ESM (ca-certificates)Also removes Comodo AAA Services root. | 20230311~14.04.1~esm3, 202402031~16.04.1~esm3, 202402031ubuntu0.18.04.1+esm3, 20240203~20.04.1ubuntu0.1~esm2 | USN-8944-2 |
| Debian 12 bookworm (ca-certificates) | 20250419~deb12u2 | DLA-4845-1 |
| Debian 13 trixie (ca-certificates) | 20250419+deb13u1 | DSA-6572 |
| Debian unstable (ca-certificates)Not yet in testing. No fix for Debian 11 bullseye. | 20260816+nmu1 | Debian changelog |
| Fedora (ca-certificates)Stable on Rawhide only. Fedora 43 to 45 updates are still in testing. | 2026.2.92_v9.0.319 | Fedora package spec |
| Arch Linux (ca-certificates-mozilla) | 3.131.1-1 | Arch package |
| Alpine Linux (ca-certificates)Available on 3.22 and later stable branches. | 20261020-r0 | aports commit |
| Gentoo (app-misc/ca-certificates) | 20260816.3.125 or later | Gentoo bug 984601 |
| FreeBSD ports (security/ca_root_nss)Covers the ports package, not the base system trust store. | 3.131.1 | ports commit |
| Homebrew (ca-certificates) | 2026-09-25_1 or later | homebrew-core #319674 |
Languages, runtimes and libraries
| Software | Fixed in | Source |
|---|---|---|
| NSS | 3.131.1 | NSS commit |
| curl CA bundle (cacert.pem) | 2026-10-20 | curl CA extract |
| Cloudflare cfssl_trust | 2026.10.1 | cfssl_trust #411 |
| GoGO-2026-6809, CVE-2026-111943. | 1.27.3, 1.26.10 | Go issue 82345 |
| Node.js | 26.12.1, 24.22.1, 22.23.4 | Node.js #66871 |
| Electron | 44.9.1, 43.8.1, 42.11.16 | Electron #55126 |
| BunFixed on main after 1.4.3. | Not yet released | Bun #46300 |
| Python certifi | 2026.10.19 | certifi #440 |
| pip | 26.2.2 | pip changelog |
| uv | 0.13.4 | uv #22760 |
| Rust rustls-webpki | 0.103.16 | webpki #546 |
| Rust webpki-roots, webpki-root-certs | 1.0.10 | webpki-roots #133 |
| PHP composer/ca-bundle | 1.4.16, 1.6.0 | ca-bundle 1.6.0 |
| Elixir castore | 1.0.22 | castore #90 |
| Perl Mozilla::CA | 20261020 | Mozilla::CA changes |
If your software is not listed, check its release notes before assuming it is affected or fixed. The fixes take two forms: Go, rustls-webpki and Electron block the eight compromised intermediates directly, Node.js does that and also updates its root store, and every root bundle above drops emSign ECC Root CA - G3. The curl bundle of 20 October also drops emSign Root CA - C1 and emSign ECC Root CA - C3, which Python certifi and Perl Mozilla::CA keep. Some updates, such as Debian’s, also remove AAA Certificate Services to cut off the Sectigo cross-signed path.
Check a trust store offline
Works on any PEM bundle without contacting a test server. No output means the bundle has been updated.
# Prints a line if the bundle still trusts the distrusted root.
# No output means the bundle has been updated.
openssl storeutl -noout -text -certs /path/to/ca-bundle.pem \
| grep -E "CN ?= ?emSign ECC Root CA - G3"| Platform | Bundle path |
|---|---|
| Debian, Ubuntu, Alpine | /etc/ssl/certs/ca-certificates.crt |
| Fedora, RHEL | /etc/pki/tls/certs/ca-bundle.crt |
| Python certifi | The path printed by python3 -m certifi |
This check covers the root removal. It does not tell you whether a client honours the intermediate revocations, so a bundle that passes still needs the client software itself to be current.
Workarounds until an update ships
Install the vendor update where one exists. Where it does not yet, administrators can distrust the affected roots in the system trust store with these commands, run as root. They are not needed on systems that already have a patched version.
macOS command-line toolsTested by Konfirmity
sudo cp /etc/ssl/cert.pem /etc/ssl/cert.pem.bak &&
awk '/^(###|===) /{skip=0}
/^=== .*\/CN=(AAA Certificate Services|emSign ECC Root CA - G3)$/{skip=1}
!skip' /etc/ssl/cert.pem.bak | sudo tee /etc/ssl/cert.pem > /dev/nullTested on macOS against /etc/ssl/cert.pem: removes exactly the two roots and keeps a backup. A later macOS update may restore the file.
Debian, Ubuntu and AlpineTested by Konfirmity
sed -i \
-e 's|^mozilla/emSign_ECC_Root_CA_-_G3.crt|!&|' \
-e 's|^mozilla/Comodo_AAA_Services_root.crt|!&|' \
/etc/ca-certificates.conf && update-ca-certificatesTested on Debian 12, Ubuntu 22.04 and Alpine 3.18 with pre-fix packages. On Alpine, install ca-certificates first if only ca-certificates-bundle is present.
Fedora, RHEL, CentOS Stream, Rocky Linux, AlmaLinux and Amazon Linux 2023Tested by Konfirmity
d=/etc/pki/ca-trust/source/blocklist; [ -d $d ] || d=/etc/pki/ca-trust/source/blacklist
trust extract --overwrite --format=pem-bundle \
--filter='pkcs11:object=Comodo%20AAA%20Services%20root;type=cert' \
$d/Comodo_AAA_Services_root.pem &&
trust extract --overwrite --format=pem-bundle \
--filter='pkcs11:object=emSign%20ECC%20Root%20CA%20-%20G3;type=cert' \
$d/emSign_ECC_Root_CA_-_G3.pem &&
update-ca-trustTested on Fedora 42.
openSUSE and SLESTested by Konfirmity
d=/etc/pki/trust/blocklist; [ -d $d ] || d=/etc/pki/trust/blacklist
trust extract --format=pem-bundle \
--filter='pkcs11:object=Comodo%20AAA%20Services%20root;type=cert' \
$d/Comodo_AAA_Services_root.pem &&
trust extract --format=pem-bundle \
--filter='pkcs11:object=emSign%20ECC%20Root%20CA%20-%20G3;type=cert' \
$d/emSign_ECC_Root_CA_-_G3.pem &&
update-ca-certificatesTested on openSUSE Leap 15.6.
Arch LinuxTested by Konfirmity
trust extract --format=pem-bundle \
--filter='pkcs11:object=emSign%20ECC%20Root%20CA%20-%20G3;type=cert' \
/etc/ca-certificates/trust-source/blocklist/emSign_ECC_Root_CA_-_G3.pem &&
update-ca-trustTested on the current archlinux image.
NixOSNot tested by us
security.pki.caCertificateBlacklist = [
"Comodo AAA Services root"
"emSign ECC Root CA - G3"
];Not run by us. The option is documented in the NixOS security.pki module.
In our tests, removing AAA Certificate Services did not break connections to current Sectigo-issued sites, because their chains also lead to the USERTrust roots. Older clients that lack those roots could still be affected, so test before rolling the change out widely. For FreeBSD, NetBSD and other platforms, follow your vendor’s guidance; we have not tested a workaround for them.
What happened
The private keys of eight intermediate certificate authorities operated by eMudhra can be recovered by anyone from the public certificates alone. Six of the intermediates are for TLS and were trusted by the Apple, Google Chrome, Microsoft and Mozilla root programs. The other two are for code signing and were trusted by Microsoft.
Anyone holding one of the TLS keys could issue a certificate for any domain that a client trusting the chain would accept, which enables interception of TLS traffic. Mainstream browsers were protected within hours of the report. The remaining exposure is software that carries its own trust store and does not check revocation: language runtimes, command-line tools, container images, appliances and embedded devices.
Separately, Mozilla and Chrome are removing trust in the root these intermediates chain to, emSign ECC Root CA - G3. Every certificate issued under that root, including ones unrelated to the compromised keys, will stop working in those clients and has to be reissued under a different chain.
Cause
A P-384 private key should be a random number of roughly 384 bits. According to Mozilla’s analysis, each of the eight affected keys was a number below 256, so all of them can be found by trying 256 candidates. The keys came from a batch of 24 intermediates generated on 30 April 2025; the affected ones are all of the P-384 keys in the B and C series. Mozilla reported that it could not recover the P-384 keys in the other series, and had not yet examined the RSA keys.
eMudhra states that the keys were generated on FIPS 140-2 Level 3 hardware security modules, and that a wrap and unwrap step in the ceremony produced a second, weak set of keys that were then published in place of the strong ones. eMudhra has said it has not yet confirmed the root cause.
Timeline
All times are UTC and taken from Mozilla’s incident record unless the source says otherwise. eMudhra’s own statement gives later dates, which appear to be in India time and rounded.
- 2025-04-30
2025-04-30
The eight intermediates are created in an eMudhra key generation ceremony.
- 2026-10-17
2026-10-17 · 18:05 UTC
An independent researcher reports recovered private keys to Apple, Google, Microsoft, Mozilla and eMudhra, with signed proof for each key.
2026-10-17 · 21:48 UTC
Mozilla independently recovers the private keys, confirming the flaw.
2026-10-17 · 22:46 UTC
Chrome's CRLSet lists the six TLS intermediates as revoked (as observed by the reporter).
2026-10-17 · 22:59 UTC
Firefox's OneCRL blocklist update completes for all users on standard configurations.
- 2026-10-18
2026-10-18 · 09:24 to 09:38 UTC
eMudhra revokes all eight intermediates with reason cACompromise.
- 2026-10-19
2026-10-19 · 14:55 UTC
Sectigo completes revocation of the eight certificates it had cross-signed for the same keys.
- 2026-10-20
2026-10-20
Mozilla ships Firefox 158.0.1, Firefox ESR 115.43.1 and 153.5.1, and NSS 3.131.1, which removes the affected root.
2026-10-20 · 13:06 UTC
Mozilla announces emergency removal of trust in emSign ECC Root CA - G3. Chrome commits to the same path at 14:36.
2026-10-20 · 16:27 UTC
eMudhra confirms it has stopped issuing from every intermediate under emSign ECC Root CA - G3.
Affected certificates
Identify certificates by SHA-256 fingerprint rather than by name: names can be reused, fingerprints cannot. Each fingerprint links to its entry in the crt.sh Certificate Transparency search.
| Intermediate | Purpose | Issuer | SHA-256 fingerprint |
|---|---|---|---|
| EM EV TLS CA - G3B | TLS | emSign Root TLS CA - G3 | E7568FE6E12331F4FD7DE61DA4C7559D0F8EB192A218D4741A3BA75184333838 |
| EM OV TLS CA - G3B | TLS | emSign Root TLS CA - G3 | 98B896625C0C230ADEEC3EB2CF6AAD5001ECF9156A68644E82374CE5833BC25B |
| EM DV TLS CA - G3B | TLS | emSign Root TLS CA - G3 | 42C4ACCD12C4F59597925E1A08A7A90102608543809308D50EC427E118BA1493 |
| EM EV TLS CA - G3C | TLS | emSign Root TLS CA - G3 | 432EC25F0D28DE9006D97BF752F17BBB2CD41F669933FCB072D9A1148D0261F3 |
| EM OV TLS CA - G3C | TLS | emSign Root TLS CA - G3 | CB6E15165AC802E9B3F993F16C25D41F4E81C21EBDE71AE1B012AC00BF9C7C3F |
| EM DV TLS CA - G3C | TLS | emSign Root TLS CA - G3 | 0164D7CEAE5BB909C272AF151FF44B1177AE9B47D9424B94F1D9558C30934D19 |
| EM OV CS CA - G3B | Code signing | emSign Root CS CA - G3 | 9E39DE2881273ACC225A149C72BA3E0F51424963669AB633EE1DC7DF5DB067B4 |
| EM OV CS CA - G3C | Code signing | emSign Root CS CA - G3 | 4B2460A466F95FD40113BCDCCA2CEB29B3B093921DE45474DA7DF48874C630B1 |
The same eight keys were also cross-signed by Sectigo under AAA Certificate Services, a root that Chrome and Mozilla no longer trust but Apple and Microsoft still do. Sectigo revoked those eight cross-certificates on 19 October. Their fingerprints are listed in comment 2 of the Mozilla incident record.
Where the accounts differ
The CA and Mozilla describe the exposure differently. Both accounts are summarised here with their sources.
eMudhra says
Press release, 21 October 2026
- Seven of the eight intermediates were never used in production.
- The one that was in production had not issued any certificates.
- Its infrastructure was not breached.
Mozilla says
- The keys were trivially recoverable from April 2025 onwards.
- Multiple people have now recovered them independently, some publicly.
Both can be true: unused intermediates still had valid keys that anyone could have used to sign certificates. Nobody has published evidence that this happened, and nobody can rule it out for clients that do not enforce Certificate Transparency.
Recording it for compliance
For most organisations this is a third-party vulnerability, not an incident on their own systems. It is still worth a dated record, because an auditor will ask how you learned of it and what you did.
| Framework | Control | What to record |
|---|---|---|
| ISO 27001:2022 | A.5.25 | Assessment and decision on information security events. Log your assessment here. |
| ISO 27001:2022 | A.8.8 | Management of technical vulnerabilities. Record the remediation. |
| ISO 27001:2022 | A.5.22 | Monitoring, review and change management of supplier services, if eMudhra is one of your suppliers. |
| SOC 2 | CC7.1 | Identifying newly discovered vulnerabilities. |
| SOC 2 | CC7.3 | Evaluating security events. |
| SOC 2 | CC9.2 | Vendor risk, if eMudhra is a vendor. |
Evidence to keep: the date you assessed it, the systems and images you checked, the package versions before and after, and any certificates you reissued.
Sources
- Mozilla Bugzilla 2083449The incident record, including the certificate list, timeline and eMudhra’s responses.
- Mozilla Security Blog, 20 October 2026Firefox and NSS releases.
- Chrome Root Program on dev-security-policyChrome’s plan for the root.
- eMudhra press release, 21 October 2026The CA’s account of the cause and scope.
- oss-security mailing listDistribution and open-source coordination.