eMudhra intermediate CA compromise: system trust bundle #110

Open
opened 2026-10-21 13:57:07 +02:00 by aaron · 0 comments
Owner

Situation

On 2026-10-17, private keys for eight eMudhra intermediate CAs were reported as trivially recoverable. A broken key-generation run in April 2025 produced tiny P-384 private keys; one was literally 4. Anyone can therefore mint certificates that clients trusting emSign ECC Root CA - G3 will accept.

  • Firefox, Chrome, Apple and Microsoft have blocked the intermediates. Browsers are covered.
  • Anything using the system CA bundle (curl, git, nix, Python, …) is not. Our nixpkgs pin (nixos-unstable, 2026-10-10) predates the fix, and the deployed bundle still trusts the root.
  • nixpkgs fixed it in f903b88 (cacert: 3.126 -> 3.131.1). That commit is on master but has not reached nixos-unstable yet.

Stopgap

Branch fix/distrust-emudhra-ecc-root adds security.pki.caCertificateBlacklist = [ "emSign ECC Root CA - G3" ];. I checked krypton's built bundle: the root is now rejected for serverAuth, and only that one certificate changed.

Cleanup (closes this issue)

  • Merge the stopgap PR and nixos-rebuild switch on all hosts
  • Wait for nixos-unstable to contain f903b88
  • Run nix flake update nixpkgs and rebuild
  • Remove the caCertificateBlacklist line from modules/nixos/certificates.nix

Also affected

Programs that vendor their own CA bundle (Go binaries, Node, Electron apps, Python certifi) need their own updates. nixpkgs tracks them in #576541.

References

## Situation On 2026-10-17, private keys for eight eMudhra intermediate CAs were reported as trivially recoverable. A broken key-generation run in April 2025 produced tiny P-384 private keys; one was literally `4`. Anyone can therefore mint certificates that clients trusting **emSign ECC Root CA - G3** will accept. - Firefox, Chrome, Apple and Microsoft have blocked the intermediates. **Browsers are covered.** - Anything using the system CA bundle (curl, git, nix, Python, …) is **not**. Our nixpkgs pin (nixos-unstable, 2026-10-10) predates the fix, and the deployed bundle still trusts the root. - nixpkgs fixed it in [`f903b88`](https://github.com/NixOS/nixpkgs/commit/f903b88037954e42a165c27b686201c2f242ae28) (`cacert: 3.126 -> 3.131.1`). That commit is on master but has not reached nixos-unstable yet. ## Stopgap Branch `fix/distrust-emudhra-ecc-root` adds `security.pki.caCertificateBlacklist = [ "emSign ECC Root CA - G3" ];`. I checked krypton's built bundle: the root is now rejected for serverAuth, and only that one certificate changed. ## Cleanup (closes this issue) - [x] Merge the stopgap PR and `nixos-rebuild switch` on all hosts - [ ] Wait for nixos-unstable to contain `f903b88` - [ ] Run `nix flake update nixpkgs` and rebuild - [ ] Remove the `caCertificateBlacklist` line from `modules/nixos/certificates.nix` ## Also affected Programs that vendor their own CA bundle (Go binaries, Node, Electron apps, Python certifi) need their own updates. nixpkgs tracks them in [#576541](https://github.com/NixOS/nixpkgs/issues/576541). ## References - [Mozilla bug 2083449](https://bugzilla.mozilla.org/show_bug.cgi?id=2083449) - [Mozilla security blog](https://blog.mozilla.org/security/2026/10/20/protecting-firefox-users-following-the-compromise-of-emudhra-intermediate-certificates/) - [nixpkgs tracking issue #576485](https://github.com/NixOS/nixpkgs/issues/576485) - [emudhra.we-have-a-problem.com](https://emudhra.we-have-a-problem.com/)
Sign in to join this conversation.
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: aaron/nixconfig#110