From b6b82da13c75d72edabc94ba16ae6d4d8c347f95 Mon Sep 17 00:00:00 2001 From: "Torsten Schulz (local)" Date: Tue, 27 Oct 2026 15:32:16 +0100 Subject: [PATCH] =?UTF-8?q?fix:=20sichere=20Brotli-Laufzeit=20ab=20und=20e?= =?UTF-8?q?rh=C3=B6he=20Patchversionen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .nvmrc | 1 + package-lock.json | 7 +++++-- package.json | 5 ++++- scripts/require-safe-node.cjs | 22 ++++++++++++++++++++++ server/index.js | 1 + 5 files changed, 33 insertions(+), 3 deletions(-) create mode 100644 .nvmrc create mode 100644 scripts/require-safe-node.cjs diff --git a/.nvmrc b/.nvmrc new file mode 100644 index 0000000..ce62013 --- /dev/null +++ b/.nvmrc @@ -0,0 +1 @@ +24.22.1 diff --git a/package-lock.json b/package-lock.json index 3fc65db..aadd930 100755 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "ypchat", - "version": "1.0.0", + "version": "1.0.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "ypchat", - "version": "1.0.0", + "version": "1.0.1", "dependencies": { "axios": "^1.6.0", "cookie-parser": "^1.4.6", @@ -19,6 +19,9 @@ }, "devDependencies": { "concurrently": "^8.2.2" + }, + "engines": { + "node": "^22.23.4 || ^24.22.1 || ^26.12.1" } }, "node_modules/@babel/runtime": { diff --git a/package.json b/package.json index e8b6164..80b4c0a 100755 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ypchat", - "version": "1.0.0", + "version": "1.0.1", "type": "module", "description": "YpChat Node.js/Vue Application", "scripts": { @@ -25,5 +25,8 @@ }, "devDependencies": { "concurrently": "^8.2.2" + }, + "engines": { + "node": "^22.23.4 || ^24.22.1 || ^26.12.1" } } diff --git a/scripts/require-safe-node.cjs b/scripts/require-safe-node.cjs new file mode 100644 index 0000000..b5c7311 --- /dev/null +++ b/scripts/require-safe-node.cjs @@ -0,0 +1,22 @@ +// CVE-2026-111497: Node's bundled Brotli decoder must include the security fix. +// Check Node versions: patched releases can still report Brotli 1.2.0. +// https://nodejs.org/en/blog/vulnerability/october-2026-security-releases +'use strict'; + +function requireSafeNode() { + const [major, minor, patch] = process.versions.node.split('.').map(Number); + const minimum = { 22: [23, 4], 24: [22, 1], 26: [12, 1] }[major]; + const patched = minimum && (minor > minimum[0] || + (minor === minimum[0] && patch >= minimum[1])); + + if (!patched) { + throw new Error( + `CVE-2026-111497: Node.js ${process.versions.node} is not an approved patched runtime. ` + + 'Use Node.js 22.23.4+, 24.22.1+ or 26.12.1+ within those release lines. ' + + 'Recommended: nvm install && nvm use (see .nvmrc). Restart all server/PM2 processes after upgrading.' + ); + } +} + +requireSafeNode(); +module.exports = requireSafeNode; diff --git a/server/index.js b/server/index.js index f3abccd..da89245 100755 --- a/server/index.js +++ b/server/index.js @@ -1,3 +1,4 @@ +import '../scripts/require-safe-node.cjs'; import express from 'express'; import { createServer } from 'http'; import { Server as SocketIOServer } from 'socket.io';