1. Home
  2. Insights
  3. Web Development

eMudhra CA Compromise (CVE-2026-111943): 10 Fixes for Developers

Eight eMudhra intermediate CA keys could be recovered from public certificates. Browsers are protected; this is what developers must still update, with fixed versions and 10 steps.

Abstract cover illustration for our eMudhra CA compromise guide, with the headline and short facts about the eight exposed intermediate keys and the fixed runtime versions.
Illustration: Apex Logic
On this page
  1. eMudhra CA compromise at a glance
  2. What happened to eMudhra's certificates?
  3. Who is at risk from the eMudhra intermediates?
  4. Which versions fix the eMudhra certificates?
  5. The 10-step eMudhra fix checklist
  6. What if my website uses an eMudhra certificate?
  7. eMudhra CA compromise FAQ

Quick answer

The eMudhra CA compromise is an incident in which the private keys of eight eMudhra intermediate certificate authorities were generated so weakly that anyone could recover them and forge a trusted certificate for any website. Chrome, Firefox, Microsoft and Apple blocked them between 17 and 22 October 2026, but curl, Python, Node.js, Go, Java and container images need updated trust stores. Update the OS ca-certificates package and your runtimes, rebuild images and Go binaries, then confirm with the public test hosts.

  • Eight eMudhra intermediate CA keys were recoverable from public certificates
  • Chrome, Firefox, Microsoft and Apple blocked them from 17 to 22 October
  • Fixed in Go 1.27.3, Node.js 24.22.1, Python 3.14.9 and certifi 2026.10.19
  • Chrome drops the emSign ECC Root CA - G3 on 27 October 2026

Updated 23 October 2026. Browsers blocked eight compromised eMudhra intermediate certificates between 17 and 22 October, and Linux distributions, Go, Node.js, Python and Java have now shipped trust store fixes; this checklist covers what developers and site owners still need to do.

The eMudhra CA compromise is a certificate authority incident in which the private keys of eight eMudhra intermediate CA certificates were generated so weakly that anyone could recover them from the public certificates. With one of those keys, an attacker could issue a certificate for any website, and any client that still trusts the intermediates would accept it. Chrome and Firefox blocked them on 17 October 2026, Microsoft platforms on 20 October and Apple products on 22 October, so up-to-date browsers are protected.

The remaining risk sits outside the browser: curl, Python, Node.js, Go, Java and container images trust a CA bundle on disk and rarely check revocation. Update the OS ca-certificates package and each runtime to the versions below, rebuild images and Go binaries, then confirm with the public test hosts. If your own site's certificate chains to emSign ECC Root CA - G3, replace it before Chrome removes that root on 27 October 2026.

eMudhra CA compromise at a glance

QuestionAnswer, as of 23 October 2026
What was exposedPrivate keys of eight eMudhra intermediate CAs (six for TLS, two for code signing), created in April 2025
CVE numbersCVE-2026-111943 (Go; Red Hat's headline ID), CVE-2026-91403 (OpenJDK), CVE-2026-114406 (RHEL), CVE-2026-113812 (Perl Mozilla::CA)
BrowsersBlocked in Chrome and Firefox since 17 October, on Microsoft platforms since 20 October, on Apple products since 22 October
Root being removedemSign ECC Root CA - G3: gone from NSS 3.131.1 and Ubuntu's update, and from the Chrome Root Store on 27 October 2026
Still at riskNon-browser clients with an old CA bundle, from curl and runtimes to containers and IoT devices
Known attacksNone confirmed; the researchers cannot rule out attacks on non-browser clients
Quick testcurl https://dv-g3b-emudhra.we-have-a-problem.com/ should fail with a certificate error

What happened to eMudhra's certificates?

eMudhra is an Indian certificate authority. On 30 April 2025 it created eight intermediate CAs under its emSign ECC root, which Sectigo cross-signed under its AAA Certificate Services root in May 2025. eMudhra says a wrap and unwrap step in that key ceremony produced a second, weak set of keys, and the weak keys were the ones published. Scott Helme found that each private key was a single byte, such as 4, 56 or 115, and recovered all eight in under a second.

  • 17 October: a researcher reports the keys to the browser root programs. Chrome pushes a CRLSet block at 19:45 UTC; Mozilla's OneCRL block reaches Firefox users by 22:59 UTC.
  • 18 October: eMudhra revokes all eight intermediates.
  • 19 October: Android gets an equivalent block through Google Play services.
  • 20 October: NSS 3.131.1, Firefox 158.0.1, Go 1.27.3 and Ubuntu's fixed packages ship; Microsoft platforms start blocking.
  • 21 October: Node.js, Python and OpenJDK release fixes; Red Hat publishes RHSB-2026-012.
  • 22 October: Apple blocks the certificates, Docker Desktop 4.96.2 ships, and eMudhra says it will leave the global SSL/TLS business.
  • 27 October: Chrome removes emSign ECC Root CA - G3 from its root store.

Who is at risk from the eMudhra intermediates?

Browsers are in good shape. Chrome, Firefox and Safari require Certificate Transparency, Google says no certificates from these intermediates were logged before the blocks, and the researchers' tracker says CT-enforcing browsers could not have been attacked. The exposure is in software that trusts a plain CA bundle:

  • Command-line tools and SDKs. In Helme's test, unpatched curl, Python and Node.js accepted a forged certificate for api.stripe.com.
  • CI/CD pipelines, curl | sh installers and server-to-server API calls that carry cloud keys and other secrets.
  • Container images built before the fixes.
  • IoT, embedded and OT devices with frozen trust stores, which Helme warns will trust the intermediates until they expire in July 2039.
  • Windows code signing, since two of the eight were code-signing CAs and Helme notes that Windows trusts the eMudhra code-signing root directly.

Which versions fix the eMudhra certificates?

ComponentFixed versionNotes
Ubuntu ca-certificates20260816ubuntu0.24.04.1 on 24.04; same pattern on 22.04, 26.04 and 26.10Removes emSign ECC Root CA - G3
Debian ca-certificates20250419~deb12u2 (bookworm), 20250419+deb13u1 (trixie)Debian security tracker
RHEL 6 to 10Errata still pending at Red Hat's 22 October updateWatch bulletin RHSB-2026-012
Fedora, Alpine2026.2.92_v9.0.319; 20261020-r0Listed by the community tracker
Go1.27.3, 1.26.10Rebuild every Go binary
Node.js26.12.1, 24.22.1, 22.23.4Bundled roots updated to NSS 3.131.1
Python3.15.1, 3.14.9, 3.13.17Bundled pip 26.2.2 with certifi 2026.10.19
Python packagescertifi 2026.10.19, pip 26.2.2, uv 0.13.4, conda 26.9.4Update inside every virtual environment
OpenJDK (CVE-2026-91403)Affected: 27.0.1, 25.0.5, 21.0.13, 17.0.21, 11.0.32.1, 8u504 and earlierUpdate, or install the blocked.certs file
Firefox and NSSFirefox 158.0.1, ESR 153.5.1, ESR 115.43.1; NSS 3.131.1OneCRL already protects default setups
Docker Desktop4.96.2Fix rolling out across components
Rust, Bun, Denowebpki-roots 1.0.10, Bun 1.4.4, Deno 2.9.8Listed by the community tracker

The tracker also lists Electron, Homebrew and rustup fixes, and pending ones such as Composer's ca-bundle for PHP.

The 10-step eMudhra fix checklist

1. Update the operating system trust store

Most Linux tools read the system bundle, so start there. On Debian and Ubuntu:

sudo apt update
sudo apt install --only-upgrade ca-certificates
dpkg -s ca-certificates | grep Version

On Alpine, run apk upgrade ca-certificates; on Fedora, sudo dnf upgrade ca-certificates. Red Hat had not published RHEL errata at its 22 October update; check rpm -q ca-certificates, and if you cannot wait, its bulletin links a procedure that blocks the two roots the intermediates chain to. The researchers say manual distrust is for expert users, so test it on one machine first.

2. Update Python's CA bundle in every environment

pip and many Python HTTP libraries, including requests, use certifi's bundle rather than the system store. The Python team asks you to upgrade pip and uv in every virtual environment, starting with a hash-pinned pip so the download cannot be tampered with:

python -m pip install "pip @ https://files.pythonhosted.org/packages/3f/06/3e4420302363fbb71be3c7f35ce042f54bfca330e3e66b3a2e3c4cca579f/pip-26.2.2-py3-none-any.whl#sha256=fd7f4dfa8190e014013b9f08f3e973f4e4c26ffd179a204895533a7254813a70"
python -m pip install --upgrade certifi uv
python -c "import certifi; print(certifi.__version__)"

Expect 2026.10.19 or later. The Python 3.15.1, 3.14.9 and 3.13.17 installers bundle the fixed pip; for a python.org install on macOS, use the framework paths in the Python release post.

3. Move Node.js to 26.12.1, 24.22.1 or 22.23.4

Node.js ships its own copy of Mozilla's root list inside the binary, so an OS update does not change what a default Node process trusts. The 21 October security releases updated those roots to NSS 3.131.1, and they also fixed the Brotli bug in our Node.js October security release guide. Check node -v on servers and in CI images.

4. Rebuild Go programs with Go 1.27.3 or 1.26.10

Go 1.27.3 and 1.26.10, released on 20 October, make crypto/x509 filter out chains that contain the blocked intermediates. The fix is compiled into each program, so rebuild and redeploy every Go service and tool you build. To see which Go version built a binary:

go version ./bin/your-service

5. Patch Java runtimes

The OpenJDK advisory for CVE-2026-91403 lists 27.0.1, 25.0.5, 21.0.13, 17.0.21, 11.0.32.1, 8u504 and earlier as affected. A JDK packaged by Debian, Ubuntu, RHEL, Fedora, Arch, Gentoo or Oracle Linux uses the OS certificates, so step 1 covers it. Standalone JDKs, and the FreeBSD and Homebrew packages, must be updated directly. Until then, OpenJDK suggests replacing the JDK's lib/security/blocked.certs with the file it publishes, or turning on revocation checks:

java -Dcom.sun.net.ssl.checkRevocation=true -Dcom.sun.security.enableCRLDP=true -jar app.jar

6. Rebuild container images without the cache

A container keeps the CA bundle it was built with. The Python security team recommends rebuilding images with layer caching disabled:

docker build --pull --no-cache -t your-app:latest .

The base image must already contain the fixed package, so check its date or add an apt-get install --only-upgrade ca-certificates step to the Dockerfile. Then redeploy, because running containers do not change.

7. Update desktop tools, including macOS command-line tools

Install Docker Desktop 4.96.2 or later; Docker says it removes trust in the compromised intermediates for the Docker CLI and daemon, and is rolling the fix out across components in batches. On macOS, Apple blocks the intermediates, but the tracker notes that the built-in curl, git, python3, perl, ruby and openssl read /etc/ssl/cert.pem, which had not been updated when it last checked; it gives a command that removes the two affected roots after taking a backup. For Homebrew tools, run brew upgrade ca-certificates.

8. Test each client against the eMudhra test hosts

The researchers run test sites signed by a compromised intermediate, including one chain through the Sectigo cross-sign. After you patch, these should fail with a certificate error:

curl https://dv-g3b-emudhra.we-have-a-problem.com/
curl https://dv-g3b-aaa-emudhra.we-have-a-problem.com/
python -c "import requests; requests.get('https://dv-g3b-emudhra.we-have-a-problem.com/')"

A normal response, or no error from the Python line, means that client still trusts the compromised intermediates. Run the tests on servers, CI runners and inside containers, not only on your laptop. Two more hosts with noct in the name show whether a client also accepts certificates never logged to Certificate Transparency.

9. Check whether your own site uses an eMudhra certificate

Run this against each public hostname and read the issuer lines:

openssl s_client -connect example.com:443 -servername example.com -showcerts </dev/null 2>/dev/null | grep -E "s:|i:"

If the chain ends at emSign ECC Root CA - G3, Google says you must get a new certificate from another hierarchy in the Chrome Root Store now. Chrome stops trusting that root on Tuesday morning, 27 October 2026, Pacific time, and sooner in Canary and Beta. eMudhra says this affects one customer ecosystem in the United States, which it is moving to replacement certificates.

10. Plan for clients you cannot patch

List devices with frozen trust stores, such as routers, printers and OT controllers. Keep them off untrusted networks, route their traffic through a proxy you control, or plan replacement. Keep Windows machines updated too, because of the two code-signing intermediates. Our web application security guide covers the wider habits.

What if my website uses an eMudhra certificate?

Most eMudhra customers do not need an emergency swap: eMudhra says the revoked intermediates never issued a certificate, and most of its TLS certificates chain to other hierarchies. Two changes still matter. On 22 October eMudhra said it will exit the global SSL/TLS certificate business, keep its G1 RSA roots running during the transition and arrange free replacement certificates from partners. And Google says it is reviewing whether eMudhra's remaining CA certificates should stay in the Chrome Root Store. If you buy certificates from eMudhra, plan a move to another CA now rather than under a deadline, and add certificate checks to your routine, as in our website launch checklist.

This landed in the same week as PHP2Shell and the Node.js security release. If that pace is hard to keep up with, our comparison of VPS, serverless and managed hosting shows who patches what. For a second pair of eyes on which servers, images and pipelines still trust the old bundle, our web development team can review it with you, or contact us with your stack details. Keeping runbooks in a knowledge base assistant also makes the next incident faster to handle.

eMudhra CA compromise FAQ

Is my browser safe from the eMudhra certificates?

Yes, if it is up to date. Chrome and Firefox blocked the eight intermediates on 17 October 2026 through CRLSets and OneCRL, which apply without a browser update, and Microsoft and Apple followed on 20 and 22 October. These browsers also enforce Certificate Transparency, and Google says no certificates from these CAs were logged before the blocks. The open risk is in command-line tools, servers and devices.

What is CVE-2026-111943?

CVE-2026-111943 is the identifier the Go team assigned to its fix, which makes crypto/x509 reject chains containing the compromised eMudhra intermediates. Red Hat's bulletin uses it as the headline ID for the whole incident. Other projects track the same certificates under their own numbers, such as CVE-2026-91403 for OpenJDK and CVE-2026-114406 for RHEL's ca-certificates package.

How do I check if my server still trusts the compromised intermediates?

Run curl against https://dv-g3b-emudhra.we-have-a-problem.com/ and https://dv-g3b-aaa-emudhra.we-have-a-problem.com/ from the server, a CI runner and each container image. A certificate error means the client no longer trusts the intermediates. A normal response means it still does, so update the system ca-certificates package and the runtime, then test again, including from Python or Node.js.

When does Chrome remove the emSign ECC Root CA - G3?

Google says the removal reaches every device that relies on the Chrome Root Store on Tuesday morning, 27 October 2026, Pacific time, and arrives sooner in Chrome Canary and Beta. Sites whose certificates chain to that root will then fail in Chrome, so Google tells those operators to install a certificate from another hierarchy immediately.

Do I need to do anything if I never bought an eMudhra certificate?

Yes, on the client side. The risk is about which certificates your software trusts, not which certificate your site uses. Any server, laptop or container with an old CA bundle would accept a forged certificate from these intermediates, for example in a man-in-the-middle attack on an API call or package download. Updating trust stores, runtimes and images closes that gap.

Why is eMudhra leaving the SSL/TLS certificate business?

In its 22 October 2026 announcement, eMudhra said global SSL/TLS is about 1% of its revenue, that free certificates from large providers had reduced its potential return, and that public attention to the incident was out of proportion to its size. Its digital signature, eSign and enterprise PKI services continue, and affected TLS customers get free replacements from partners.

Sources

Need this done properly?

Apex Logic builds custom web apps, automation and AI features on a fixed quote, with 24 months of support and 100% code ownership.

Written by Ahtisham Arif

Apex Logic is a software studio in Multan, Pakistan that builds custom web apps, AI tools and automation for clients worldwide.

More from Ahtisham Arif

Editor's note: Facts checked against official announcements and documentation on 23 October 2026. These topics are moving fast; prices, availability and features may change.

Comments

Loading comments...