Skip to content

Back to the catalog

A company that vouches for websites had secret keys so weak that 8 of them were cracked
coindesk.comarticle

A company that vouches for websites had secret keys so weak that 8 of them were cracked

eMudhra, an Indian certificate authority with over 60 million issued certificates, had eight CA private keys that were tiny integers such as 4, 56 and 237. Researcher Scott Helme recovered all eight from public certificates in under a second, and the keys were exposed from April 2025. Mozilla, Chrome, Apple and Microsoft blocked them between 17 and 20 October 2026, but curl, Python, Node.js, Go and Java accepted a forged Stripe API certificate because they skip revocation checks.

TL;DR Reports that eMudhra's CA private keys were guessable small integers, forcing browser distrust while non-browser TLS clients that ignore revocation stay exposed.
Document

What it is

eMudhra, an Indian certificate authority, used tiny integers as the private keys for eight of its CA certificates. The page quotes 4, 56, 115 and 237 as examples, where a proper key is a 384-bit random number. Anyone who could do the arithmetic could forge certificates for any website. This summary adds the fix status, the cause and the non-browser exposure to what the catalog already holds.

How it works

The keys were recovered from the public certificates in under a second, according to Scott Helme. He says they have been exposed since April 2025. The page says Helme read a Mozilla bug ticket in which eMudhra blamed a bug in its key-setup script. How the keys got out is described as still unclear.

The report came on 17 October 2026, after 8 p.m. UTC. The reporter, named only as Wayne, signed the message "We have a problem here – Wayne" with all eight keys as proof. Mozilla had a block in place about three hours later. Chrome blocked the same day, Apple on 19 October and Microsoft on 20 October.

Preconditions / Affected

Revocation by eMudhra, and by Sectigo for the intermediates, does not protect clients that never check revocation. Helme says curl, Python, Node, Go and Java accepted a forged certificate for Stripe's API in his tests. An attacker would also need to sit on the network path. CoinDesk's example is an exchange bot, trading script or wallet backend running on Python, Node or Go, where the attacker could read or change traffic.

What to do

  • Update Go, Python's certifi package and Rust's webpki-roots, which the page says have fixes. It gives no version numbers.
  • Treat Node.js as unpatched. The page says the fix was still pending when Helme last checked.
  • Do not rely on revocation for these intermediates in curl, Python, Node, Go or Java. The fix has to be a trust-store change that removes or distrusts the eMudhra certificates.

Caveats

CoinDesk reports no attacks, crypto-related or otherwise, and had asked eMudhra for comment. The page does not give status for curl or Java. The root cause comes from Helme's reading of a bug ticket, not from a published eMudhra statement.

Organisations named here

  • certifi
  • certificate authority compromise
  • certificate revocation
  • eMudhra
  • Scott Helme
  • Sectigo
  • webpki-roots

Technologies named here

  • Mozilla Official Security Bulletin and bug ticket
  • Certificate revocation
  • eMudhra and Sectigo intermediate certificates
  • Browser certificate blocklists
  • Python certifi package
  • Rust webpki-roots
  • curl
  • Python
  • Node.js
  • Go
  • Java
  • Rust
  • Mozilla

Techniques named here

  • Certificate authority private key compromise
  • Recovery of weak private keys from public certificates
  • Forged certificate impersonation
  • Revocation checking gap