Skip to content

fix(deps): stop trusting certificates minted with the leaked eMudhra keys - #655

Merged
GeiserX merged 1 commit into
mainfrom
fix/emudhra-distrust
Oct 20, 2026
Merged

GeiserX merged 1 commit into
mainfrom
fix/emudhra-distrust

Conversation

@GeiserX

@GeiserX GeiserX commented Oct 20, 2026

Copy link
Copy Markdown
Owner

Eight eMudhra (emSign) intermediates had recoverable private keys and were revoked on 2026-10-18 for key compromise. Anyone can mint a certificate for any name under them, and no client checks the revocation. Both TLS clients in tailscaled-rs trust webpki-roots: ureq (tnet update, tailnetd debug --get-url, the captive portal check) and the engine's ts_tls_util (control plane and DERP). The 0.68.4 release, with webpki-roots 1.0.7, connects to a host served through one of those intermediates:

$ tailnetd debug --get-url https://dv-g3b-emudhra.we-have-a-problem.com/
...
Your client successfully connected to the site. That's bad!

The fix

Lockfile only:

  • webpki-roots 1.0.7 -> 1.0.10: drops emSign ECC Root CA - G3.
  • rustls-webpki 0.103.15 -> 0.103.16: distrusts the eight intermediates themselves, whatever the root store holds.

Checks

The same two bumps in tailscale-rs (GeiserX/tailscale-rs#655), through ts_tls_util::connect: the emSign host and the Sectigo AAA cross-sign host both fail with CertDistrusted, and github.com still connects. Before, the emSign host connected. Once this ships I will run the released tailnetd debug --get-url against both hosts and github.com.

…keys

Eight eMudhra (emSign) intermediates had recoverable private keys and were
revoked on 2026-10-18 for key compromise. Both TLS clients here trust
webpki-roots: ureq (tnet update, tailnetd debug --get-url, the captive
portal check) and the engine's ts_tls_util (control plane, DERP). With
webpki-roots 1.0.7, `tailnetd debug --get-url
https://dv-g3b-emudhra.we-have-a-problem.com/` from the 0.68.4 release
printed the test page's "Your client successfully connected to the site".

webpki-roots 1.0.10 drops emSign ECC Root CA - G3, and rustls-webpki
0.103.16 distrusts the eight intermediates themselves.

Signed-off-by: GeiserX <9169332+GeiserX@users.noreply.github.com>
@coderabbitai

coderabbitai Bot commented Oct 20, 2026

Copy link
Copy Markdown

Important

Review skipped

Review was skipped due to path filters

⛔ Files ignored due to path filters: 1
  • Cargo.lock is excluded by !**/*.lock

CodeRabbit blocks several paths by default. You can override this behavior by explicitly including those paths in the path filters. For example, including **/dist/** will override the default block on the dist directory, by removing the pattern from both the lists.

⚙️ Run configuration
  • Configuration used: Repository: GeiserX/tailscaled-rs/.coderabbit.yaml
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 13f4d8b7-7b86-495a-a286-5314a608a1c4

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@GeiserX
GeiserX merged commit 54eae07 into main Oct 20, 2026
7 checks passed
@GeiserX
GeiserX deleted the fix/emudhra-distrust branch October 20, 2026 23:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant