Commit ddbe7a6
committed
build(security): pin Go toolchain to 1.26.5 + add blocking govulncheck CI job (om-xga8)
govulncheck flags GO-2026-5856 (CVE-2026-42505, ECH privacy leak in
crypto/tls, fixed in go1.26.5) against the 1.26.4 toolchain. It is
symbol-reachable here (internal/spot -> net/http -> https -> tls), so the
scanner genuinely reports it; real exposure is ~nil (we never configure ECH).
An unclean scanner is a scanner nobody reads, so: get to a clean baseline and
wire govulncheck into CI so the next advisory arrives as a red check.
- go.mod: ADD `toolchain go1.26.5` (a soft floor). The `go 1.26.4` line
STAYS — it is the minimum-LANGUAGE-version contract, not the build-stdlib
selector. Bumping it would hard-break GOTOOLCHAIN=local builders (distro
packagers, hermetic/air-gapped) for zero security gain. The toolchain
directive gives patched stdlib under GOTOOLCHAIN=auto while local 1.26.4
builds still succeed. go.sum untouched.
- ci.yml + release.yml: setup-go now reads `go-version-file: 'go.mod'`, so
go.mod is the single source of truth for the toolchain — no floating '1.26'
literal to silently roll, one place to bump next time.
- ci.yml: ADD a blocking `vuln` job running `govulncheck ./...` as its own
job (a stdlib advisory shows as a distinct red check, not "your diff broke
the build"). No Node/npm steps — `go build` works without the UI because
web/dist/.gitkeep is tracked.
Verified: go1.26.5 selected under default GOTOOLCHAIN; build/vet/test pass;
govulncheck clean under 1.26.5; GOTOOLCHAIN=local build still succeeds on
1.26.4; go.sum unchanged.1 parent 38a34cc commit ddbe7a6
3 files changed
Lines changed: 19 additions & 2 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
12 | 12 | | |
13 | 13 | | |
14 | 14 | | |
15 | | - | |
| 15 | + | |
16 | 16 | | |
17 | 17 | | |
18 | 18 | | |
| |||
28 | 28 | | |
29 | 29 | | |
30 | 30 | | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
18 | 18 | | |
19 | 19 | | |
20 | 20 | | |
21 | | - | |
| 21 | + | |
22 | 22 | | |
23 | 23 | | |
24 | 24 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2 | 2 | | |
3 | 3 | | |
4 | 4 | | |
| 5 | + | |
| 6 | + | |
5 | 7 | | |
6 | 8 | | |
7 | 9 | | |
| |||
0 commit comments