CVE-2026-111497: Критична вада Node2Shell в декодері Brotli для Node.js
Detection stack
- AIDR
- Alert
- ETL
- Query
Резюме
Node2Shell – це критична уразливість (CVE-2026-111497), яка впливає на декодер Brotli, вбудований у Node.js, і викликана записом за межами доступної пам’яті. Атакуючі можуть експлуатувати цю помилку, надаючи невірно сформовані компресовані потоки сервісам, які обробляють дані Brotli, що може призвести до відмови у обслуговуванні, розголошення пам’яті чи виконання віддаленого коду. Уразливість становить особливу загрозу для сервісів, які використовують Express 5 або проміжне програмне забезпечення, що автоматично виконує декомпресію Brotli.
Розслідування
Команда з дослідження загроз Sysdig проаналізувала уразливість і повідомила, що публічний PoC з’явився протягом кількох годин після випуску патча. Дослідження, проведені Imperva і Vercel, показали, що виконання коду можливе на певних архітектурах, включаючи Linux arm64. Розслідування показало, що можливість експлуатації залежить від того, чи обробляє додаток або його бібліотеки, такі як body-parser, потоки Brotli, контрольовані атакувальником.
Пом’якшення
Основним способом пом’якшення є оновлення Node.js до версій 22.23.4, 24.22.1 або 26.12.1 та оновлення Bun до версії 1.4.4 або пізнішої. Організації також мають відключити декомпресію запитів, де це можливо, включаючи встановлення inflate: false у body-parser. Розгортання правил WAF для відхилення неперевірених Content-Encoding: br запитів і запуск сервісів під необмеженими обліковими записами забезпечує додаткові рівні захисту.
Відповідь
Якщо виявлено можливий ланцюг експлуатації, такий як збій процесу Node.js, що супроводжується несподіваним виконанням програми, команди безпеки повинні негайно ізолювати постраждале робоче навантаження. Слідкуйте за постексплуатаційною активністю, включаючи інтерактивні оболонки, неавторизовані завантаження зловмисного програмного забезпечення, криптомайнінг або крадіжку секретів та хмарних токенів. Патчування всіх доступних вразливих сервісів повинно залишатися найвищим пріоритетом.
Потік атаки
Ми ще оновлюємо цю частину.
Виявлення
Підозрілі дочірні процеси NodeJS [Windows] (через cmdline)
Підозріла оболонка через веб-сервер [Linux] (через process_creation)
Підозрілі дочірні процеси NodeJS [Linux] (через cmdline)
Виявлення збою процесу Node.js, після якого слідує виконання програми в наявному місці – експлуатація Node2Shell [Linux Process Creation]
Виконання імітації
-
Опис атаки та команди: Зловмисник націлюється на веб-додаток, що працює під керуванням Node.js. Вони відправляють шкідливий завантажений Brotli-навантажувач, що викликає помилку в корупції пам’яті, викликаючи
nodeпроцес на збій. Відразу після збою атакуючий використовує захоплений потік виконання, щоб породити/bin/bashоболонку, щоб установити стійкість і почати місцеву розвідку. Ця послідовністьnodeподії, що супроводжує/bin/bashвиконання розроблена, щоб відповідатиselection_crashandselection_suspicious_execлогіці правила виявлення. -
Регресійний тестовий скрипт:
#!/bin/bash # Імітація експлуатації у стилі Node2Shell echo "[+] Початок імітації Node2Shell..." # 1. Імітація процесу Node.js, який 'зависає' або завершується несподівано # У реальній ситуації це збій. Тут ми імітуємо телеметрію # вузла процесу, що викликається/обробляється. node -e "process.exit(1)" echo "[+] Процес Node.js 'зависає' (код завершення 1)." # 2. Імітація негайного запуску підозрілої оболонки # Це імітує корисне навантаження, що викликає оболонку після збою. /bin/bash -c "echo 'Експлуатація успішна: оболонка породжена'" echo "[+] Імітація завершена. Перевірте SIEM для виявлення." -
Команди очистки:
# У цьому симуляції не створювалося жодних постійних файлів. # Просто переконайтесь, що немає несанкціонованих процесів bash. pkill -f "Експлуатація успішна"