Repository navigation
fix(security): refresh runtime npm's bundled undici - #2645
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
Important
This repository does not receive automatic reviews because it has fewer than 10 stars.
|
Dependency Review✅ No vulnerabilities or license issues or OpenSSF Scorecard issues found.Scanned FilesNone |
TEST — exact-image repair and hosted checks verified, November12,2026Target Exact image comparisonIndependently downloaded both ZIPs, checked provider SHA256 digests, asserted image-source-commit.txt, parsed SARIF and compared rule/package/version/path multisets:
Hosted checks and limits
Remaining owner/action/triggerHayden: exact PR2645 or head Codex keeps parent image remediation separate: verify stable-distro fixes/applicability before altering OS packages; no unstable Debian mixing or silent exceptions. Qlty integration remains a separate optional access item. Existing PR2642 fork-event acceptance and action169 genuine multi-page gate remain open under their receipts. Failure handling and notificationAn older signed artifact URL returned403 during comparison; refreshing through the authorized download tool succeeded and both digests matched. No repository-permission diagnosis was inferred. A running build log initially returned BlobNotFound404; after terminal completion the same job log was retrieved. No code changes were needed for either retrieval failure. Notification YES: a demonstrated affected runtime bundle now has a safe, tested, exact-image-verified repair. Workflow value is fixing the image-only gap without touching already-patched application locks. Full reproduction and rollback are in the PR body; ESTIMATE10–20minutes excluding queues. No savings/revenue measured, paid provider test, production deployment, policy relaxation or new automation. |
Approved merge verified — PR2645Hayden explicitly approved this PR in the current conversation. Fresh preflight confirmed unchanged head Merged with GitHub expected-head protection: Merge VERIFIED. Post-merge tests IN_PROGRESS, not inherited from prior green results: CI43343802648, Security43343802638, Coverage43343802672, Dependency43343802606. Codex owns terminal readback and safe repairs in the current work. No production deployment or production acceptance claimed. The prior exact-image six-finding reduction remains evidence for the pre-merge head only until a merged-head image is checked. |
VERIFIED — approved merge and fresh post-merge checksMerge512a2558f73d6281b6a880548bedf140b7e30292 contains the exact approved head a782ecb, with only the two tested files changed relative to then-current main. GitHub expected-head protection was used. PR2645 merged; child2644 closed; parent2396/2478 stay open. Fresh merged-head results:
Related state correction: PR2642 was merged separately before this operation at0e4b269ebb841e8912d7adf0f785f17e842455bc, from head4432bf96788797085f0837a8dd6388fc2bc8d53f, merged_at2026-11-12T22:45:37Z. Its earlier draft checkpoint is historical and superseded, not current. This operation did not merge it or infer broader authority. Completed scope: approved PR2645 integration plus relevant fresh merged-head verification. Codex owns separately tracked image backlog#2396/#2478 and existing fork/multi-page acceptance gates, using their canonical records and approval boundaries. No manual production deployment or production acceptance claimed. The existing Watch checkpoint is updated so it will not request this approval or re-merge this PR. Ledger action180 and raw observation362 retain the evidence. |
Closes #2644
Refs #2396, #2478 (both parent image backlogs remain open).
The current-main image retains an affected Undici6.28.0 inside global npm12.2.0, even though the application lock entries are patched. Bump only the runtime Dockerfile pin to npm12.2.2 and update the existing policy regression. Two lines changed; no application manifest/lock, scan severity, exceptions or permissions change.
Security dependency evidence
Dockerfileinstalls global npm12.2.0; Undici is an npm-bundled transitive dependency, not an app direct dependency. Do not add it to package.json.b9a0dee7569ccee4ffafb5cf826ee65ec9386b73; scan43043843552, artifact13866682534, ZIP SHA25622a973f8dd23b0c7a0447fa6de92db591d58ec33d25e55abce0267487aba39ec, imagesha256:b8b21303fb2d867cd2ba423c687685c33ae6485ac1b445dabef8d0fa1e16c698. Independently parsed322 occurrences, including four Undici6.28.0 findings. This is not a clean-image baseline.^22.22.2 || ^24.15.0 || >=26.0.0. With local Node24.22.1, both CLIs report exact versions and install a local fixture offline with scripts/audit/funding disabled (exit0).Complete recipe
Prerequisites: Git, uv/Python3.11/3.12, Node supported by npm (local probe24.22.1); public package retrieval; hosted image build/scan. No provider key or paid API. ESTIMATE:10–20minutes excluding CI queues.
a782ecb234250b16e9caa3d8b854be037bc45fa2in isolation.uv venv --python 3.12 .venv-npm;uv pip install --python .venv-npm/bin/python pytest PyYAML ruff..venv-npm/bin/python -m pytest tests/unit/test_merge_policy_security_scan_wording.py -q -o addopts='' --confcutdir=tests/unit; expected4passed. Repeat with3.11..venv-npm/bin/ruff check tests/unit/test_merge_policy_security_scan_wording.py;git diff --check.https://registry.npmjs.org/npm/12.2.2, verify dist.integrity SHA512 against dist.tarball bytes, inspectpackage/node_modules/undici/package.jsonfor6.29.1. Compare12.2.0 for6.28.0. Run unpackednode package/bin/npm-cli.js --versionand offline local-fixture install with--ignore-scripts --no-audit --no-fund. Do not globally install over the host npm.Codex owns hosted follow-through and repair. Draft/unmerged; no exact approval or production deployment. Workflow opportunity: remove a verified image dependency gap without changing app dependencies. No measured savings or revenue.
Executable package verification (actually run)
Use Python3.12 and Node24.22.1 in a scratch directory. This reads public registry artifacts and installs only a local fixture; it does not change global npm or call a provider.
The retrieval, archive validation and CLI operations above were executed in two tool scripts; this combines those operations into one recipe. Hosted image validation remains separate.