Skip to content

fix: use patched Node releases for component tooling - #747

Open
sybohy wants to merge 4 commits into
mainfrom
fix/node-brotli-security-20261024
Open

sybohy wants to merge 4 commits into
mainfrom
fix/node-brotli-security-20261024

Conversation

@sybohy

@sybohy sybohy commented Oct 24, 2026 •

Copy link
Copy Markdown
Member

Move local and shared component tooling from EOL Node 20 to 22.23.4, replace EOL 18/20 CI test/install/lint/typecheck runners with patched 22.23.4 / 24.22.1, and pin release tooling to 24.22.1 for CVE-2026-111497. Consumer engines.node >=18.12.0 and dependencies are unchanged; browser-library support is a separate declaration from the build machine's Node binary.

The devcontainer uses Microsoft’s maintained Bookworm image and copies Node 22.23.4 from a digest-pinned official image into the system path and every inherited nvm binary. This replaces vulnerable inherited binaries as well as the default shell runtime.

Validation: npm ci completed on the SHA256-verified Node 22.23.4 binary without changing the lockfile. Production bundles and typecheck passed. The bounded local full suite passed 64/65 tests; its duplicate-DOM DeviceDetails assertion passed when isolated. CI tests, lint, typecheck, package builds, docs and package-install smoke passed on both patched majors; the Vercel preview also passed. The corrected complete devcontainer built and reports v22.23.4 from login-shell PATH, direct /usr/local/bin/node, and nvm after sourcing its initialization script. CI is rerunning for that inherited-binary correction. The package will not be published by this task.

Rollout handoff: rebuild developer containers and use .nvmrc locally; new CI/release jobs use the pinned binaries. Separately verify the Node runtime of hosted docs/examples and servers consuming this library. Updating browser bundles does not replace those servers' Node binary; this CVE alone does not require an npm/CDN release. Any Vercel project still selecting Node 20 needs an operator-selected supported major and fresh deployment, with effective patch verification. No provider setting, release, CDN publish, merge or production deploy was performed.

Required-check policy blocker (verified read-only): main still requires four legacy Node 18 contexts. This PR emits honest stable major labels while selecting exact patched binaries through matrix.node_version. A repository owner must separately map these required contexts before merge; this task did not modify protection or add misleading Node 18 jobs.

Existing required context Proposed supported replacement
Install (Node.js v18 on Linux) Install (Node.js v22 on Linux)
Test (Node.js v18 on Linux) Test (Node.js v22 on Linux)
Lint (Node.js v18) Lint (Node.js v22)
Typecheck (Node.js v18) Typecheck (Node.js v22)

The stable-label workflow revision is rerunning CI on the same patched binaries. This PR is ready for review but remains blocked from merge until legitimate policy reconciliation.

@sybohy
sybohy marked this pull request as ready for review October 24, 2026 04:53
@sybohy
sybohy requested a review from razor-x as a code owner October 24, 2026 04:53

This branch was successfully deployed

1 active deployment
Preview — d3e80ab7 Deployed Oct 24, 2026 by vercel[bot]
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