Bump x/crypto to 0.56.0 and grpc to 1.83.1 for three HIGH CVE rows - #510
Merged
Conversation
Dev chart scan 34027081656 attributes three fixable HIGH advisories to this repo, all on the root module and so on every shipped binary: CVE-2026-56855 GO-2026-6355 x/crypto v0.55.0 -> 0.56.0 CVE-2026-78662 GO-2026-6354 x/crypto v0.55.0 -> 0.56.0 CVE-2026-84304 GHSA-vp52-pcj8-j9qc grpc v1.82.1 -> 1.83.1 Both x/crypto defects are DoS-on-deadlocked-channel bugs in golang.org/x/crypto/ssh, fixed in 0.56.0, which is the current latest release. The grpc defect is heap exhaustion via HTTP/2 DATA frame fragmentation, vulnerable <= 1.83.0 and first patched in 1.83.1. Each fixed version was read from the upstream advisory rather than taken from the scanner's lead. The two open grpc dependabot PRs do not reach a shipped binary, so neither substitutes for this. #503 bumps comp/otelcol/otlp/components/statsprocessor, which is absent from go.work and not required by the root go.mod -- the same category as datadogconnector and test/integration/serverless/src. #504 bumps test/e2e-framework, a test-only module that ships in no image. #503 stays valid for its own module and is untouched here; #504 is subsumed, because go work sync from the root bump already moves test/e2e-framework to grpc v1.83.1. Applied with `go get` on the root module followed by `go work sync`, then `go mod tidy` across all 186 workspace modules, which is what CI's check-mod-tidy reproduces. cel.dev/expr and detectors/gcp move as MVS consequences of grpc 1.83.1. Four modules stay behind deliberately -- statsprocessor, datadogconnector, pkg/dyninst/testprogs/progs and test/integration/serverless/src are all outside the workspace and outside the root build graph, so they reach no shipped binary and tidy would not raise them. Read back with `go version -m` on binaries built for both published architectures: installer amd64 and arm64 and cluster-agent amd64 all report x/crypto v0.56.0 and grpc v1.83.1, with no v0.55.0 or v1.82.1 anywhere in the embedded module graph. go.sum no longer carries x/crypto v0.55.0 at all. Keeps both GO-2026-5932 exception files rather than dropping them: that advisory is the "openpgp is unmaintained" report with introduced: 0 and no fixed version in any release, so it applies to v0.56.0 exactly as it did to v0.55.0. Only the pinned purl moves, so the record stays truthful; the expiry dates are the owner's call and are left alone. Refs #509
The file claimed upstream had published no fixed CPython in any release line. That is wrong, and a false statement in a security record is worth correcting even though it changes no gate outcome. Upstream fixed this on every maintained branch in June/July 2026. The 3.13 backport is python/cpython@eee3ddf0; comparing eee3ddf0...v3.13.15 gives behind_by: 0, so the commit is an ancestor of the v3.13.15 tag. The embedded interpreter is pinned to 3.13.15 in omnibus/config/software/python3.rb, so this image already carries the fix and the row reflects data quality, not exposure. Why a scanner still reports "no fixed version": NVD records a single CPE range of `< 3.1.5` for this CVE, an obvious data-entry artifact given the advisory postdates that release by 16 years, and the PSF advisory expresses the fix only as seven git commits with no version ranges. A matcher keying on versions has nothing to compare against. Left as under_investigation on purpose. Retiring the file turns the row unmanaged, and asserting not_affected belongs in a reviewed vexhub statement, so the disposition stays with @StackVista/observability-team. The expiry date is untouched for the same reason. Status does not affect suppression -- Evaluate() suppresses any matched unexpired exception regardless -- and this file expired on 2026-09-04, so nothing about the gate changes either way. Refs #509
…ange Review caught a factual error: the file said this advisory postdates Python 3.1.5 by "16 years". Python 3.1.5 final is dated 2012 (the release commit python/cpython@c37a4fdf is 2012-04-06; the official artifacts are 2012-04-09) and the advisory was published 2026-06-30, so the gap is roughly fourteen years. While correcting the number, replace the hand-wave. Calling NVD's `< 3.1.5` an "obvious data-entry artifact" was a guess; the cause is actually traceable. The PSF advisory expresses the fix only as git commits with no version ranges, and the first commit it lists is c37a4fdf -- the "bump to 3.1.5 final" release commit that the lightweight v3.1.5 tag points at. A deriver resolving that commit to its nearest tag produces "fixed in 3.1.5", which is exactly the single CPE range NVD carries. That explains both the absurd range and why a version-keyed matcher falls back to "no fixed version". Nothing about the disposition changes: the 3.13 backport eee3ddf0 is still an ancestor of v3.13.15, the embedded interpreter still carries the fix, and the status stays under_investigation for @StackVista/observability-team to settle. Refs #509
LouisLotter
approved these changes
Sep 6, 2026
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.
Clears the three fixable HIGH rows the dev chart scan 34027081656 attributes to this repository, and corrects one exception record that turned out to be factually wrong. Tracked in #509, coordinated from cve-reporter#29.
The bump
golang.org/x/cryptogolang.org/x/cryptogoogle.golang.org/grpcBoth x/crypto defects are DoS-on-deadlocked-channel bugs in
golang.org/x/crypto/ssh, bothfixed: 0.56.0. The grpc defect is heap exhaustion via HTTP/2 DATA frame fragmentation, vulnerable<= 1.83.0, first patched1.83.1. Every fixed version was read from the upstream advisory, not taken from the scanner's lead.Why this is not the two open dependabot PRs
The scan pins both findings to the root module, which is where the shipped binaries come from. Neither open grpc PR touches it:
comp/otelcol/otlp/components/statsprocessor— absent fromgo.workand not required by the rootgo.mod, so it reaches no shipped binary. Same category asdatadogconnectorandtest/integration/serverless/src. It stays valid for its own module and is not duplicated here.test/e2e-framework, a test-only module that ships in no image. It is subsumed:go work syncfrom the root bump already moves that module to grpcv1.83.1, so it can be closed as redundant once this lands.The thrift PRs #505/#506 are unrelated to this scan — no thrift row is attributed to
stackstate-agent; this cycle's thrift advisory (CVE-2026-43871, mavenlibthrift) belongs tostackgraph.How it was applied
go geton the root module, thengo work sync, thengo mod tidyacross all 186 workspace modules — what CI'scheck-mod-tidyreproduces.cel.dev/expranddetectors/gcpmove as MVS consequences of grpc 1.83.1.Four modules stay behind deliberately:
statsprocessor,datadogconnector,pkg/dyninst/testprogs/progsandtest/integration/serverless/srcare all outside the workspace and outside the root build graph, so they reach no shipped binary andtidywould not raise them either.Verification
Read back with
go version -mon binaries built for both published architectures:installeramd64installerarm64cluster-agentamd64No
v0.55.0orv1.82.1anywhere in the embedded module graphs, andgo.sumno longer carries x/cryptov0.55.0at all. All 186 modules tidy clean with no errors.Local builds are direct
go buildof the same main packages, not the full omnibus/branded pipeline — the arm64 cgo cluster-agent and the rtloader-linked agent need the prewarmed CI container, so required CI is the authority for the per-arch shipped artifacts and is being followed to a terminal state. Corroborating detail:go list -depsshows the cluster-agent links neitherx/crypto/sshnorx/crypto/openpgp, which matches the scan attributing the x/crypto rows to the agent image only.Both GO-2026-5932 exceptions are kept
That advisory is the "openpgp package is unmaintained" report with
introduced: 0and no fixed version in any release, so it applies tov0.56.0exactly as it did tov0.55.0. Only the pinned purl moves so the record stays truthful. Expiry dates are untouched — those are the owner's call.Commits two and three: correcting CVE-2026-4360
exceptions/stackstate-k8s-agent/CVE-2026-4360.yamlclaimed upstream had published no fixed CPython in any release line. That is wrong.Upstream fixed it on every maintained branch in June/July 2026. The 3.13 backport is
python/cpython@eee3ddf0, and comparingeee3ddf0...v3.13.15givesbehind_by: 0— the commit is an ancestor of thev3.13.15tag. The embedded interpreter is pinned to 3.13.15, so this image already carries the fix and the row reflects vulnerability-data quality, not exposure. The scanner reports "no fixed version" for a traceable reason, not merely an odd one: the PSF advisory expresses the fix only as git commits with no version ranges, and the first commit it lists —python/cpython@c37a4fdf— is the 2012-04-06 "bump to 3.1.5 final" release commit that the lightweightv3.1.5tag points at. A deriver resolving that commit to its nearest tag yields "fixed in 3.1.5", which is exactly the single< 3.1.5CPE range NVD carries, roughly fourteen years before this advisory was published.The third commit (
c22f7cbd) exists because review caught a factual error in the second: the file had said "16 years", but Python 3.1.5 is dated 2012, making the gap about fourteen years. That commit fixes the number and replaces the earlier hand-wave ("obvious data-entry artifact") with the traceable cause above.Left as
under_investigationon purpose: retiring the file turns the row unmanaged, and assertingnot_affectedbelongs in a reviewed vexhub statement. No.trivyignoreentry and no new suppression was added anywhere in this PR.Not addressed here — needs a human decision
Nine rows have no adoptable fix, and one more is already fixed in the shipped build but misreported by the scanner. Keeping those apart matters — counting all ten as "no fix" would contradict the correction this PR makes. All are recorded as deferred on #509 with evidence, owner
@StackVista/observability-team:CVE-2026-40355andCVE-2026-40356are true positives with no released fix (upstream committed it, but 1.22.3 is unreleased and 1.22.2 is still in range, so even a bump to latest would not clear them).CVE-2007-3149andCVE-2007-5894look like versionless-CPE mismatches: the first is a sudo defect and the second is vendor-disputed gssftpftpd, neither of which is the shippedlibkrb5.so.3.3.CVE-2025-15367,CVE-2026-15806,CVE-2026-17084,CVE-2026-19672,CVE-2026-15310are fixed only in unreleased 3.15/3.16.CVE-2026-4360is not in the no-fix group: the installed 3.13.15 interpreter carries the fix, as shown above. It stays deferred only because the disposition (reviewed vexhub statement versus scoped exception) is the owner's call.Also flagged on #509: all four exception files expired on 2026-09-04. The fail-closed behaviour #500 established is live, but it lives in
image-pipeline(evaluator/evaluate.go), which is why #501 was closed unmerged. Nothing is silently lapsing in a gating sense, but this repo's own image scan ismode: inform, so those dates gate nothing here and need renewing or retiring by their owner.Test plan
CI was terminal green at
56675787(30 checks pass, 12 skipped, 0 failed). The third commitc22f7cbdchanges one YAML file and no Go source, so the re-run at the new head is expected to match:CI success (lint and unit tests)— includesGo module tidiness (go.mod / go.sum), which re-runsgo work sync+go mod tidyper module and fails on any diffCI success (DEB package build)— omnibus amd64 and arm64, plus branding verificationCI success (binary builds)— agent and cluster-agent binaries on amd64 and arm64Image rescan results from CI's VEX-aware
scan-imageaction (Trivy vuln + Grype, plus a separate Trivysecret scan at
UNKNOWN,LOW,MEDIUM,HIGH,CRITICAL):Zero occurrences of
CVE-2026-56855,CVE-2026-78662orCVE-2026-84304in any scan log, and zero HIGHrows anywhere.
No secrets detected in image.on every variant. The one UNKNOWN row per variant isGO-2026-5932reporting againstx/crypto v0.56.0— the kept openpgp exception, correctly tracking thenew version.
Note for the reviewer: the scans also surface
expired: 3/expired: 1, naming all fourexceptions/files as expired since 2026-09-04. That predates this PR and is flagged on #509 for
@StackVista/observability-team; it is not introduced or masked here.