Назад

Imperva продемонструвала Node2Shell RCE в Node.js через спеціально сформовані дані Brotli
SiTech AI Team2 хв читання

Imperva продемонструвала Node2Shell RCE в Node.js через спеціально сформовані дані Brotli

Дослідники Imperva продемонстрували віддалений запуск коду на офіційній збірці Node.js 24.22.0 Linux arm64 за допомогою спеціально сформованих даних Brotli, експлуатуючи CVE-2026-111497. Node.js виправили проблему 21 жовтня.

Демонстрація експлойту

Дослідники Imperva представили доказ концепції під назвою Node2Shell, що забезпечує віддалений запуск коду на офіційному образі Node.js 24.22.0 Linux arm64. Атака передає спеціально сформовані стиснені дані Brotli до вбудованого декодера Brotli, що призводить до використання вразливості CVE-2026-111497. Експлойт вимагав кількох спроб у тестовому середовищі і вдався лише на цій конкретній збірці; виправлений випуск 24.22.1 відхиляє зловмисні дані і запобігає виконанню коду.

Уражені додатки

Уразливість знаходиться в декодері Brotli, який включає Node.js, тому всі додатки, що працюють на лініях випусків 22.x, 24.x та 26.x, потенційно уразливі. Служба може отримати доступ до декодера, коли зчитує стиснену відповідь Brotli через вбудовану функцію fetch або коли проміжне ПО декодує стиснене Brotli тіло запиту. Парсери тіл Express 5, такі як express.json, express.urlencoded, express.text та express.raw, теж декодують тіла запитів Brotli, так само роблять і версії body-parser від 2.0.0 до 2.3.0. Звичайний HTTP-сервер Node.js не декодує тіла запитів Brotli автоматично.

Технічні деталі

Imperva виявила причину помилки в обробці декодером неможливого переходу блоку в потоці Brotli. Зловмисний потік оголошує типи блоків, які виключаються правилами структури потоку, змушуючи декодер запитувати більше вхідних даних і продовжувати в невалідному стані. Тест санітайзера пам'яті показав, що продовження з цього стану записує за межі призначеного буфера, тобто це і є запис поза межами буфера, який лежить в основі вразливості. Node.js виправили проблему, імпортуючи апстрім-патч Brotli, який змушує декодер зупинитися з помилкою формату у проблемній точці.

Заходи зменшення ризику

Єдиний надійний засіб виправлення: оновлення до виправленого випуску Node.js. Лінії, що завершили життєвий цикл, такі як 20.x, не отримують виправлення і їх слід мігрувати на підтримувану лінію. У бюлетені не вказано обхідних шляхів під час виконання, тому додатки, які не можуть оновитися негайно, не мають запасного варіанта у самому Node.js. Imperva рекомендує обмежувати недовірений трафік Brotli на вразливих шляхах, де це практично. Vercel 21 жовтня додала правила веб-застосункового файрвола, що блокують атаку у вхідних запитах, хоча ці правила не охоплюють відповіді Brotli, отримані з зовнішніх серверів, і не замінюють оновлення.

Джерела: The Hacker News

Поділитися цифровим досвідом

SiTech

SiTech — веброзробка з підтримкою AI

Створюємо швидкі та сучасні сайти й інтегруємо AI у бізнес-процеси. Маєте проєкт чи запитання? Із задоволенням допоможемо.