
Инструмент proof-of-concept для демонстрации критической уязвимости React2Shell
Инструмент proof-of-concept для демонстрации критической уязвимости React2Shell (CVE-2025-55182 / CVE-2025-66478) только в авторизованных локальных тестовых средах.
CVE-2025-55182 (React2Shell) — это критическая уязвимость удаленного выполнения кода (RCE) без аутентификации в протоколе "Flight" React Server Components (RSC). Был назначен отдельный идентификатор CVE-2025-66478 для Next.js, но впоследствии он был отклонен как дубликат CVE-2025-55182, поскольку обе уязвимости имеют одну и ту же первопричину.
chmod +x pwn-nextjs.sh
./pwn-nextjs.sh [TARGET_URL] [COMMAND]
# Целевой URL
./pwn-nextjs.sh https://vulnerable-app.example.com "whoami"
root
Уязвимость возникает в определенных пакетах React, затрагивая любую платформу, которая их включает.
Не затронуты: Next.js 13.x, стабильные версии Next.js 14.x, приложения Pages Router и Edge Runtime не затронуты.
Протокол RSC Flight сериализует данные для взаимодействия клиент-сервер. Уязвимость заключается в логике десериализации на сервере, которая небезопасно расширяет свойства объекта из входящей полезной нагрузки без надлежащей проверки. Это позволяет атакующему внедрить вредоносные ключи (например, __proto__ или constructor) в запрос, что приводит к загрязнению прототипов.
После загрязнения цепочки прототипов сервер следует путям выполнения, контролируемым атакующим. Это можно связать в цепочку для выполнения произвольного JavaScript-кода с привилегиями сервера, что приводит к полному удаленному выполнению кода (RCE).
Исследователи безопасности наблюдали успешные эксплойты, приводящие к:
.aws/credentials).Обновление обязательно и является единственным способом полностью устранить уязвимость. Не существует параметра конфигурации для отключения уязвимого пути кода.
# Для пользователей Next.js обновитесь до последней исправленной версии в вашей линии релиза.
# Пример: если вы на Next.js 15.5.x:
npm install [email protected]
# Также убедитесь, что зависимости React обновлены:
npm install react@latest react-dom@latest
Проверьте, что ваши файлы package-lock.json или yarn.lock отражают исправленные версии пакетов react-server-dom-* (19.0.1, 19.1.2 или 19.2.1).
Пока идет обновление, разверните правила Web Application Firewall (WAF) для блокировки попыток эксплойта:
AWSManagedRulesKnownBadInputsRuleSet (v1.24+) включает правила для этого CVE.cve-canary.Примечание: Правила WAF — это временное, неполное смягчение. Они не заменяют необходимость обновления.
Проверьте логи на следующие признаки попыток эксплуатации:
next-action или rsc-action-id. Тела запросов, содержащие шаблоны $@ или "status":"resolved_model".whoami, id, uname), чтение /etc/passwd или запись файлов в /tmp/ (например, pwned.txt) процессами Node.js.Этот инструмент демонстрирует уязвимость с оценкой CVSS 10.0 (максимальная серьезность), которая активно эксплуатируется при поддержке государств.
Помните: Этот инструмент демонстрирует, почему обновление срочно необходимо. Используйте эти знания для улучшения безопасности и защиты систем, а не для их компрометации. Убедитесь, что все ваши зависимости обновлены до исправленных версий, перечисленных выше.
TAHA MOUNIR
| Компонент | Затронутые версии | Исправленные версии | Примечания |
|---|
| Пакеты React ( react-server-dom-webpack, -parcel, -turbopack) | 19.0.0, 19.1.0, 19.1.1, 19.2.0 | 19.0.1, 19.1.2, 19.2.1 | Источник вышестоящей проблемы. |
| Next.js (App Router) | 15.x, 16.x, 14.3.0-canary.77 и выше | 15.0.5, 15.1.9, 15.2.6, 15.3.6, 15.4.8, 15.5.7, 16.0.7 | Основная затронутая платформа. |
| Другие платформы | React Router, Waku, RedwoodJS, Parcel (@parcel/rsc), Vite RSC Plugin | Обновите до версий, использующих исправленные пакеты React (>19.0.1, 19.1.2, 19.2.1). | Уязвимо при использовании затронутых пакетов React. |