20th October 2026
The private keys of eight eMudhra intermediate CA certificates have been compromised. They chain to roots trusted by the Mozilla, Microsoft, Apple and Chrome root programs and by many downstream trust stores.
To demonstrate that the keys are compromised, the original reporter Wayne signed the following message with the private key of each of the eight intermediate CAs and reported it to the Root Program Teams on the 17th of October:
We have a problem here - Wayne
proof.zip contains the message, and for each intermediate the certificate, its public key and a signature on the message. To verify with OpenSSL:
openssl x509 -in EM-DV-TLS-CA-G3B.crt.pem -noout -pubkey | diff - EM-DV-TLS-CA-G3B.pub.pem openssl dgst -sha384 -verify EM-DV-TLS-CA-G3B.pub.pem -signature EM-DV-TLS-CA-G3B.sig message.txt
The root programs and many downstream trust stores have taken action to protect their users. The certificates have been blocked in Firefox and Chrome since the 17th of October, in Apple devices since the 19th and in Microsoft since the 20th.
The issue was responsibly disclosed to downstream trust stores on the 19th of October. Many have already released updates or are in the process of releasing updates.
An attacker with the private key of any of the compromised intermediate CAs could impersonate any website or service.
This has already been remediated by Mozilla, Microsoft, Apple, and Chrome for their users through their tools for distributing revocation information such as OneCRL, CRLite and CRLSets.
The CA has also revoked the compromised intermediate certificates. However, many other clients do not consume revocation information and require software updates to ensure they no longer trust the compromised intermediates.
| Intermediate CA | Chains to | Result |
|---|
Users should update their browsers and operating systems to the latest versions as soon as possible.
| Software | Patched version |
|---|---|
| Go | 1.27.3, 1.26.10 |
| Electron | 44.9.1, 43.8.1, 42.11.16 |
| Python certifi | 2026.10.19 |
| Rust rustls-webpki | 0.103.16 |
| Rust webpki-roots / webpki-root-certs | 1.0.10 |
| Homebrew ca-certificates | 2026-09-25_1 |
| Node.js | pending |
| Composer ca-bundle | pending |
| NSS | 3.131.1 |
Add more at github.com/galadran/we-have-a-problem.com.
Until a distribution ships an updated ca-certificates package, expert users can distrust the affected roots in the system trust store. This is NOT recommended for ordinary users.
On Debian and Ubuntu, run as root:
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-certificates
On Alpine, run as root:
apk add ca-certificates && sed -i -e 's|^mozilla/emSign_ECC_Root_CA_-_G3.crt|!&|' \ /etc/ca-certificates.conf && update-ca-certificates
On Fedora, RHEL, CentOS Stream, Rocky Linux, AlmaLinux and Amazon Linux 2023, run as root:
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-trust
On openSUSE and SLES, run as root:
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-certificates
On Arch Linux, run as root:
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-trust
On NixOS, add to your configuration:
security.pki.caCertificateBlacklist = [ "Comodo AAA Services root" "emSign ECC Root CA - G3" "emSign Root CA - C1" "emSign ECC Root CA - C3" ];
Please see this thread in Mozilla's dev-security-policy forum.
impacted-intermediates.json lists the eight intermediates and their Sectigo cross-signs. roots.json lists the roots they chain to.
Site published by Dennis Jackson. The source is on GitHub and PRs are welcome.