Repository navigation
[EXPIN-51] chore(security): pin Node 22.23.4 (CVE-2026-111497) - #1183
Closed
Micah Heineck (micahheineckoptimizely) wants to merge 1 commit into
Closed
Micah Heineck (micahheineckoptimizely) wants to merge 1 commit into
Micah Heineck (micahheineckoptimizely) wants to merge 1 commit into
Conversation
Pin the exact patched Node.js release for CVE-2026-111497 in CI/publish workflows. Changed files: - .github/workflows/release.yml: node-version 22 -> 22.23.4 - .github/workflows/ghr_backfill.yml: node-version 18 -> 22.23.4 - .github/workflows/javascript.yml: react_native_metro_test 22 -> 22.23.4; unit_tests matrix '22' -> '22.23.4', '24' -> '24.22.1' Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
❌ ErrorsYour PR has failed checks. Please review the issues below and take necessary action before merging. 🚦 1 Pipeline job failed
Useful? React with 👍 / 👎 This comment will be updated automatically if new data arrives.🔗 Commit SHA: 602be49 | Docs | View more details | Give us feedback! |
Micah Heineck (micahheineckoptimizely)
marked this pull request as draft
October 22, 2026 14:07
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.
Ticket: EXPIN-51
Summary
Pins the exact patched Node.js release for the release/publish workflows and the Node 22 CI legs, to remediate CVE-2026-111497 (out-of-bounds write in Node.js's bundled Brotli decoder, possible RCE). Node released the fix on 2026-10-21; patched versions are 22.23.4, 24.22.1 and 26.12.1. The company remediation guidance requires pinning the exact patched version.
This only changes the Node used in CI and publishing. The SDK's supported range (
engines.node: >=18.0.0) is unchanged.Files changed
.github/workflows/release.ymlpublish(npm + GHR publish)node-version: 22node-version: 22.23.4.github/workflows/ghr_backfill.ymlbackfill(republishes npm tarballs to GHR)node-version: 18node-version: 22.23.4.github/workflows/javascript.ymlreact_native_metro_testnode-version: 22node-version: 22.23.4.github/workflows/javascript.ymlunit_testsmatrix['18', '20', '22', '24']['18', '20', '22.23.4', '24.22.1']Notes:
ghr_backfill.ymlis a manually triggered publish job. It runsnpm view/npm packon published versions and callsscripts/publish.shto push them to GHR. It does no build, and Node 18 has no upstream fix, so it now uses the same patched 22.23.4 asrelease.yml. Node 18 and Node 22.23.4 both ship npm 10.x.unit_testsmatrix: the22and24legs are pinned to the patched releases of those lines. Coveralls flag names followmatrix.node, so they becomerun-22.23.4/run-24.22.1.Verification (local, Node 22.23.4 unless noted)
npm ci --ignore-scripts && npm test && npm run build && npm pack --ignore-scriptstsc --noEmit+ eslint) clean, build and pack OK (optimizely-optimizely-sdk-6.6.1.tgz).npm test, first runlib/event_processor/event_store.spec.ts, "should resave events without time information on get":expected 1792677000285 to be greater than or equal to 1792677000331. It's a wall-clock timestamp comparison. A full rerun passed, and the file alone passed 5/5 on both Node 22.23.4 and 22.17.0. Not related to the Node version.react_native_metro_testnpm run test-rn-metroghr_backfillflownpm view @optimizely/optimizely-sdk versions,npm pack @optimizely/optimizely-sdk@6.6.1,DRY_RUN=true scripts/publish.sh https://registry.npmjs.org <tarball>publish.shreports "already on registry, skipping" (exit 0). Not run against GHR (needs the workflow token).Not run locally: browser tests (BrowserStack credentials) and integration suites (CI secrets).
For the owners to decide
unit_testsmatrix18and20,lint(16),commonjs_test(18), andtypescript_test,browser_tests,generate_messages_test(20). They only run in CI to check compatibility with customers' Node versions. Whether to keep or drop them is your call; this PR leaves them unchanged..devcontainer/devcontainer.jsonusestypescript-node:1-18-bookworm(Node 18). That's a local dev environment and moving it would be a major-version change, so it's left as is.Required follow-up
The fix only counts once the change is rebuilt and redeployed: the next SDK release must be built and published through the updated
release.yml. Merging alone doesn't change anything already published.🤖 Generated with Claude Code