Repository navigation
fix(images): refresh runner and distro security floors - #449
Merged
Merged
Conversation
5 tasks
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.
Summary
Refresh the security floors in published container images. Includes an explicitly accepted, single-advisory temporary pnpm exception tracked in #450; no required checks or image scanners are disabled.
154.0.8037.57-1~deb13u1.brace-expansionto5.0.12,ip-addressto10.7.1, andundicito6.28.1.11.20.0to11.28.2(same major) and align setup documentation. The old Corepack-cached pnpm distribution also bundled vulnerableundici; updating only npm's global overlay does not fix it.undicicopy, with deterministic unit and filesystem/CLI regression tests.http-cache-semanticsto official4.3.0, with a narrowly scoped lockfile update and consumer-level cache tests.Evidence and scope
The image publication scan on main at
446d1ee8f4b61932ec19984a3b0aa05b35021a30failed: CI run. The root dependency lockfile does not govern npm's global dependencies or the package manager bundled inside the runner.Base image digests, agent CLI versions, scan thresholds, IAM and deployment configuration are unchanged. The only new audit exception is GHSA-vfj7-8cjw-p6xm, described below. This PR changes no lifecycle or authorization behavior. It affects future image builds after review/merge; it does not mutate running workspaces.
Validation
11.28.2: passed, including the follow-up cache dependency update.git diff --check: passed.pnpm verify: lint, typecheck and clean builds passed, but the critical test stage stopped at a 5-second timeout inworkspace-vercel-bootstrap.integration.test.ts(starts the real authenticated gateway through the SDK user switch without exposing a bare app; 16 other tests in that file passed). This run is not green; the timeout is not suppressed or claimed to be a proven pre-existing failure. The remaining verification stages did not run in that invocation.0.110.0with--only-fixed --fail-on highreported zero matching fixable vulnerabilities.Follow-up validation and remaining audit blocker
http-cache-semantics@4.3.0update removes GHSA-ch52-4w7c-c8xp from the current audit result. Three added tests check the actual transitive resolution, the documentedstorable()gate for private/no-store responses, and real HTTP-client behavior against a local server (private isolation and public-cache compatibility). These and the three existing dependency-security tests pass, as do the docs build, lint and diff checks.storable()before storing responses; revalidation alone is not that gate.braces@3.0.3. Latest official npm remains 3.0.3. The maintainer disputes the report in upstream #70, and proposed fixes #72 and #75 are closed without merge. An advisory clarification PR is pending, not an accepted fix or withdrawal.October 6: explicitly approved temporary exception
Added only
GHSA-vfj7-8cjw-p6xmto pnpm's existingauditConfig.ignoreGhsas, with an English comment linking tracking issue #450. Owner: @alvaroloes. Human review date: 2026-10-13. This is temporary risk acceptance, not a braces fix. There is no automatic expiry, additional workflow or change to required checks. Existing exceptions are unchanged; no image-scanner exception is added.The first October 6 audit after that exception returned 11 other non-ignored findings (3 critical, 4 high, 3 moderate, 1 low). The follow-up below addresses them after explicit authorization; they were not added to the ignore list.
Authorized follow-up: remove the 11 additional audit findings
proxy-addr2.0.8 andtinypool2.1.2 (two advisories). Tinypool 2 drops Node 18; the repository's supported Node 22/24 contract is unchanged. Tests exercise actual HTTP trust behavior and real workers with inheritedexecArgv,envand per-taskfilenamevalues in disposable processes, alongside normal worker operation.source-map-js1.2.2,compression1.8.2,postcss-selector-parser7.1.6,prosemirror-view1.42.3, coordinated Vue 3.5.42 packages, KaTeX 0.18.2 and Joi 17.13.8. The selector-parser major and KaTeX pre-1.0 minor changes are included in the compatibility/build verification, not characterized as patch-only changes.sprintf-jsinstead of ignoring it: scope officialargparse2.0.1 tojs-yaml@3. Its legacy API compatibility preserves data conversion, but the old constructorversionoption prints nothing. A small checked-injs-yaml@3.15.2CLI-only compatibility patch switches that flag to an explicit version action. The YAML parser is not modified. Unit/CLI integration tests cover actual resolution, lockfile removal of sprintf-js, YAML parsing, conversion, help, version output and rejection of invalid options. This local compatibility patch is not presented as an upstream js-yaml release.pnpm audit --audit-level lownow passes, with only previously accepted advisory exceptions. No new ignores beyond the separately approved braces exception; no thresholds, required checks, image scans or deployment controls are changed.pnpm verifypassed lint/typecheck/clean build and the critical DB/CLI/API suites, then hit the existing image-size ICNS subprocess's 1.5-second timeout in the parallel script stage. A separate serialized script run verifies that case without changing its timeout or CI concurrency. Final full remote CI remains the merge gate; no merge/deployment performed.