HomeServicesManaged IT ServicesAI DeploymentInsightsAnswersAboutFree Consultation
Certificates & Trust

eMudhra CA Key Compromise: What IT Admins Should Do

Eight intermediate certificate authorities run by eMudhra, under its emSign brand, were created with private keys so small that anyone could recover them. One of them was the number 4. With a CA's private key, an attacker who can intercept traffic can mint a certificate for any website, and anything that still trusts that CA will accept it. Browsers moved fast. Many other tools did not, and some will keep trusting the bad CAs even after the operating system is updated.

Short answer: Keep Windows, Edge and Chrome updated and make sure Windows can download Microsoft's disallowed certificate list. Upgrade pip to 26.2.2+, certifi to 2026.10.19+ and uv to 0.13.4+ everywhere Python runs, rebuild container images, and update Node.js, Go and Java runtimes. Intune admins can push the bad certificates to the Untrusted store as an extra guard.

What happened

  • The eight intermediates (six for TLS and two for code signing) used P-384 keys whose private value was below 256, so the keys could be brute-forced almost instantly. The keys were created in April 2025, reported on October 17, 2026, and revoked by eMudhra on October 18.
  • Chrome blocked them on October 17 and Android on October 19. Google is removing the parent emSign ECC Root CA - G3 from the Chrome Root Store on October 27.
  • Mozilla blocked the intermediates and removed the G3 root from Firefox's trust store on October 20.
  • Sectigo had cross-signed copies of these CAs under its widely trusted AAA Certificate Services root; it revoked them.
  • There is no public evidence the keys were misused before disclosure. Since then, researchers have logged a large number of test certificates signed with the leaked keys, which shows how easy they are to use.

Who is still exposed

SystemStatusWhat to do
Chrome, Edge, FirefoxBlocked through browser updates and block listsKeep browsers on automatic updates
WindowsCurrent copies of Microsoft's disallowed list block the eight intermediates; the G3 root is still trustedMake sure the disallowed list updates; consider an Intune Untrusted profile
Python (pip, certifi, uv)Old versions keep trusting the bad CAs regardless of the OSpip 26.2.2+, certifi 2026.10.19+, uv 0.13.4+
Docker imagesKeep whatever trust store they were built withRebuild on updated base images
Node.js, Go, Java and appliancesMany ship their own CA bundleInstall vendor updates; ask appliance vendors

Windows: check the disallowed list is updating

Windows downloads Microsoft's trusted and untrusted certificate lists from Windows Update on its own, roughly daily. On a test machine synced on October 22, the disallowed list blocked all eight compromised intermediates. Microsoft has not published a notice or KB article about the incident, and as of October 22 the parent emSign ECC Root CA - G3 was still trusted by Windows.

Check when a machine last synced the disallowed list:

certutil -verifyctl Disallowed | findstr /i "lastsynctime"

Make sure no Group Policy or registry setting has turned off automatic updates of the disallowed list (EnableDisallowedCertAutoUpdate) or root list (DisableRootAutoUpdate). For machines without internet access, Microsoft documents how to stage the lists on a file share with Certutil -syncWithWU and point clients at it.

To see whether any emSign or eMudhra certificates are installed in the machine stores:

Get-ChildItem Cert:\LocalMachine\Root, Cert:\LocalMachine\AuthRoot, Cert:\LocalMachine\CA |
  Where-Object { $_.Subject -match 'emSign|eMudhra' -or $_.Issuer -match 'emSign|eMudhra' } |
  Select-Object PSParentPath, Thumbprint, Subject

Seeing an emSign root here is not a sign of compromise by itself. Windows still trusts several emSign roots. What matters is that the eight intermediates are blocked.

Intune: push the bad certificates to Untrusted

The built-in Intune trusted certificate profile only installs to Root or Intermediate stores; it has no Untrusted option. To explicitly distrust a certificate on Windows 10 version 1803 or later (Pro and up), use a Custom (OMA-URI) profile with the RootCATrustedCertificates CSP, which Microsoft describes as the way to "immediately flag certificates that have been compromised":

  1. In the Intune admin center, go to Devices > Configuration > Create > New policy, platform Windows 10 and later, profile type Templates > Custom.
  2. Add one OMA-URI setting per certificate: ./Device/Vendor/MSFT/RootCATrustedCertificates/UntrustedCertificates/{SHA1 thumbprint}/EncodedCertificate, data type Base64 (file) or string, value set to the certificate's base64 DER encoding on one line.
  3. Assign to a pilot group, confirm the certificates appear under Untrusted Certificates in certlm.msc, then assign broadly.

Download the certificates from the CCADB or crt.sh by the SHA-256 fingerprints in the table below, and check the SHA-1 thumbprint of each file before you use it.

CertificateTypeSHA-256 fingerprint
EM EV TLS CA - G3BTLSE7568FE6E12331F4FD7DE61DA4C7559D0F8EB192A218D4741A3BA75184333838
EM OV TLS CA - G3BTLS98B896625C0C230ADEEC3EB2CF6AAD5001ECF9156A68644E82374CE5833BC25B
EM DV TLS CA - G3BTLS42C4ACCD12C4F59597925E1A08A7A90102608543809308D50EC427E118BA1493
EM EV TLS CA - G3CTLS432EC25F0D28DE9006D97BF752F17BBB2CD41F669933FCB072D9A1148D0261F3
EM OV TLS CA - G3CTLSCB6E15165AC802E9B3F993F16C25D41F4E81C21EBDE71AE1B012AC00BF9C7C3F
EM DV TLS CA - G3CTLS0164D7CEAE5BB909C272AF151FF44B1177AE9B47D9424B94F1D9558C30934D19
EM OV CS CA - G3BCode signing9E39DE2881273ACC225A149C72BA3E0F51424963669AB633EE1DC7DF5DB067B4
EM OV CS CA - G3CCode signing4B2460A466F95FD40113BCDCCA2CEB29B3B093921DE45474DA7DF48874C630B1

The two code-signing CAs matter on Windows: software signed by them would otherwise look legitimate. eMudhra says they issued nothing, but that cannot be checked independently.

Python: why the OS update is not enough

The Python Software Foundation's security team published guidance on October 20. pip always loads its own bundled copy of certifi on top of the system store, and that cannot be switched off. So a pip older than 26.2.2 keeps trusting the bad CAs on a fully patched machine.

ToolMinimum safe version
pip26.2.2
certifi2026.10.19 (2026.10.18 is patched; .19 restores unaffected emSign roots)
uv0.13.4 (0.13.5 also rejects chains containing the bad keys)
Python installers3.15.1, 3.14.9, 3.13.17 bundle the fixed pip and certifi
python -m pip install --upgrade "pip>=26.2.2" "certifi>=2026.10.19"
uv self update

Run the pip upgrade inside every virtual environment, not only the system Python. Official Docker python images were rebuilt for 3.13, 3.14 and 3.15; the 3.11 and 3.12 images still ship an older pip, so upgrade pip in your Dockerfile and rebuild. Existing containers keep their old trust store until you rebuild and redeploy them.

Everything else that carries its own trust store

  • Node.js and Go: both ship or embed CA data in some builds. Install the vendors' current releases and rebuild applications that bundle a runtime.
  • Java: update the JDK or JRE, or remove the emSign entries from custom cacerts files.
  • Appliances and line-of-business software: firewalls with TLS inspection, proxies, printers and older apps often have their own CA list. Ask vendors whether they have removed the eMudhra CAs.

How to verify

  1. certutil -verifyctl Disallowed | findstr /i "lastsynctime" shows a sync date of October 18, 2026 or later on your Windows fleet.
  2. python -m pip --version reports 26.2.2 or later in each environment.
  3. Container images in use were built after October 20, 2026.
  4. If you deployed the Intune profile, the eight certificates appear under Untrusted Certificates on a pilot device.

Frequently asked questions

Do I need to do anything on Windows? Mostly no, if Windows can reach Windows Update and automatic list updates are on. Microsoft's disallowed list blocks the eight intermediates. Microsoft has not published a notice, and the G3 root was still trusted on October 22.

Why does updating the operating system not fix Python? pip always loads its own bundled certifi. Upgrade pip, certifi and uv in every environment and image.

Were the leaked keys used to attack anyone? No public evidence of misuse before disclosure. After disclosure, test certificates signed with the keys appeared quickly, so assume anything still trusting these CAs can be fooled.

Does this affect Microsoft 365? Microsoft has not said so, and Microsoft 365 does not use eMudhra certificates. The risk is on devices and tools that still trust the bad CAs.

Related

This was one of many incidents this month. See our Black October checklist for Microsoft 365 businesses, and Intune consulting if you want help with certificate profiles.

Want this checked across your devices?

Accred can confirm Windows trust-list updates, deploy an Intune Untrusted certificate profile and review developer machines and images. Hourly work is $125/hour.

Ask about a certificate trust check