Repository navigation
fix: build with Go 1.26.10 for the eMudhra CA distrust - #45
Conversation
PR BuildVersion:
Built from 4b415c0 |
monit-reviewer
left a comment
There was a problem hiding this comment.
Automated PR Review
Reviewed commit: b74748e3e7c4
Profile: claude-monit-reviewer - Posting as: monit-reviewer
Summary
| Reviewer | Findings |
|---|---|
| automation:ci-release | 1 |
| go:implementation-tests | 0 |
automation:ci-release (1 finding)
Minor - go.mod:5
The PR says
actions/setup-gopicks up thistoolchaindirective for builds, tests and releases, but that is only true forarch-package.yml(go-version-file).release.ymlhardcodesgo-version: '1.24', andci.yml/pr-artifacts.ymlinstall Go throughjdx/mise-actionwithgo = "1.25"inmise.toml. Neither readsgo.mod. The 1.26.10 build only happens because the installedgoauto-switches viaGOTOOLCHAIN=autoand downloads 1.26.10 at run time. The release binaries should still get the fix, but that is implicit and depends on a network download in the release job. Nothing checks that the shipped binary was built with >= 1.26.10, and the Go version now lives in three places (go.mod,mise.toml,release.yml). Fix: changerelease.ymltogo-version-file: go.mod(matchingarch-package.yml), and add a step after the build, or a Make/CI check, that fails unlessgo versionreports 1.26.10 or newer.
Reviewer Coverage
automation:ci-release— complete (broad); skipped: none; constraints: Reviewed only the go.mod diff plus workflow/mise.toml context; did not run builds or the Go toolchain download.go:implementation-tests— complete (broad); skipped: none; constraints: Did not run a build; go.mod diff is a singletoolchain go1.26.10line (go 1.25.0 unchanged), valid because the toolchain version is >= the go directive. release.yml pins setup-go to 1.24, but with default GOTOOLCHAIN=auto Go switches to the go.mod toolchain, so no finding; that file is outside the assignment.
Inspected files (1)
go.mod
0 PR discussion threads considered. 0 summarized; 0 resolved.
Completed in 3m 47s | ~$0.64 (est.) | claude-sonnet-5-5 | cr 0.10.325
| Field | Value |
|---|---|
| Model | claude-sonnet-5-5 |
| Reviewers | automation:ci-release, go:implementation-tests |
| Engine | claude_cli · claude-sonnet-5-5 |
| Reviewed by | cr · monit-reviewer |
| Duration | 3m 47s wall · 4m 59s compute |
| Cost | ~$0.64 (est.) |
| Pricing basis | baseline-2026-10-02/pricing |
| Tokens | 40 in / 6.0k out |
Per-workstream usage
orchestrator-selection— claude-sonnet-5-5- In: 6
- Out: 1.0k
- Cache read: 44.5k
- Cache create: 36.8k
- Cost: ~$0.17 (est.)
- Duration: 14s
automation:ci-release— claude-sonnet-5-5- In: 16
- Out: 2.9k
- Cache read: 212.4k
- Cache create: 37.7k
- Cost: ~$0.22 (est.)
- Duration: 2m 01s
go:implementation-tests— claude-sonnet-5-5- In: 12
- Out: 1.5k
- Cache read: 140.2k
- Cache create: 34.2k
- Cost: ~$0.18 (est.)
- Duration: 1m 35s
orchestrator-rollup— claude-sonnet-5-5- In: 6
- Out: 500
- Cache read: 119.8k
- Cache create: 9.9k
- Cost: ~$0.07 (est.)
- Duration: 1m 09s
Pin the Go toolchain to 1.26.10, which distrusts the compromised eMudhra intermediate keys (CVE-2026-111943), and read the Go version from go.mod in every setup-go step.
b74748e to
077cb96
Compare
Add
toolchain go1.26.10to every Go module so CI and release builds use Go 1.26.10. Go 1.26.10 and 1.27.3 add acrypto/x509distrust of the compromised eMudhra intermediate keys (CVE-2026-111943), which applies whatever root store the binary verifies against. Binaries built with earlier releases still accept certificates issued through those keys on Linux, where verification uses the system roots.actions/setup-gouses thetoolchaindirective in preference to thegodirective, so builds, tests and releases all pick it up. Thegolanguage version is unchanged.Verification
GOTOOLCHAIN=go1.26.10 go build ./...passes for every module.