Repository navigation
deps(v2): consolidate dependency updates and security fixes - #382
Merged
Merged
Conversation
…d gh in the image vf-management-api (the v2 line's only package-lock.json): - fastify ^5.8.5 -> ^5.12.7 (locked 5.12.7); fixes 7 fastify GHSAs. - In-range lock refresh, cut off at 2026-10-20T17:15Z (3-day release age): find-my-way 9.4.0 -> 9.10.0, fast-uri 3.1.0 -> 3.1.9 (ajv) / 4.2.3 (fastify 5.12), ws 8.19.0 -> 8.22.0, brace-expansion 5.0.5 -> 5.0.12, minimatch 10.2.4 -> 10.2.6, fast-copy 3.0.2 -> 3.1.0. - npm audit: 9 (6 high, 3 moderate) -> 3 (1 high, 2 moderate); the remaining high (@fastify/static via @fastify/swagger-ui 3) needs majors and is excepted in v2/audit-ignore. v2/Dockerfile: - yq 4.53.2 -> 4.54.1 and gh 2.90.0 -> 2.102.0 (same majors, both >= 3 days old). Both were built with Go 1.26.2, which Trivy flags (CVE-2026-33811/-33814/-39820/-39836/-42499 high); gh 2.102.0 also clears GHSA-8xvp-7hj6-mcj9 (high, < 2.93.0) and in-toto GHSA-pmwq-pjrm-6p5r.
Adds an npm-audit job to the v2 CI shim. It runs .github/scripts/v2/npm-audit.sh, which runs `npm audit --audit-level=high` on every committed package-lock.json and fails on any high or critical advisory not excepted in v2/audit-ignore. It fails closed when npm audit returns an error body (registry timeout) and flags exceptions that no longer match. The centralized ci-v2.yml on main is unchanged; its Trivy image scan still runs.
main's renovate.json will set useBaseBranchConfig: "merge", which needs a config file on every base branch. Shared policy stays on main.
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.
Dependency and security pass for the v2 line (Ubuntu 26.04 base), per
SECURITY.md"Supported Versions": in-major dependency fixes, toolchain patches only, a dependency audit in the branch's CI, and the branch-localrenovate.json.Superseded PRs
v2v2What changed
1.
deps(v2): npm lockfilev2/docker/lib/extensions/vf-management-api/resources/package-lock.jsonThis is the only committed
package-lock.jsonon the branch.^5.8.5→^5.12.7)<=5.12.4(GHSA-w2qp-rph6-63g4, -3m5p-2c4r-xxw2, -4mh8-r7rc-xpvc, -667r-xxjv-c9mm, -p68q-wchp-6fh7, -hwr6-493r-vm6h, -9q9j-q6p8-xq58)<=9.6.0)3.0.0 - 3.1.78.0.0 - 8.20.1)3.0.0 - 5.0.11^10.2.1override)Method: raise the fastify floor, then
npm update --package-lock-only --ignore-scripts --before=2026-10-20T17:15:00Z(an in-range refresh with a 3-day cutoff). fastify 5.12's own ranges also move some transitive packages up a major:fast-json-stringify ^7,fast-uri ^4,cookie ^2andset-cookie-parser ^3(via light-my-request 6.8). These follow from fastify's declared dependencies. No override forces them.2.
deps(v2): Docker image inputs (v2/Dockerfile)YQ_VERSIONGH_VERSION<=2.92.0), three low GHSAs (<2.97.0) and in-toto GHSA-pmwq-pjrm-6p5r.ubuntu:26.04(both stages) is unchanged. CI already builds withpull: trueandno-cache: true, so each build takes the current 26.04 point release, which is 26.04.1 today.3.
ci(v2): npm audit gateThe real v2 pipeline is
ci-v2.ymlonmain, called from this branch's shim. It runs a Trivy image scan, which is not blocking, and no dependency audit. This PR adds a branch-localnpm-auditjob to the shim (.github/workflows/ci.yml), somaindoesn't change. The job runs.github/scripts/v2/npm-audit.sh, which:npm audit --json --package-lock-onlyon every committedpackage-lock.jsonand fails on any high or critical advisory thatv2/audit-ignoredoesn't except for that lockfile, which is the same threshold as--audit-level=high;npm_config_registry=http://127.0.0.1:1, which exits 1);Exceptions use the same layout as v3's
v3/audit-ignore: av2/audit-ignorefile with a justification for each entry.4.
chore(v2):renovate.jsonThis is the minimal branch-local file needed before
mainsetsuseBaseBranchConfig: "merge". It is formatted with the repo's.prettierrcand passesrenovate-config-validator --stricton both renovate 37.440.7 and 44.181.0.Ignores
../%2E%2E, first patched in 10.1.1@fastify/swagger-ui@3.1.0 > @fastify/static@7.0.4@fastify/static ^7.0.0, and 7.x has no fix. The fix needs swagger-ui 6.1.2 and static 10, both majors./docs. It sets noallowedPath, and there are no route-scoped guards: auth is a globalonRequesthook inserver.js. The server also can't start with these dependencies (see the pre-existing issues below).The sibling advisory GHSA-8pvw-jcv7-9cmj (moderate,
allowedPathbypass, fixed in 10.1.2) is below the audit level, and this app doesn't useallowedPath.Deferred majors
fastify-plugingoes from ^4 to ^5, and the registration-time check moves from 4.x to 5.x. swagger-ui 5 also supports fastify 5 but still uses @fastify/static below 10, so 6.1.2 (@fastify/static ^10.1.0) is needed. I haven't reviewed each plugin's changelog for API changes.server.jsand the websocket routes.main: ./dist/cjs/index.js), sorequire('uuid')still resolves.buf)utils/comfyui-manager.jsonly callsv4()withoutbuf, so the vulnerable path isn't reached.node:20-slim→ 22/24 invf-zai-service/resources/DockerfileCOPY claude-zai/wrapper/path doesn't match the tree, so I couldn't verify it builds.Release-age gate (3 days)
lock-age.sh --local origin/v2 .: 1 changed lockfile, 43 new entries, 0 UNDER, 0 UNKNOWN (cutoff 2026-10-20T17:19Z). The youngest new entries are fast-uri 3.1.9 and 4.2.3 at 3.7 days and fast-json-stringify 7.1.2 at 4.0 days. yq 4.54.1 is 24 days old and gh 2.102.0 is 23 days old. No release-age exceptions. I deliberately didn't take gh 2.102.1 (Go 1.27.3, published 2026-10-20T19:35Z, under 3 days old): it isn't itself a first-patched release in GHSA or OSV.Audit counts
npm audit --audit-level=high(vf-management-api)npm-audit.shci-v2.ymlonmain, not blocking)v2(May run): yq and gh with Go 1.26.2 stdlib (5 high, 3 medium each), gh in-toto,pebbleandsedPre-existing issues (reported, not fixed: each needs a major or an owner decision)
@fastify/*plugin is a fastify-4 major. Reproduced on both the old and new lockfiles withnpm ci --ignore-scriptsand thenf.register(require(p)); f.ready(). Every plugin fails withFST_ERR_PLUGIN_VERSION_MISMATCH("expected '4.x' fastify version"). This dates from the Dependabot fastify bump; see the deferred majors.install.shcopies the resources, then runsnpm install express cors helmet pm2 pino pino-pretty uuid. That is a different dependency set, resolved at latest at runtime, rather thannpm ci.package.jsonfiles have no lockfile, so they can't be audited or age-gated: vf-comfyui, vf-jupyter-notebooks, vf-playwright-mcp and vf-web-summarymcp-servers, vf-zai-servicewrapper, vf-import-to-ontology, ande2b/template. Generating lockfiles would change runtime install behaviour, so that's left to the owner.curl https://mise.run | sh,curl https://claude.ai/install.sh | bash, and (vf-zai-service)npm install -g @anthropic-ai/claude-code.Verification
CI (run 39995223099, head
43e05c0, usingmain's reusable workflows after #378, e.g.actions/checkout@v7.0.1)All checks pass: Build v2 Docker Image, Generate Test Matrix, Security Scan, Test v2 on Docker, Test v2 on Fly.io, Test v2 on DevPod K8s, CI v2 Required Checks, CI v2 Status, Trivy, and npm audit (high). Mark as Promotion Candidate is skipped because it only runs on
mainpushes. The last v2 run before this PR (2026-05-14, run 25833797859) was also green, so nothing here is a pre-existing failure.The empty commit
ci(v2): re-run CI on main's updated reusable workflows (#378)only retriggers CI. The first run started 18 s before #378 merged, so I cancelled it.The Trivy results on this PR are informational, since Trivy isn't blocking in
ci-v2.yml. The Go 1.26.2 findings on yq and gh are gone. The newer Go 1.27.1 findings remain: CVE-2026-111943, -78667, -78669 and -97031 (high), fixed in Go 1.27.2/1.27.3 and x/net 0.60.0. They affect yq, gh and/usr/bin/pebble(from the base layer).🤖 Generated with Claude Code