Сжатые данные позволили выполнить чужой код в обычной сборке Node.js
Новость опубликована 23.10.2026 ⦁ источник
Изображение создано ИИ
Исследователи Imperva показали, как специально подготовленные сжатые данные заставляют приложение на Node.js выполнить чужой код. В опыте 22 октября использовали официальную сборку Node.js 24.22.0 для Linux arm64 — без отладчика и специальной модификации программы. На исправленной версии 24.22.1 тот же ввод отклонялся, код не выполнялся.
Причина — ошибка во встроенном декодере Brotli, формата сжатия веб-данных. По бюллетеню Node.js, некорректную структуру потока программа принимала за временную нехватку входных данных и продолжала запись за границами внутреннего буфера. Повреждение памяти могло привести к сбою, раскрытию её содержимого или выполнению кода. Уязвимость получила номер CVE-2026-111497.
Imperva проверила два пути: получение сжатого ответа от внешнего сервера и распаковку входящего запроса через настроенные обработчики Express и body-parser. Сам по себе обычный HTTP-сервер Node.js не распаковывает каждый пришедший запрос. Выполнение кода удалось не с каждой попытки; результат относится к проверенным конфигурациям Linux arm64, а не ко всем архитектурам и приложениям.
Исправления вышли 21 октября в Node.js 22.23.4, 24.22.1 и 26.12.1. Дефект находится в самой среде исполнения: обновление только Express не заменяет исправленный Node.js, в том числе внутри контейнера. Публичный опыт показывает работоспособность атаки в заданных условиях; сведений о реальных жертвах эти материалы не приводят.
Кибербезопасность и хакинг Node.js, Brotli, Imperva, Node2Shell, CVE-2026-111497, Express