Код, интерфейсы и трафик без воды
lawebbox

Node.js устраняет 11 критических уязвимостей: что нужно пропатчить прямо сейчас

По данным Node.js, вышли патчи для веток 22.x, 24.x и 26.x — одиннадцать дыр, часть критическая. Кому апдейт кажется "не срочно", через неделю предстоит разбирать инцидент в проде вместо ужина.

Максим Воронцов, Хардкорный бэкендер и девопс · обновлено 30 июля 2026 г.

Node.js устраняет 11 критических уязвимостей: что нужно пропатчить прямо сейчас

Заодно Chrome 151 закрыл критическую use-after-free в Compositing, а WordPress 7.1 Beta 4 принёс 114+ правок — финал 19 августа.

HTTP/2 и Permission Model — чинить первым

В HTTP/2 две дыры. Retained header blocks обходят лимит maxSessionMemory и жрут память до OOM при удалённом запросе — спасибо leduckhuong за находку. Re-entrant вызов nghttp2_session_mem_send во время nghttp2_session_mem_recv даёт heap-use-after-free. Это уже не костыль, это дыра в фундаменте. Один keep-alive с подлыми фреймами — и нода в дампе. У кого reverse proxy отдаёт трафик ноде напрямую, тот уже потеет.

Permission Model тоже пострадал, и серьёзно. Radix-tree позволяет выйти за пределы разрешённого префикса — granted /var/www, читаешь /etc/shadow. Плюс trace_events.createTracing.enable и process.report пишут файлы за пределами --allow-fs-write. Кто держит ноду с --permission в проде — апдейтит сегодня, не завтра. Сидите на 22.x — патч тоже вышел, поддержка жива.

SQLite, DNS, zlib и mTLS — мелочь, но с зубами

node:sqlite: createTagStore оставляет висячий StatementSyncIterator, который продолжает дёргать старый prepared statement после reset. dns.resolveAny крашит процесс при ответе с >256 A-записей — отказ в обслуживании в чистом виде. node:zlib кидает reachable assertion на подделанном byteLength у TypedArray. И HTTPS Agent: коллизии ключей в PFX object-array приводят к переиспользованию mTLS-клиентских идентичностей между запросами с разными сертификатами, а неполный фикс CVE-2026-48934 даёт промах hostname verification между identity policies. Если у вас mTLS между микросервисами — это ваш сегодняшний тикет.

Что делать в терминале

nvm install 26.x-latest && nvm install 24.x-latest && nvm install 22.x-latest. На каждом прод-хосте: node -v. По зависимостям: npm audit. Permission Model включён — обязательно прогон на стейдже перед катом. Бэкап перед апдейтом. Если бэкапа нет — теперь будет мотивация его настроить.