Summary
The Docker image is built on node:20-alpine. Node 20 reached end-of-life on 2026-04-30, so it does not get the October 2026 security release. That release fixes ten issues. One of them is CVE-2026-111497, an out-of-bounds write in the Brotli decoder that can lead to remote code execution. The fixed versions are 22.23.4, 24.22.1 and 26.12.1.
This PR moves all three Dockerfile stages to node:22-alpine, which currently resolves to 22.23.4. The image keeps a major-version tag, as before, so later Node 22 security releases are picked up on rebuild.
Changes
Dockerfile:node:20-alpine→node:22-alpinefor the frontend build, backend build and runtime stages.
Why 22 and not 24
Node 22 is the smallest jump from 20 and is supported until April 2027. Moving to node:24-alpine would also fix the CVE. I can switch the PR to it if you prefer the longer support window.
Testing
All on node:22-alpine (22.23.4):
npm run format:checkpasses.cd backend && npx vitest run: 49 tests pass. ThesinfInjectortests need thezipbinary, which the runtime image installs.cd frontend && npx vitest run: 167 tests pass.- Frontend and backend builds pass.
docker build .on linux/amd64 succeeds. In the resulting containernode -vreportsv22.23.4, and/,/api/settingsand/wisp/return 200.