
Уязвимость React2Shell (CVE-2025-55182 / CVE-2025-66478)
Инструмент класса proof-of-concept для демонстрации критической уязвимости React2Shell (CVE-2025-55182 / CVE-2025-66478) только в авторизованных локальных тестовых средах.
Эта уязвимость (CVSS 10.0) активно эксплуатируется опытными киберпреступниками. По данным Amazon Threat Intelligence, несколько спонсируемых государством группировок, связанных с Китаем, включая Earth Lamia и Jackpot Panda, начали использовать публичные эксплойты в течение нескольких часов после раскрытия. Агентство по кибербезопасности и защите инфраструктуры США (CISA) добавило её в свой каталог Known Exploited Vulnerabilities (KEV).
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]
# Target specific URL
./pwn-nextjs.sh https://vulnerable-app.example.com "whoami"
root
Уязвимость берёт начало в определённых пакетах React и затрагивает любой фреймворк, который их включает.
| Компонент | Затронутые версии | Пропатченные версии | Примечания |
|---|---|---|---|
| Пакеты 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. |
Не затронуты: Next.js 13.x, стабильные выпуски Next.js 14.x, приложения Pages Router и Edge Runtime не уязвимы.
Протокол RSC Flight сериализует данные для взаимодействия клиента и сервера. Уязвимость кроется в логике десериализации на сервере, которая небезопасно разворачивает свойства объектов из входящей полезной нагрузки без надлежащей проверки. Это позволяет атакующему внедрять вредоносные ключи (например, __proto__ или constructor) в запрос, что приводит к загрязнению прототипа.
После загрязнения цепочки прототипов сервер следует путям выполнения, изменённым атакующим. Это можно объединить в цепочку для выполнения произвольного JavaScript-кода с привилегиями сервера, что приводит к полному удалённому выполнению кода (RCE).
Исследователи безопасности наблюдали успешные эксплойты, приводящие к:
.aws/credentials).Установка патча обязательна и является единственным способом полностью устранить уязвимость. Не существует настройки конфигурации, которая отключила бы уязвимый путь выполнения кода.
# For Next.js users, upgrade to the latest patched version in your release line.
# Example: If you are on Next.js 15.5.x:
npm install [email protected]
# Also ensure React dependencies are updated:
npm install react@latest react-dom@latest
Проверьте, что файлы package-lock.json или yarn.lock содержат пропатченные версии пакетов react-server-dom-* (19.0.1, 19.1.2 или 19.2.1).
Пока выполняется обновление, разверните правила межсетевого экрана для веб-приложений (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 (максимальная серьёзность), которая активно эксплуатируется при государственной поддержке.
Помните: Этот инструмент демонстрирует, почему обновление является срочным. Используйте эти знания для улучшения безопасности и защиты систем, а не для их компрометации. Убедитесь, что все ваши зависимости обновлены до пропатченных версий, перечисленных выше.