Repository navigation
fix(docker): pin base image to node 22.23.4 for CVE-2026-111497 - #576
Merged
Merged
Conversation
The 1.46.0 image was built on node:22-alpine when that tag resolved to 22.23.3, which is affected by CVE-2026-111497 (Brotli decompression memory bug). Pin both stages to node:22.23.4-alpine by index digest so the release image cannot float back below the fix.
jpr5
force-pushed
the
fix/node-cve-2026-10
branch
from
October 22, 2026 18:17
d583399 to
e343ad7
Compare
commit: |
Merged
jpr5
added a commit
that referenced
this pull request
Oct 27, 2026
Release v1.47.0. Merging this PR publishes through `publish-release.yml`: npm, the git tag, the GitHub Release and Slack. ## Changelog ### Added - Fixture `citations` serve sources on Responses, Chat Completions, Claude and Gemini (#550, #578) - Fixture `files` serve generated images on Gemini and OpenAI Responses (#550, #578) - Raw passthrough fixtures send provider SSE events or JSON exactly as written (#580) - Opt-in `nonStreamingTimingAllProviders` delays non-streaming replies on every provider (#579) ### Fixed - Client disconnects stop and journal every LLM reply; Docker image on Node 22.23.4 (#579, #576) The detailed notes from `[Unreleased]` are condensed into these bullets. The full detail is in the linked PRs. The drift-harness and CI changes (#583–#587) do not change what users see, so they are left out. ## Docs (separate commit) - The fixtures page gets a new **Citations and generated files** section: the fixture shape, the wire shape for each provider, the error codes, and override-table and provider-matrix rows. The Responses, Chat Completions, Claude and Gemini pages link to it. - What's New has three 1.47.0 cards: citations and generated images, raw passthrough, and stream realism (disconnects and timing on every provider). The two 1.46.0 cards are merged into one. The GPT-Live card is removed because it shipped in 1.43.0, more than a month ago. - The README has new feature bullets for citations and files, raw passthrough and client disconnects. The Streaming Physics bullet now mentions `nonStreamingTimingAllProviders`. - The competitive matrix has three new hand-reviewed rows: provider-native citations, model-generated images, and stopping on client disconnect. Each competitor cell was checked against a shallow clone of that competitor's source on 2026-10-26, and an HTML comment on each row records the evidence. The rows are added to `HAND_ROWS`, so the weekly scan never rewrites them. The homepage ND count in the test is now 56. ## Version carriers (`git grep -F 1.46.0`) `package.json`, `charts/aimock/Chart.yaml` appVersion, `.claude-plugin/plugin.json`, `.claude-plugin/marketplace.json` (`^1.47.0`), the `docs/index.html` banner, the `packages/aimock-pytest/README.md` default, and `_version.py` `AIMOCK_VERSION`. These are not bumped: the CHANGELOG history, the `version-note` labels for 1.46.0 features, and `pyproject.toml`. ## Local verification - format:check, lint, typecheck, build, api:report with no `etc/` diff, test:exports, the docs and matrix tests, and the full `pnpm test`. - The citations and files wire shapes were exercised against the built server for Chat, Responses, Claude and Gemini, including the 500 for `files` on Chat Completions. - Screenshots of What's New, the matrix and the fixtures section at 375, 430 and 1440 px.
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.
The published
ghcr.io/copilotkit/aimock:latest(1.46.0) runs Node 22.23.3. That version has CVE-2026-111497, a Brotli decompression memory bug. Node 22.23.4 fixes it.The Dockerfile used the floating
node:22-alpinetag. When 1.46.0 was built, that tag resolved to 22.23.3. This PR pins both build stages tonode:22.23.4-alpine@sha256:fe4f6d74e20370acb04ad889077d14d0f64a9c8ea6a42bc60cddf1e844699914(the multi-arch index digest). Renovate keeps the digest up to date.The npm package and CI are not affected.
enginesis>=20.15.0, and setup-node uses floating majors, so neither pins a version below the fix. The Docker image is rebuilt in a follow-up patch release (1.46.1).Red / green (local, Docker Desktop buildx)
RED: the published image
A local build of the unpinned Dockerfile now gives v22.23.4, because
node:22-alpinehas moved since 1.46.0 was built (same index digestfe4f6d74…). So the defect is in the published image. Without a pin, the Dockerfile could resolve to any patch version.GREEN: this branch
Checks
format:check,lint,typecheck,build: passtest: 17603 passed. 8 tests timed out at 5s while the full suite ran under machine load. Their 7 files pass when run alone (561/561). This change touches onlyDockerfileandCHANGELOG.md.