deps: clear x/text DoS advisory and unstale the vm-compat Go pin - #478
Merged
Conversation
x/text v0.36.0, which the toolchain bump landed on, is affected by GO-2026-5970: norm.Iter enters an infinite loop on invalid UTF-8. govulncheck reports it as symbol-reachable (norm.Form.Properties) in the op-node and op-batcher binaries, so it is the same unbounded-loop DoS class this branch set out to remove. Fixed in v0.39.0; this takes the latest v0.40.0. MVS pulls the sibling golang.org/x/* modules up with it, which also moves x/net past GO-2026-5026 (idna.ToASCII, likewise symbol-reachable).
The vm-compat builder was still on golang:1.24.10-alpine3.21 while the root go.mod now requires go >= 1.26. That image sets GOTOOLCHAIN=local, so its 'go mod download' fails — the same breakage already fixed for Dockerfile.repro. Upstream deleted op-program from the monorepo, so its toolchain bump never covered these pins. The commented-out "next" build stays on 1.25.4 with its TODO(ethereum-optimism#18334), since that line is about vm-compat's own go1.25 support.
philippecamacho
approved these changes
Jul 30, 2026
philippecamacho
left a comment
Collaborator
There was a problem hiding this comment.
Thanks for catching these version mismatches.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Two follow-ups for #476, based directly on its head so it fast-forwards.
1.
golang.org/x/textv0.36.0 → v0.40.0The toolchain bump landed x/text on v0.36.0, which is affected by GO-2026-5970:
norm.Iterenters an infinite loop on invalid UTF-8.govulncheckreports it as symbol-reachable (norm.Form.Properties) in the op-node and op-batcher binaries — the same unbounded-loop DoS class Issue A set out to remove, so it seemed wrong to leave it behind in the PR that closes the others.Fixed in v0.39.0; this takes the latest v0.40.0. MVS pulls the sibling
golang.org/x/*modules up with it, which also moves x/net v0.53.0 → v0.56.0 and so clears GO-2026-5026 (idna.ToASCII, likewise symbol-reachable).Go itself is left at 1.26.4. Bumping to 1.26.5 (upstream
developis already there) would additionally clear GO-2026-5856, but that is a bigger change than this PR wants to carry — worth doing separately.2. vm-compat Go pin
op-program/Dockerfile.vmcompatand the twoop-program/justfilerecipes still pinnedgolang:1.24.10-alpine3.21while the rootgo.modnow requiresgo >= 1.26. That image setsGOTOOLCHAIN=local, so itsgo mod downloadfails — the identical breakage already fixed forDockerfile.reproin d95c361. Upstream deleted op-program from the monorepo, so its toolchain bump never had to touch these.Not a CI break:
analyze-op-program-clientandop-program-compatare commented out on this fork. It only affectsjust run-vm-compat/just regenerate-vm-compat-baselinelocally. The commented-out "next" build stays on 1.25.4 — itsTODO(#18334)is about vm-compat's own go1.25 support, not the toolchain.Verified
Run against this branch with Go 1.26.4:
Tests cover the packages that actually touch the bumped modules:
op-service/client(the RPC dialer on the L1 path),op-service/sources,op-service/txmgr, andop-node/rollup/derive(Espresso batch authentication).After the change, GO-2026-5970 no longer appears, and neither do GO-2026-4870 / 4918 / 5037. The nine that remain are pre-existing and outside Issue A: quic-go x3, webtransport-go x3, pion/dtls (no fix available), otel baggage, and GO-2026-5856 (needs Go 1.26.5).
Note on the fix narrative in #476
Minor correction for the record: in the pre-bump scan, x/net's GO-2026-4918 entry has zero vulnerable symbols — module-level only. The symbols actually found are in stdlib
net/http, which vendors its own http2 asnet/http/internal/http2, and nothing in the repo importsgolang.org/x/net/http2directly. So the toolchain bump is what closes the live HTTP/2 path; the x/net bump is defence-in-depth. Worth knowing so nobody later concludes that keeping x/net current is sufficient on its own.