Skip to content

sec(deps): shipped /app/cudly binary carries 2 dependency advisories (GO-2026-5158, GO-2026-5932) #1837

Description

@cristim

Surfaced while verifying #1835 (which closes #1833). Out of that issue's scope (#1833 is specifically about Go standard library CVEs from the toolchain) but found in the same scan, and it affects the shipped binary.

What

govulncheck -mode=binary against /app/cudly extracted from the image built on the #1835 branch, on both architectures:

Your code is affected by 2 vulnerabilities from 2 modules.

Standard-library findings: 0 (that is #1833, now fixed). The two remaining are dependency advisories:

  • GO-2026-5158
  • GO-2026-5932

At least one traces into golang.org/x/crypto.

Why it matters

These are in the binary we deploy, and they are reachable enough that govulncheck's symbol analysis surfaced them rather than filtering them out as unused code paths. /app/cudly is the API server.

Note also that CI's govulncheck runs in source mode over the six modules, so these should be visible there too. Check whether the CI job currently passes despite them, and if so, why. Either it is not failing on non-stdlib findings, or the source-mode analysis reaches a different conclusion from the binary-mode one. Both possibilities are worth understanding, because they determine whether anything would catch the next such advisory.

Fix direction

  1. Confirm both advisories against the live vulnerability database and identify the fixed versions.
  2. Bump the affected modules (go get -u, then go mod tidy) across every module in the workspace that pulls them in: this is a go.work monorepo with 6 modules (., pkg, providers/{aws,azure,gcp}, tests/e2e), and ./... only covers the current one.
  3. Re-scan the built binary, not just the source, and assert with a sound method.

Verification bar

Assert on govulncheck's summary line, or use -format json and count OSV entries. Do not use a bare grep -c 'Module: stdlib': govulncheck v1.1.4 does not emit that string, it prints a bare Standard library line, so that pattern returns 0 whether or not findings exist. That vacuous check was found on #1835 and is exactly how an artifact ships dirty behind a green result.

Related: #1836 (nothing in the pipeline scans the image we ship), #1833 (the stdlib half, fixed by #1835).

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions