Repository navigation
fix(security): guard CLI installation against unpatched Node.js runtimes - #277
Open
Dima Birenbaum (DimaBir) wants to merge 1 commit into
Open
Dima Birenbaum (DimaBir) wants to merge 1 commit into
Dima Birenbaum (DimaBir) wants to merge 1 commit into
Conversation
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.
Why
CVE-2026-111497 affects the native Brotli decoder in Node.js, which the CLI installer can reach through
decompress-response. Updating JavaScript dependencies oractions/setup-nodealone does not patch the runner-managed action interpreter.What
How
Validate the runtime at the start of
MicrosoftSecurityDevOps.runMain, before toolkit execution or CLI installation. Unpatched, end-of-life, prerelease, and unrecognized runtimes fail with actionable runner guidance. Accepted runtimes preserve existing CLI arguments and behavior. No dependency, workflow, or unrelated compiler-helper changes are included.This is fail-closed protection, not a runner runtime rollout or proof that deployed runners are patched. Vendor backports with older version numbers require a reviewed policy update.
Tests
gulp buildTests: passed; production code and tests compile.mocha "**/*.tests.js": 32 passed, including all 6 existing tests.tsc --project tsconfig.json --noEmit: passed.node lib\v1\main.js: the shipped entrypoint rejects unverified Node.js 25.9.0 with exit code 1 before CLI installation.Private GitHub Packages authentication blocked normal
npm ci; local validation used an isolated install of repository-locked direct dev-tool versions.