Skip to content

deps: clear the fourteen advisories Scorecard reports, by version bump only - #43

Open
distronode-com wants to merge 1 commit into
Calnode:mainfrom
distronode-com:up/deps
Open

deps: clear the fourteen advisories Scorecard reports, by version bump only#43
distronode-com wants to merge 1 commit into
Calnode:mainfrom
distronode-com:up/deps

Conversation

@distronode-com

Copy link
Copy Markdown
Contributor

Scorecard's Vulnerabilities check reports fourteen advisories against this tree. All of them clear with version bumps, and none of them is reachable in this codebase, so this is housekeeping rather than a fix for a live problem.

Advisory Package From To
GO-2026-6303, GO-2026-6354, GO-2026-6355, GO-2026-5932 golang.org/x/crypto v0.53.0 v0.56.0
GHSA-29g2-3rmr-qm68, GHSA-866w-xmhq-wj7x, GHSA-wqjv-9729-c5q2 @sveltejs/kit 2.65.1 2.70.3
GHSA-p63j-vcc4-9vmv @vitest/browser (+ vitest, @vitest/browser-playwright, which peer-pin each other exactly) 4.1.9 4.1.11
GHSA-fxqj-rqcc-2cmp, GHSA-r28c-9q8g-f849 postcss (transitive) 8.5.15 8.5.28
GHSA-28wg-ghj8-5hjv, GHSA-2v37-7h3g-55p8 nanoid (transitive) 3.3.12 3.3.19
GHSA-pxg6-pf52-xh8x cookie (transitive, via Kit) 0.6.0 0.7.2

Why none of them bites here: the four x/crypto advisories are in ssh and openpgp, and this tree imports only bcrypt and argon2; the three Kit advisories are in its server runtime, which never runs under adapter-static (the built SPA is embedded and served by Go); @vitest/browser is test-only; postcss and nanoid are build-time.

Two things worth a look:

  • cookie needed a pnpm overrides entry ("cookie@^0.6.0": "^0.7.2"), because Kit 2.70.3 still declares ^0.6.0 and for a 0.x version that caret cannot reach 0.7. It is scoped to that range so msw's cookie@1.1.1 is untouched, and it should go the moment Kit widens its own range. If you would rather not carry an override, dropping that hunk leaves one LOW advisory open and nothing else changes.
  • go.mod's directive moves from go 1.26 to go 1.26.0, because x/crypto v0.56.0 declares the patch form and go build refuses to proceed otherwise. Same language version, spelled out.

go mod tidy moved nothing else. The fifteenth entry Scorecard lists, GHSA-q7pp-wcgr-pffx in disintegration/imaging, has no fixed release and is left alone; it is unreachable in any case, since every upload goes through decodeUploadedImage's content-type sniff before imaging.Fit ever sees a decoded image.

Verified: pnpm audit reports no known vulnerabilities; pnpm build and pnpm test:visual (5/5 in Chromium) pass; go build, go vet and the keyvault and handler test packages pass.

🤖 Generated with Claude Code

…p only

OpenSSF Scorecard's OSV check reports fourteen advisories against this tree.
None of them needs a code change; all but one are closed by moving a version.

Go:

  GO-2026-6303 · GO-2026-6354 · GO-2026-6355 · GO-2026-5932
    golang.org/x/crypto  v0.53.0 -> v0.56.0

  Nothing behavioural changes here. The affected packages in those four
  advisories are x/crypto/ssh and x/crypto/openpgp; this tree imports only
  bcrypt and argon2 (internal/keyvault/keyvault.go,
  internal/handler/{claim,email_auth,invites}.go, cmd/calnode/reset_admin.go),
  neither of which is touched by any of them. The bump is still worth taking so
  the module graph stops reporting them.

  go.sum moves two lines and no other module moves. The `go` directive goes
  from `go 1.26` to `go 1.26.0` because x/crypto v0.56.0 declares `go 1.26.0`
  and the go command requires the main module to be at least that; `go 1.26`
  alone now fails with "updates to go.mod needed". Same language version,
  written out.

  GHSA-q7pp-wcgr-pffx
    github.com/disintegration/imaging  v1.6.2 -> not fixed upstream

  Left alone deliberately: there is no fixed release. imaging is also not on a
  reachable path for it here. Every call site (avatar.go, branding_settings.go)
  goes through decodeUploadedImage in internal/handler/image_upload.go, which
  sniffs the content type with http.DetectContentType and rejects anything that
  is not JPEG, PNG, GIF or WebP before decoding, and it caps decoded pixels.
  imaging itself is only ever asked for imaging.Fit on an already-decoded
  image.Image - its decoders are never called.

Frontend:

  GHSA-29g2-3rmr-qm68 · GHSA-866w-xmhq-wj7x · GHSA-wqjv-9729-c5q2
    @sveltejs/kit   ^2.65.1  -> ^2.70.2   (resolves 2.70.3)

  All three are in Kit's server runtime, which this project never runs: the
  admin app builds with adapter-static and fallback: '200.html' (see
  frontend/svelte.config.js) and is served as static files embedded into the Go
  binary. The bump is still the right answer rather than an exception note -
  the dependency is in the tree, and five minors of Kit fixes come with it.

  GHSA-p63j-vcc4-9vmv
    @vitest/browser             ^4.1.9 -> ^4.1.10  (resolves 4.1.11)
    vitest                      ^4.1.9 -> ^4.1.10  (resolves 4.1.11)
    @vitest/browser-playwright  ^4.1.9 -> ^4.1.10  (resolves 4.1.11)

  Test-only, but rated critical. Vitest's packages peer-depend on each other at
  an exact version, so all three move together or pnpm reports an unmet peer.

  GHSA-fxqj-rqcc-2cmp · GHSA-r28c-9q8g-f849
    postcss  8.5.15 -> 8.5.28   (transitive: vite, shadcn-svelte)

  GHSA-28wg-ghj8-5hjv · GHSA-2v37-7h3g-55p8
    nanoid   3.3.12 -> 3.3.19   (transitive: postcss)

  Both moved inside their parents' existing ranges, lockfile only.

  GHSA-pxg6-pf52-xh8x
    cookie   0.6.0 -> 0.7.2     (transitive: @sveltejs/kit)

  This one needs a pnpm override, which is why there is now an `overrides`
  block. @sveltejs/kit 2.70.3 - the newest 2.x - still declares cookie ^0.6.0,
  and for a 0.x version that caret means >=0.6.0 <0.7.0, so the fixed 0.7.0
  cannot be reached within the range. The override is scoped to that range
  (`cookie@^0.6.0`) so it does not touch the separate cookie 1.1.1 that msw
  pulls in, which was never affected. Worth flagging for review: forcing a
  dependency inside Kit is a maintainer's call. The risk here is small - cookie
  0.7.x is the same API with stricter validation of names, paths and domains,
  and under adapter-static the Kit code that calls it never executes - but it
  is an override and it should be dropped the moment Kit widens its range.

Verified: pnpm install --frozen-lockfile, pnpm build and pnpm test:visual
(Vitest browser mode, 5/5) all pass; pnpm audit reports no known
vulnerabilities. On the Go side go build ./..., go vet ./... and
go test ./internal/keyvault/... ./internal/handler/... all pass.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

@pullfrog pullfrog Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ No new issues found.

Reviewed changes Version-only dependency bumps to clear Scorecard Vulnerabilities noise where a fixed release exists. No application code changes.

  • golang.org/x/crypto → v0.56.0 (and go 1.26go 1.26.0 for the module’s declared language form). Clears the three ssh advisories; this tree only imports bcrypt/argon2.
  • @sveltejs/kit → 2.70.3 (lock), vitest browser stack → 4.1.11, plus transitive postcss/nanoid refreshes. SPA stays on adapter-static.
  • Scoped pnpm override cookie@^0.6.0^0.7.2 so Kit’s 0.x caret can reach the patched line without touching msw’s cookie@1.1.1.

Verified here: pnpm audit clean, pnpm build OK, go build/vet and keyvault/handler tests pass, govulncheck reports 0 symbol-level hits.

ℹ️ Title/body slightly overstates GO-2026-5932 clearance

The crypto bump is right for GO-2026-6303 / 6354 / 6355. GO-2026-5932 (x/crypto/openpgp) has no fixed release (Fixed in: N/A) and still shows as a module-level finding on v0.56.0 under govulncheck -show verbose. Same class as the imaging entry you correctly left alone: Scorecard may keep listing it after merge even though nothing in this tree calls openpgp. Worth a one-line PR-body tweak so the “fourteen cleared” claim matches what Scorecard will still see (openpgp + imaging).

Technical details
# GO-2026-5932 is not cleared by x/crypto v0.56.0

## Affected sites
- PR description table lists GO-2026-5932 under “From → To” as cleared by the crypto bump
- `golang.org/x/crypto@v0.56.0` still carries GO-2026-5932 at module level (openpgp, all versions)

## Required outcome
- PR title/body should not claim GO-2026-5932 is resolved by this bump; treat it like imaging (unfixed, unreachable)

## Suggested approach (optional)
- Drop GO-2026-5932 from the “cleared” table; note it remains as an unfixed module-level advisory with no call path

Pullfrog  | View workflow run | Using Grok𝕏

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant