React2Shell: RCE com CVSS 10.0 no Next.js
React2Shell (CVE-2025-55182 e CVE-2025-66478): RCE com CVSS 10.0 no Next.js com App Router, via o protocolo Flight dos React Server Components.
https://www.linkedin.com/in/julionarciso/
O que é React2Shell?
Recentemente, a comunidade de segurança cibernética identificou uma vulnerabilidade crítica que redefine o cenário de riscos para aplicações modernas: o React2Shell. Com uma pontuação máxima de 10.0 no CVSS , esta falha não é apenas um bug, mas uma porta aberta para o controle total de sistemas afetados.
Por que o Score 10.0 é tão grave?
O sistema CVSS mede o risco de vulnerabilidades em uma escala de 0.0 a 10.0. Quando uma falha atinge a nota máxima, ela é classificada como uma ameaça de Execução Remota de Código (RCE) de alta periculosidade. Isso significa que um atacante pode comprometer o sistema remotamente, sem estar autenticado e sem depender de qualquer erro humano do usuário final.
O Impacto Imediato e o Alvo Principal
O alvo principal desta falha (CVE-2025-55182 e CVE-2025-66478) é o ecossistema Next.js , especialmente aplicações com App Router (versões 15.x e futuras)
- Ameaça em Massa: Até 39% dos ambientes de nuvem rastreados continham instâncias vulneráveis.
- Configuração Padrão Vulnerável: Uma aplicação Next.js padrão recém-criada já é imediatamente explorável se não for atualizada.
- Exploração Ativa: Já existem exploits públicos (PoCs) sendo utilizados por grupos de ameaça em ambientes reais.
Entendendo a Tecnologia: RSC e o Protocolo ‘Flight’
Para compreender a falha, é necessário entender como o React funciona no servidor:
- RSCs (React Server Components): Executam componentes no lado do servidor para melhorar a performance e reduzir o bundle enviado ao cliente.
- Protocolo Flight: É a “ponte” de comunicação. Diferente de uma API REST comum que entrega JSON estático, o Flight é um formato de streaming de texto e dados binários. Ele transfere em tempo real o estado do componente e a lógica de renderização do servidor para o browser, permitindo que a interface seja “montada” enquanto os dados ainda estão chegando.
Desserialização Insegura
A falha React2Shell ocorre devido à confiança implícita que o runtime do Node.js deposita no Protocolo Flight enviado pelo cliente.
- O Ataque: Um agente malicioso cria um payload que simula dados do Flight, instruindo o servidor a desserializar (desempacotar) um objeto que é, na verdade, um comando malicioso.
- Falha do Parser: O analisador do Flight não validava corretamente o tipo de objeto, permitindo a injeção de sequências de bytes interpretadas como objetos de runtime internos do Node.js com propriedades manipuladas.
Técnica de Exploração: Gadget Chains
Para alcançar a RCE, o atacante utiliza uma Gadget Chain :
- Gadgets: Pequenos pedaços de código que já existem no Node.js ou em bibliotecas da aplicação.
- Execução: O payload encadeia esses gadgets para chamar funções perigosas, como child_process.exec() , executando comandos no sistema operacional do servidor.
Fiz uma tabela para resumir como é feita essa exploração:
Em essência: O atacante explorou a confiança do React na sua própria serialização, transformando uma entrada de dados esperada em uma instrução de execução de código para o servidor.
Demonstração Prática (POC)
Para demonstrar a exploração da CVE-2025-55182 (React2Shell), utilizaremos o container de um lab disponibilizado pelo pesquisador Chocapikk em seu repositório no GitHub.
GitHub - Chocapikk/CVE-2025-55182: Next.js React Server Components RCE exploit for CVE-2025-55182Next.js React Server Components RCE exploit for CVE-2025-55182 - Chocapikk/CVE-2025-55182GitHubChocapik class="img-link shimmer" >

Configuração do Ambiente:
- Fonte: Repositório
Chocapikk/CVE-2025-55182(Disponível publicamente para fins de pesquisa e educação). - Execução: Após clonar o repositório e navegar para a pasta
lab, o ambiente de teste é iniciado utilizandodocker-compose:
A interface da aplicação Next.js vulnerável fica acessível na porta 3011.
Ao configurar nosso payload e enviá-lo com sucesso, o comando simples executado no servidor abriu um canal de comunicação bidirecional , estabelecendo uma Shell Reversa. Esse resultado demonstra, de forma inequívoca, a Execução Remota de Código (RCE) e a obtenção de controle total sobre o sistema operacional do servidor alvo.
Como Proteger Sua Aplicação
Dada a classificação CVSS 10.0 e a facilidade de exploração, a correção da vulnerabilidade React2Shell (CVE-2025-55182 e CVE-2025-66478) é uma prioridade de segurança máxima e deve ser tratada como uma emergência.
Atualização Imediata
A única correção completa e oficial é a aplicação dos patches fornecidos pelo React e Next.js.
- Ação Obrigatória: Atualize suas dependências para as versões que contenham a correção para a falha de desserialização insegura.
- Para Usuários Next.js (Recomendado): A Vercel (empresa por trás do Next.js) disponibilizou um utilitário de linha de comando para garantir que as atualizações críticas sejam aplicadas corretamente.
bash “npx fix-react2shell-next"
Atualização Manual: Verifique e atualize manualmente para a versão mais recente dentro da sua linha de release(por exemplo, se estiver no 15.x, atualize para a versão mais recente pós-patch , como 15.0.7 ou superior).
Assuma a Violação e Reaja
Se houve a possibilidade de exploração (sua aplicação estava vulnerável e exposta), a atualização não é suficiente; você deve tomar medidas de resposta a incidentes:
- Rotação de Credenciais: Mude imediatamente todas as chaves de API, segredos, tokens e credenciais de banco de dados armazenadas como variáveis de ambiente no servidor afetado. Um atacante com RCE pode ter exfiltrado esses dados.
- Verificação de Backdoors: Inspecione o sistema de arquivos e os processos ativos do servidor para detectar shells persistentes, novos usuários ou backdoors inseridos pelo atacante.
- Análise de Logs: Revise os logs de acesso e segurança em busca de padrões incomuns de tráfego de saída (exfiltração de dados) ou execuções de comandos suspeitos.
Profundidade e Hardening
Para evitar que falhas futuras, como a React2Shell, causem danos máximos, implemente práticas de segurança em profundidade:
- Princípio do Mínimo Privilégio: Certifique-se de que o processo Node.js que executa sua aplicação Next.js rode com o mínimo de privilégios possível. Se for explorado, o atacante terá acesso limitado ao sistema.
- Web Application Firewall (WAF): Utilize um WAF para monitorar e filtrar requisições maliciosas. Embora WAFs nem sempre bloqueiem payloads de desserialização complexos, eles podem mitigar ataques de exploração conhecidos ou scans.
- Segurança no Servidor: Use ferramentas de monitoramento de integridade de arquivos e detecção de runtime(como Falco ou equivalentes) para alertar sobre execuções de comandos não autorizadas (como a ativação de um reverse shell) no seu container ou máquina virtual.
O React2Shell é um lembrete severo de que a complexidade das arquiteturas modernas, como o RSC e seus protocolos proprietários, introduz novos vetores de ataque. A única defesa robusta é a aplicação imediata de patches e a manutenção contínua de um modelo de segurança em profundidade.



