Skip to content

Back to the catalog

eMudhra, Brotli, and the Long Tail of a Security Fix
socket.devarticle

eMudhra, Brotli, and the Long Tail of a Security Fix

Socket post on why fixing the eMudhra weak-key intermediate CA incident (October 2026) and Brotli memory corruption CVE-2026-111497 takes more than updating Node.js. Bundled Brotli copies in Bun, Python Requests and .NET, Go binaries needing rebuilds, and per-program certificate stores all leave stale copies. It lists steps: track bundled components, keep a rebuild path, use workarounds, and verify the shipped artifact.

TL;DR Explains how the eMudhra certificate block and the Brotli CVE-2026-111497 fix leave stale copies in bundled runtimes, binaries and certificate stores, and how to find them.
Document

What it is

A Socket post by Jonathon Klobucar on two October 2026 fixes whose patches do not reach every affected copy of the software. One is the eMudhra weak-key intermediate CA incident. The other is the Brotli memory corruption flaw CVE-2026-111497, fixed in the Node.js release of October 21, 2026.

How it works

eMudhra. On October 17, 2026, a researcher showed they had recovered eight eMudhra intermediate CA private keys by signing a message with each one. The keys were meant to be 384-bit, but the values fit in eight bits (examples: 4, 56, 115), so counting to 255 finds them. eMudhra says a flawed key-generation ceremony in April 2025 caused this and that the intermediates never issued customer certificates. The weak keys went unnoticed for nearly eighteen months. Mozilla found no certificates from these intermediates in Certificate Transparency logs at disclosure, but clients that do not require CT logging could accept forged certificates that leave no record there.

Brotli. CVE-2026-111497 can corrupt memory when an application decodes malicious compressed input. The code comes from Google's Brotli library, which other projects bundle.

Preconditions / Affected

  • Bun: fetch auto-decodes Brotli responses. Fixed in Bun 1.4.4. Executables built with bun build --compile carry their own runtime and must be rebuilt.
  • Python Requests: decodes Brotli automatically when brotli or brotlicffi is installed, including when another dependency pulls it in.
  • .NET: Microsoft published an advisory on October 25, 2026, for applications decoding untrusted Brotli data.
  • Go: the eMudhra verifier change is in Go 1.27.3 and 1.26.10. Existing binaries stay unchanged until rebuilt with the patched toolchain.
  • Certificate stores: browsers were patched quickly (Mozilla's OneCRL reached standard Firefox configurations in under three hours, and Chrome pushed a CRLSet block the same evening). Command-line tools may use their own bundle. The post's example is macOS tools reading /etc/ssl/cert.pem, which Apple's framework protections do not cover.
  • Mozilla identified trust paths through three roots, including Sectigo's AAA Certificate Services. Removing one root may leave another path open, and removal can break legitimate connections.

What to do

  • Inventory what each release contains: application dependencies, bundled runtimes, libraries, toolchains and certificate settings.
  • Keep an automated rebuild path, and assign someone to follow upstream releases you depend on.
  • Use workarounds before a patch lands: disable the affected feature or block untrusted input from reaching it. Microsoft gives Brotli examples for .NET. Verify the workaround works.
  • Block the compromised intermediates where possible, per Mozilla's guidance.
  • Test certificate rejection through the verifier the application actually uses. Confirm the corrected decoder is in the shipped artifact and the running service.
  • Track deployment, not publication, and note what needs a restart, since shared libraries may need one to load the fixed version.

Caveats

The post gives no commands, and no test procedure beyond the disclosure site's browser check. Revoking the certificates at the CA does little for clients that never check revocation. It points to Broccoli2Shell's list of bundled Brotli copies but does not reproduce it, so the list of affected products is incomplete.

Organisations named here

  • Certificate Transparency
  • CRLSet
  • eMudhra
  • Scott Helme
  • Sectigo

CVEs named here

  • CVE-2026-111497

Technologies named here

  • Google Brotli library
  • CRLSet
  • Certificate Transparency logs
  • Python Requests
  • bun build --compile
  • Codex Security
  • Microsoft .NET
  • Disclosure site browser test
  • Broccoli2Shell list of bundled Brotli copies
  • Mozilla trust paths
  • Command-line tools on macOS reading /etc/ssl/cert.pem
  • Chrome and Firefox
  • Node.js
  • Brotli
  • Bun
  • Go
  • Python
  • .NET
  • Firefox
  • Chrome
  • macOS
  • OneCRL
  • Mozilla
  • microsoft

Techniques named here

  • Certificate trust path analysis across multiple roots