Skip to content

Ship Node 22.23.4 in the runner image for the Brotli RCE fix - #498

Merged
masih merged 2 commits into
mainfrom
masih/1792740907-runner-node-22-23-4
Oct 23, 2026
Merged

masih merged 2 commits into
mainfrom
masih/1792740907-runner-node-22-23-4

Conversation

@masih

@masih masih commented Oct 23, 2026 •

Copy link
Copy Markdown
Contributor

The seidroid/omnigent sandbox runner (omnigent-host:v0.17.0 from runner-base.txt) ships Node v22.23.3, which carries CVE-2026-111497, an out-of-bounds write in the Brotli decoder. The harness CLIs in the sandbox (claude, codex, pi) run on that Node and fetch arbitrary web content, so a malicious server answering with crafted Brotli reaches the decoder. All 9 sandbox pods in the dev cluster run runner-overlay-b79aea1, built on that base. The server image has no Node, so only the runner needs this.

This copies /usr/local/bin/node from node:22.23.4-trixie-slim (same Debian 13 base, pinned by digest) over the base's binary and fails the build if node --version is anything else. Upstream's v0.19.1 already ships 22.23.4, but moving the bases from v0.17.0 means a lockstep server bump with boot-time migrations, so this keeps the release unchanged and can be dropped at the next base bump. A local build on the pinned base passes the credential-bridge check, and node, npm, claude, codex and pi all start. Once ecr-runner.yml publishes the new tag, the runner digest in platform's sandbox-config-patch.yaml and sandbox-image-prepull.yaml needs the bump to reach the cluster.

@devin-ai-integration

Copy link
Copy Markdown
Contributor

I'll fix CI failures and address comments from users with write access that start with 'Devin'.

  • Disable automatic comment, CI, and merge conflict monitoring

@masih
masih marked this pull request as ready for review October 23, 2026 09:03
@cursor

cursor Bot commented Oct 23, 2026 •

Copy link
Copy Markdown

PR Summary

Low Risk
Build-time binary swap with version assertions; limited to the runner overlay and intended as a temporary measure until the base image catches up.

Overview
Patches CVE-2026-111497 in the sandbox runner by replacing the base image’s older Node 22.x binary with Node v22.23.4, copied from a digest-pinned node:22.23.4-trixie-slim stage into /usr/local/bin/node.

The Dockerfile adds a guard RUN that fails the build once the upstream base already ships 22.23.4+, so this temporary override is removed instead of pinning an older Node. A follow-up check asserts node --version is exactly v22.23.4 at build time.

This targets harness CLIs (claude, codex, pi) that use Node fetch() and could hit the Brotli decoder RCE; the server image is unchanged. Publishing still goes through the existing runner build workflow, with platform sandbox image digests updated separately after the new tag lands.

Reviewed by Cursor Bugbot for commit d2717eb. Bugbot is set up for automated code reviews on this repo. Configure here.

@seidroid seidroid Bot left a comment •

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The change overwrites the runner's Node binary with a digest-pinned 22.23.4 from the official trixie-slim image, then fails the build if node --version reports anything else. Upstream's v0.17.0 host stage installs Node at the same /usr/local/bin/node path, so the copy replaces the vulnerable binary and does not just shadow it. Nothing blocks; codex's empty reading matches mine, and my one suggestion is about removing the override later.

Non-blocking

1 finding on the changed lines, as inline comments.

seidroid review · decision approve · session 45687664226e4574bc39382aa4bd55b7 · turn resp_claude_f516f72a6948aee2dd12821f1d07c991 · item 37ea06b406275f44a778eb98426ac41a

Findings: 0 blocking | 1 non-blocking | 1 posted inline

Comment thread Dockerfile.runner
@masih
masih merged commit bd5e54c into main Oct 23, 2026
8 of 9 checks passed
@masih
masih deleted the masih/1792740907-runner-node-22-23-4 branch October 23, 2026 09:47
masih added a commit that referenced this pull request Oct 26, 2026
ECR's scan of the current runner overlay (`runner-overlay-bd5e54c…`,
built on `omnigent-host:v0.17.0`) still flags CVE-2026-111497 as
critical. #498
fixed the copy of Brotli inside Node, but the base also ships Debian's
system `libbrotli1` at `1.1.0-2+b7`, which curl and libcurl link, and
that's the package the scanner reports.

This upgrades only `libbrotli1` to trixie's `1.1.0-2+deb13u1`
(DSA-6582-1) and fails the build if the installed version is older,
keeping the v0.17.0 base unchanged. Once `ecr-runner.yml` publishes the
new tag, the runner digest in platform's `sandbox-config-patch.yaml` and
`sandbox-image-prepull.yaml` needs bumping to reach the dev cluster.
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