Skip to content

fix: distrust compromised eMudhra intermediates - #414

Merged
alecthomas merged 1 commit into
block:mainfrom
sylr:fix/emudhra-compromised-cas
Oct 21, 2026
Merged

alecthomas merged 1 commit into
block:mainfrom
sylr:fix/emudhra-compromised-cas

Conversation

@sylr

@sylr sylr commented Oct 21, 2026

Copy link
Copy Markdown
Contributor

The private keys of eight eMudhra intermediate CAs can be recovered from their public certificates. Any client that still trusts these chains can be MITM'd. See https://emudhra.we-have-a-problem.com/.

This change:

  • Upgrades Hermit Go from 1.26.1 to 1.26.10, a listed patched release. CI and releases use Hermit, so they pick it up.
  • Requires ca-certificates>=20261020-r0 in docker/Dockerfile. Alpine 3.23 already ships this version. The constraint fails the build rather than shipping old roots, and it busts any cached layer from before the fix.

Tests:

  • I built an alpine:3.23 image with the same apk add line. It installed ca-certificates-20261020-r0. curl to dv-g3b-emudhra.we-have-a-problem.com and dv-g3b-aaa-emudhra.we-have-a-problem.com fails with "unable to get local issuer certificate", so the compromised chains are rejected.
  • go build ./... and the test suite pass on 1.26.10. The exception is gitclone TestRepository_HasCommit, which fails the same way on 1.26.1. The likely cause is a local tag.gpgsign=true setting, not this change.
  • I did not build the full cachew image, because it needs dist/ binaries.

@sylr
sylr requested a review from a team as a code owner October 21, 2026 08:33
@sylr
sylr requested review from stuartwdouglas and removed request for a team October 21, 2026 08:33
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 21, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review 🔄 Running since 2026-10-21T08:45:00.598673Z da40c79 New commits
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

The private keys of eight eMudhra intermediate CAs are recoverable from
their public certificates, so a client trusting the chain can be
MITM'd (https://emudhra.we-have-a-problem.com/).

Upgrade Go to 1.26.10, a patched release, and require Alpine
`ca-certificates>=20261020-r0` in the runtime image. The version
constraint fails the build rather than shipping old roots, and busts
any cached layer from before the fix.

Constraint: Stay on the Go 1.26 line rather than moving to 1.27.3
Rejected: Remove roots manually from /etc/ca-certificates.conf | patched Alpine package exists
Confidence: high
Scope-risk: narrow
Not-tested: Full cachew image build (needs dist/ binaries)
Signed-off-by: Sylvain Rabot <sylvain@abstraction.fr>
@sylr
sylr force-pushed the fix/emudhra-compromised-cas branch from cf83671 to da40c79 Compare October 21, 2026 08:44
@alecthomas
alecthomas merged commit bc3c42d into block:main Oct 21, 2026
7 checks passed
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.

2 participants