security: add govulncheck CI and fix 4 active vulnerabilities - #209
Merged
Conversation
Add a govulncheck GitHub Actions workflow that runs on pull requests and pushes to main. The workflow uses golang/govulncheck-action to detect vulnerabilities in the call graph (not just the module graph), so it only alerts on code paths that are actually reachable. Upgrade three modules to eliminate all four confirmed vulnerabilities: - google.golang.org/grpc v1.62.1 → v1.82.1 (GO-2026-6061) - golang.org/x/net v0.47.0 → v0.55.0 (GO-2026-4918, GO-2026-5026) - golang.org/x/text v0.32.0 → v0.39.0 (GO-2026-5970) All four vulnerabilities were reachable through the webhook and GCP PubSub outputs. See the PR description for per-vulnerability impact analysis.
kcreddy
approved these changes
Aug 4, 2026
andrewkroh
enabled auto-merge (squash)
August 4, 2026 13:57
💚 Build Succeeded
|
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.
Proposed commit message
Vulnerability impact analysis
All four CVEs were confirmed reachable by
govulncheck— meaning thevulnerable code paths are actually called by this codebase, not just
present in the module graph.
GO-2026-6061 — grpc: xDS RBAC / HTTP/2 transport server (grpc v1.62.1 → v1.82.1)
Impact: Two distinct issues in grpc's HTTP/2 implementation.
Users of the GCP PubSub output (
-output=gcppubsub) are affectedbecause the pubsub client internally uses gRPC over HTTP/2. An attacker
who controls the pubsub endpoint (e.g. via a MITM on an unencrypted or
misconfigured connection) could trigger the transport vulnerability.
The webhook output is also affected via its HTTP client, which gRPC
internally reuses.
Concrete scenario: A process running
stream -output=gcppubsubtalksto a malicious or compromised gRPC server; the server sends a crafted
response that exploits the HTTP/2 transport bug, causing stream to crash
or behave incorrectly.
GO-2026-4918 — x/net: infinite loop on bad SETTINGS_MAX_FRAME_SIZE (x/net v0.47.0 → v0.53.0)
Impact: The HTTP/2 transport enters an infinite loop when the server
sends a
SETTINGSframe with an invalidMAX_FRAME_SIZE. Users of thewebhook output (
-output=webhook) sending data to an HTTP/2 serverare affected. A malicious webhook target can send a single crafted
SETTINGSframe and hang the stream process indefinitely (DoS).Concrete scenario:
stream -output=webhook --addr=https://evil.example— the server responds with
SETTINGS MAX_FRAME_SIZE=0, stream's HTTP/2client loops forever, consuming 100% CPU and never delivering events.
GO-2026-5026 — x/net/idna: ASCII-only Punycode label not rejected (x/net v0.47.0 → v0.55.0)
Impact:
idna.ToASCIIfails to reject labels that are purelyASCII-encoded Punycode (e.g.
xn--nxasmq6b.comwhen that decodes tosomething that should be blocked). This is reachable through
http.Client.Doin the webhook output. A crafted webhook URL couldbypass IDNA validation and resolve to an unexpected host, potentially
enabling SSRF or host-confusion attacks in environments where the webhook
URL is user-controlled.
GO-2026-5970 — x/text: infinite loop on invalid input in text normalizer (x/text v0.32.0 → v0.39.0)
Impact: Passing certain malformed byte sequences to
norm.Formfunctions triggers an infinite loop. This is reachable via
http.Client.Doin the webhook output when Go's net/http stacknormalizes headers or URLs containing non-UTF-8 byte sequences. An
attacker who can inject such a sequence into a header value (e.g. via
event data that gets forwarded as an HTTP header) can hang the stream
process.