Skip to content
Webstrong signalverified

Anyone could compute the keys of eight eMudhra intermediate certificates, so tools outside browsers need updates

The private keys of eight intermediate certificates from the certificate authority eMudhra were small numbers that anyone could compute. Firefox, Chrome, Apple, and Microsoft blocked the certificates within three days, and Mozilla and Chrome are now removing trust in the root above them. Software with its own copy of the certificate list, from Python's certifi to Go, needs an update.

By Redakcija WebAiRadarPublished 3 min readwritten by a model

Eight intermediate certificates issued by the certificate authority eMudhra had private keys that could be computed almost instantly, Mozilla confirmed after a report on October 17, 2026. Anyone holding such a key could issue a certificate that impersonates any website. Browsers already reject the certificates. Programs that keep their own list of trusted certificates, and servers with outdated system packages, need an update.

What was wrong with the keys

An intermediate certificate is the one a certificate authority uses to sign website certificates. A root certificate signs it in turn, and browsers and operating systems trust that root directly. Whoever controls an intermediate's private key can therefore issue certificates that clients will accept.

A P-384 private key is supposed to be a random number up to 384 bits long. Dennis Jackson of Mozilla wrote in the incident report that each of the eight keys was an integer smaller than 256. A key like that turns up almost immediately by trying the first 256 candidates.

The eight keys came from a single key ceremony in 2025. Six belong to certificates for encrypted web connections (TLS) and chain to roots trusted by Chrome, Mozilla, Microsoft, and Apple. The other two are for code signing and are trusted by Microsoft. Jackson also wrote that local AI agents recovered a key on the first attempt from a simple prompt.

What browsers and the certificate authority did

A researcher who signs as Wayne sent the root programs and eMudhra proof of control over all eight keys on October 17, 2026. Mozilla recovered the keys independently the same evening. According to the incident site, Firefox and Chrome have blocked the certificates since October 17, Apple devices since October 19, and Microsoft platforms since October 20.

eMudhra revoked the eight certificates on October 18. Sectigo, which had cross-signed some of them, revoked its versions on October 19. On October 20, 2026, Mozilla announced the emergency removal of trust in the root certificate emSign ECC Root CA - G3, because several people had recovered the keys independently and at least one had published them. Chrome said it would take a similar path.

eMudhra says it stopped issuing certificates under that root on October 20. The company estimates that about 30,000 certificates must move to intermediates under its RSA root, emSign Root CA - G1. It says about 97% of them were issued through ACME, the protocol for automated certificate issuance, and that the compromised intermediates never issued a certificate to an end user.

Who still needs to update

Browsers check Certificate Transparency, public logs in which every certificate they trust must appear. According to the incident site, those logs show no certificates from these intermediates, so Firefox, Chrome, Edge, and Safari could not have been attacked. Many clients outside browsers do not check the logs, and it is not known whether anyone exploited the flaw against them.

Those clients include programs that carry their own copy of the trusted certificate list instead of using the operating system's. The incident site lists these fixed versions, among others:

  • Python: certifi 2026.10.19, pip 26.2.2, and uv 0.13.4
  • Go 1.27.3 and 1.26.10
  • Electron 44.9.1
  • the curl CA bundle dated 2026-10-20
  • the ca-certificates packages of Ubuntu, Debian, Alpine, Arch Linux, and Fedora

For Node.js and Bun, the table still marked the fix as pending on October 21, 2026. The site also warns that the curl built into macOS checks certificates against a file that has not been updated and does not check revocation, even though macOS itself blocks the certificates.

„the impact of this incident could not be higher“
Dennis Jackson, Mozilla

Sources

Related

WebKit diagram: four websites send the same email address, jane@mail.example, to a central identity resolution server, and each gets back a different tracking ID for Jane.
Webmedium signal

Safari 27 blocks the third parties that turn an email address into a tracking ID

Apple said on October 19, 2026, that Safari and WebKit in the 27 releases of iOS, iPadOS, macOS, and visionOS block network access to identity resolution services. According to Apple, those services collect the email address people enter to log in or subscribe and convert it into a lasting tracking ID. Personalization a site does with its own data is not affected.

WebKitverified

An iPad, desktop, and an iPhone each displaying a browser showing an image of a 3D hiking boot model.
Webstrong signal

Safari 27.0 ships an MCP server, so a coding agent can drive the browser itself

WebKit published the feature list on September 17, 2026, and it is the longest the team has written: 83 features, up from 58 at the first beta in June, and 844 quality fixes against the 525 announced at WWDC. The headline for anyone who builds with a coding agent is the Safari MCP server, which hands the agent the DOM, network requests, screenshots and console output from a real Safari window. Customizable Select turns the real select element into something you can fully restyle, and scroll anchoring stops the page from jumping when content loads in above what you are reading.

WebKit Blogverified

WEBKIT252eleven new features in the preview build
Webmedium signal

Safari Technology Preview 252 adds named-feature() and lets SVG reach a filter in another file

The preview build came out on September 11, 2026 and covers WebKit changes between 319252@main and 320112@main. Eleven features are new, and two of them extend the same job: how a stylesheet, and then a script, finds out what the engine underneath can do. The named-feature() function asks about a behavior that has no syntax of its own, and the registry behind it holds exactly two entries today. SVG also gained external resources, so the url() reference can finally point at a filter, mask or gradient stored in another document.

WebKitverified