Skip to content

PLT-2271: remediate eMudhra CA compromise and bump Go, base images and actions - #49

Merged
timm088 merged 3 commits into
mainfrom
timcurtin/plt-2271-immutable-geth-remediate-emudhra-ca-compromise-and-bump-go
Oct 22, 2026
Merged

timm088 merged 3 commits into
mainfrom
timcurtin/plt-2271-immutable-geth-remediate-emudhra-ca-compromise-and-bump-go

Conversation

@timm088

@timm088 timm088 commented Oct 22, 2026 •

Copy link
Copy Markdown
Contributor

Resolves PLT-2271.

Why

Eight eMudhra intermediate CA keys are compromised (disclosure). On Linux, geth trusts whatever is in /etc/ssl/certs, so the fix is the image's ca-certificates package. Our runtime image was alpine:3.18.9, which went EOL in May 2025 and will never get the fixed package (20261020-r0 only ships to 3.21+).

What

Images

  • Runtime alpine:3.18.9 -> alpine:3.24.3. Dockerfile.alltools pinned off latest.
  • Builder golang:1.21-alpine -> golang:1.26.10-alpine3.24 (1.26.10 is also on the patched list).

Go 1.20 -> 1.26

  • go.mod to go 1.26, CI setup-go to 1.26.x. Bumped golang.org/x/{crypto,net,sys,...}.
  • Removed fjl/memsize. Its linkname into the runtime fails to link on Go 1.23+. Upstream geth did the same in v1.14.8. This drops the /memsize/ page on the pprof server (nothing else uses it).
  • supranational/blst v0.3.11 -> v0.3.14 to fix the Go 1.24 cgo alias break.
  • Go 1.24 vet (which go test runs) flags non-constant format strings. Fixed the 8 hits (all trivial, mostly tests).

Actions

  • All third-party actions bumped to current releases and SHA pinned. attest-build-provenance was floating on @v2, now pinned.
  • golangci-lint v1.51.1 -> v2.15.0. Config migrated with golangci-lint migrate (gosimple/typecheck fold into staticcheck, exportloopref is obsolete on Go 1.22+). Dropped --out-format=github-actions, which v2 removed.

Version

  • params/version.go bumped to 1.0.0-beta.18. Tag the release v1.0.0-beta.18 after merge.

Verification (local)

  • go build ./... and go vet ./... clean on Go 1.26.
  • Tests pass across core, consensus, crypto, trie, eth, p2p, accounts, node, rpc, miner, immutable, internal, cmd. TestUpdatedKeyfileContents failed once from timing, then passed 3/3 on rerun. It's the same on main.
  • golangci-lint run --new-from-rev=main: 0 issues.
  • Built image: ca-certificates-20261020-r0 installed. wget https://dv-g3b-emudhra.we-have-a-problem.com/ fails cert verification, while a control site works.

Rollout

Roll out to devnet, then testnet nodes before mainnet.

…d actions

- Runtime image alpine:3.18.9 (EOL) -> 3.24.3 for ca-certificates 20261020-r0
- Builder golang:1.21-alpine -> 1.26.10-alpine3.24, CI Go 1.20.x -> 1.26.x
- go.mod go 1.26, bump golang.org/x/*, blst v0.3.14 (Go 1.24 cgo fix)
- Remove fjl/memsize (linkname breaks on Go 1.23+, as upstream v1.14.8)
- Fix non-constant format strings flagged by Go 1.24 vet
- Bump all actions to current releases, SHA pin attest-build-provenance
- golangci-lint v1.51.1 -> v2.15.0 with migrated config
@timm088
timm088 requested a review from a team as a code owner October 22, 2026 01:29
mw-w
mw-w previously approved these changes Oct 22, 2026
@timm088
timm088 merged commit ae10c4e into main Oct 22, 2026
9 checks passed
@timm088
timm088 deleted the timcurtin/plt-2271-immutable-geth-remediate-emudhra-ca-compromise-and-bump-go branch October 22, 2026 02:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

3 participants