Repository navigation
security: klauspost/compress v1.20.2 and brotli v1.2.7, both reachable - #27
Merged
Merged
Conversation
Found by the nightly lane this repository gained in #26, one night after the advisories were published. It went red on 2026-11-06 and again on 11-07; the report it keeps on failure named both. GO-2026-6888 github.com/andybalholm/brotli v1.2.6 -> v1.2.7 CVE-2026-111497. "A small crafted brotli stream containing many empty meta-blocks with new Huffman trees can trigger hundreds of megabytes of allocations per kilobyte of input, leading to denial of service." session.go:106:29 engineRender -> engine.Engine.RenderWithLinks -> brotli.Reader.Read server.go:155:62 dispatch -> brotli.decodeError.Error GO-2026-6865 github.com/klauspost/compress v1.18.7 -> v1.20.2 CVE-2026-116591. Panic on two-block frames in fse/huff0. server.go:115:22 Server.HandlerListener -> grpc.NewServer -> fse.Decompress server.go:115:22 Server.HandlerListener -> grpc.NewServer -> huff0.ReadTable ⛔ THE FIRST TRACE IS THE RENDER PATH. brotli.Reader.Read is reached from engineRender, which is this program decoding a page it fetched: the exact symbol the advisory names, on the job the proxy exists to do, against content nobody here controls. The second pair is the gRPC server's compression. Both are denial of service on untrusted input, and both have released fixes. ⛔ AND BOTH WERE `// indirect`. Renovate has no version string to compare or rewrite for a requirement the module does not declare for itself, so nothing was watching either of them -- the third time this mechanism has hidden a reachable advisory here, after x/net in #26. Measured, same tree, same govulncheck, GOOS=linux GOARCH=amd64: before 2 vulnerabilities, 4 symbol traces (above) after No vulnerabilities found. 0 affected. The lane's own gate run by hand: govulncheck wrote 889 KB of JSON and vulngate exited 0, judging the one remaining finding a notice (required, not called, no RELEASED fix -- the upstream fix is a pseudo-version). gofmt clean, go build ./... ok, go vet ./... silent, go test ./... 2 packages ok. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Running the gate by hand to check the fix above, vulngate said:
⚠ vulngate: -go now takes two dashes; read as --go. The standard flag
package accepted one dash and pflag does not. Update the call site:
this shim will not outlive the next major.
vulngate moved to cobra. The single dash still works, through a shim that
announces its own removal on every run — and ⛔ a warning inside a GREEN
lane is a warning nobody reads. It would have become a red night on a
major bump, for a reason unrelated to anything this lane measures.
Verified rather than assumed, 2026-11-07 against vulngate@latest: `--go`
is accepted and silent, same verdict, same exit status.
The call site pins nothing: this lane installs vulngate@latest on purpose
(a pin inside a `run:` block is read by no dependency manager and rots —
go-gitsafe/gitsafe carried one 36 minor versions behind), so the shim's
removal would have arrived here without a commit of ours.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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.
The lane this repository gained in #26 caught them in one night
Both advisories were published 2026-11-05 at 22:54 UTC. The nightly sweep went red on 11-06 and again on 11-07 — the first two scheduled runs after publication — and the report it keeps on failure named both. That is the whole purpose of #26, demonstrated rather than argued.
brotliv1.2.6 → v1.2.7session.go:106engineRender→engine.Engine.RenderWithLinks→brotli.Reader.Readserver.go:155dispatch→brotli.decodeError.Errorklauspost/compressv1.18.7 → v1.20.2fse/huff0server.go:115Server.HandlerListener→grpc.NewServer→fse.Decompress,huff0.ReadTable⛔ The first trace is the render path.
brotli.Reader.Readis reached fromengineRender— this program decoding a page it fetched. The exact symbol the advisory names, on the job the proxy exists to do, against content nobody here controls. The second pair is the gRPC server's compression. Both are denial of service on untrusted input; both have released fixes.⛔ And both were
// indirect. Renovate has no version string to compare or rewrite for a requirement the module does not declare for itself, so nothing was watching either — the third time this mechanism has hidden a reachable advisory in this repository, afterx/netin #26.Measured
Same tree, same
govulncheck,GOOS=linux GOARCH=amd64:The lane's own gate run by hand:
govulncheckwrote 889 KB of JSON andvulngateexited 0, judging the one remaining finding a notice — required, not called, and its upstream fix is a pseudo-version rather than a release.Second commit: two dashes, before the shim goes away
Running that gate surfaced a deprecation:
vulngatemoved to cobra. ⛔ A warning inside a green lane is a warning nobody reads — it would have become a red night on a major bump, for a reason unrelated to anything this lane measures. And the call site installsvulngate@lateston purpose (a pin inside arun:block is read by no dependency manager and rots:gitsafecarried one 36 minor versions behind), so the removal would have arrived here without a commit of ours.Verified rather than assumed:
--gois accepted, silent, same verdict, same exit status.Checks
actionlintsilent ·gofmtclean ·go build ./...ok ·go vet ./...silent ·go test ./...2 packages ok.Not in this PR
go-webengine/enginereaches GO-2026-6865 too, in its root and its nestedbenchmodule. That repository is claimed by another session; the finding has been sent to them.🤖 Generated with Claude Code