build(deps): bump the golang.org modules, fixing two reachable x/crypto/ssh advisories - #702
Merged
Philip Lombardi (plombardi89) merged 1 commit intoSep 3, 2026
Conversation
…to/ssh advisories GO-2026-6354 and GO-2026-6355 were published on 2026-09-02 against golang.org/x/crypto/ssh, both fixed in v0.56.0. Every pull request has failed `make vulncheck` since: govulncheck reads a live database, so main went red at e1b1d4e without a line of code changing. Reachable, not theoretical. Both advisories name Dial and NewClientConn among the affected symbols, and the machina controller calls ssh.Dial at machine_controller.go:157, :511 and :683 and ssh.NewClientConn at :694, including on the bastion path. A hostile or compromised peer can deadlock the connection. Bump the whole golang.org group rather than x/crypto alone, matching how dependabot has these grouped. Four modules actually moved; the others were already current: x/crypto v0.55.0 => v0.56.0 the security fix x/exp pseudo => pseudo x/telemetry pseudo => pseudo x/vuln v1.2.0 => v1.7.0 govulncheck itself, a tool directive No cascade: v0.56.0 wants x/net v0.57.0, x/sys v0.47.0, x/term v0.45.0 and x/text v0.41.0, all of which we already satisfied, and `go mod tidy` moved nothing outside golang.org. GO-2024-3218 in go-libp2p-kad-dht still reports and still does not block. It has no fix available, which is exactly the case the gate is built to allow through.
Philip Lombardi (plombardi89)
enabled auto-merge
September 3, 2026 01:51
hbc (bcho)
approved these changes
Sep 3, 2026
Philip Lombardi (plombardi89)
deleted the
plombardi89/bump-golang-org-modules
branch
September 3, 2026 02:02
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.
Why now
make vulncheckfails on every open pull request, including ones thattouch no Go code:
Both advisories were published 2026-09-02, after main's last green run
(
e1b1d4e, 02:10Z).govulncheckreads a live database, so the tree went redwithout a line of code changing. Dependabot groups
golang.org/*and runsweekly with nothing currently open, so waiting means up to a week of red CI on
everything.
This is reachable, not theoretical
Both advisories list
DialandNewClientConnamong the affected symbols, andwe call them from a production controller:
cmd/machina/machina/controller/machine_controller.go:157ssh.Dial(bastion)cmd/machina/machina/controller/machine_controller.go:511ssh.Dialcmd/machina/machina/controller/machine_controller.go:683ssh.Dial(bastion)cmd/machina/machina/controller/machine_controller.go:694ssh.NewClientConnhack/cmd/forge/forge/infra/ssh.goimports the same package. A hostile orcompromised SSH peer can deadlock the connection, on the bastion path included.
What moved
The whole
golang.orggroup, matching how.github/dependabot.ymlhas themgrouped. Four modules actually moved; the rest were already current:
golang.org/x/cryptogolang.org/x/exp2026071820153820260824195058golang.org/x/telemetry2026081118254420260902144106golang.org/x/vulnUnchanged because already at latest:
x/mod,x/net,x/sync,x/sys,x/term,x/oauth2,x/text,x/time,x/tools.No cascade.
x/cryptov0.56.0 requiresx/net v0.57.0,x/sys v0.47.0,x/term v0.45.0andx/text v0.41.0, all of which we already satisfied, andits
go 1.26.0directive is covered by ourgo 1.26.6.go mod tidymovednothing outside
golang.org: the diff is 8 lines ofgo.modand 16 ofgo.sum, and every changed line is agolang.org/one.Note that
x/vulnis the scanner, so this changes govulncheck's own version aswell as what it scans. The run below is with v1.7.0.
Verification
Run locally, not inferred:
make vulncheckexits 0:vulncheck: no reachable vulnerability has an available fixgo build ./...cleanmake test(which impliesmake lintlocally) clean,0 issuesmake notice-check:NOTICE is up to date (122 entries). NOTICE recordsdependencies without versions, so a version bump was not expected to drift
it, but it was checked rather than assumed.
cmd/machina/...andhack/cmd/forge/..., the two consumers ofcrypto/ssh, pass on their own.Still reported, still not blocking
Unchanged from main. This is the case
hack/cmd/vulncheck-gateexists to letthrough: reachable, but with no released fix, so no module bump resolves it and
acting on it means dropping or replacing the dependency.
Unblocks
#699 and #700 are both red on this check alone. I will update them from main
once this lands.