
"Uma única requisição HTTP manipulada pode comprometer todo o seu servidor." — React Security Team, Dez 2025
Gravidade: CRÍTICA | CVSS v3.1: 10.0 (Máximo) | Status: Ativamente Explorado
React2Shell é uma vulnerabilidade de segurança crítica nos Componentes do Servidor React (RSC) — um recurso moderno que permite ao React executar partes do seu aplicativo web no servidor em vez do navegador.
A falha permite que qualquer invasor na internet — sem nenhum login, nenhum acesso especial e nenhum conhecimento prévio do seu sistema — envie uma única requisição HTTP maliciosa para o seu servidor e execute qualquer código que desejar nele. Isso significa que eles podem roubar dados, instalar malware, bloquear seus arquivos com ransomware ou assumir o controle total do seu servidor.
Pense assim: seu servidor tem uma porta que deveria abrir apenas para visitantes confiáveis, mas acontece que qualquer um pode entrar — apenas batendo de uma maneira específica.
| Propriedade | Valor |
|---|---|
| CVE ID | CVE-2025-55182 (também chamado de React2Shell) |
| Gravidade | Crítica — Execução Remota de Código (RCE) |
| Pontuação CVSS v3.1 | 10.0 / 10.0 (máximo possível) |
| Pontuação CVSS v4 | 9.3 / 10.0 |
| Tipo de Fraqueza | CWE-502 — Desserialização de Dados Não Confiáveis |
| Método de Ataque | Única requisição HTTP POST, sem necessidade de autenticação |
| Descoberto Por | Lachlan Davidson (pesquisador de segurança) |
| Divulgado | 3 de dezembro de 2025 |
| Status do Exploit | Exploit público disponível — usado ativamente por invasores |
| CVE Relacionado | CVE-2025-66478 (Next.js — duplicata confirmada) |
react-server-dom-webpack — versions 19.0.0, 19.1.0, 19.1.1, 19.2.0 react-server-dom-parcel — versions 19.0.0, 19.1.0, 19.1.1, 19.2.0 react-server-dom-turbopack — versions 19.0.0, 19.1.0, 19.1.1, 19.2.0
### Frameworks Afetados
| Framework / Ferramenta | Escopo Afetado |
|----------------------------|----------------------------------------------------|
| **Next.js 15.x – 16.x** | Apenas App Router — Pages Router **NÃO** é afetado |
| **React Router RSC** | Apenas canal instável / preview |
| **Redwood SDK** | Apenas modo RSC |
| **Waku** | Todas as versões com RSC habilitado |
| **Expo** | Apenas builds preview RSC |
| **Vite RSC Plugin** | Todas as integrações |
| **Parcel RSC Plugin** | Todas as integrações |
| **Qualquer configuração RSC personalizada** | Qualquer servidor que use desserialização RSC Flight |
> ⚠️ **Importante:** Você está vulnerável mesmo que não use Server Actions ou Server Functions explicitamente — desde que React Server Components estejam habilitados no seu aplicativo.
> ✅ **Não afetado:** Aplicativos que usam apenas o Pages Router, ou aplicativos sem React no lado do servidor.
---
## Por Que Isso É Tão Perigoso?
Três razões tornam o React2Shell excepcionalmente grave:
1. **Nenhuma autenticação necessária.** Qualquer pessoa na internet pode tentar este ataque. Sem conta, sem token, sem acesso prévio necessário.
2. **Funciona em instalações padrão.** Um novo aplicativo Next.js criado com `create-next-app` — sem nenhuma configuração personalizada — é imediatamente explorável. Os desenvolvedores não precisam fazer nada errado para estar vulneráveis.
3. **Confiabilidade de quase 100%.** Pesquisadores de segurança confirmaram que o exploit funciona quase sempre contra servidores não corrigidos.
---
## Como o Ataque Funciona?
### A Causa Raiz — Em Português Claro
Quando seu servidor React recebe dados de um cliente, ele processa (desserializa) esses dados para entender o que fazer a seguir. O problema é que o React **nunca verifica se esses dados são seguros ou legítimos** — ele confia cegamente no que chega.
Um atacante explora isso enviando dados especialmente elaborados que sequestram o comportamento interno do JavaScript no servidor, permitindo-lhes, por fim, injetar e executar seu próprio código.
### Explicação Técnica
O exploit usa uma técnica chamada **poluição de protótipo (prototype pollution)**:
1. O atacante envia uma requisição HTTP POST manipulada para qualquer endpoint RSC (nenhuma URL especial necessária).
2. O analisador (parser) do React Flight Protocol processa o payload sem validação estrutural.
3. O payload malicioso polui `Object.prototype.then` — um objeto fundamental do JavaScript do qual todos os outros objetos herdam.
4. Isso concede ao atacante acesso ao construtor `Function` do JavaScript.
5. O atacante usa o construtor `Function` para executar código arbitrário como o processo do servidor Node.js.```
Step 1 — Attacker sends crafted HTTP POST
↓
Step 2 — React deserializes payload blindly
↓
Step 3 — Object.prototype.then is hijacked (prototype pollution)
↓
Step 4 — Function constructor is accessed
↓
Step 5 — Attacker's code runs on the server
↓
Step 6 — Attacker has full server control
// This is a simplified version of the vulnerable code path inside React function parseFlightRequest(req) { const flight = req.body;
// ❌ NO validation — the server trusts whatever arrives
const decoded = dangerousDeserialize(flight); // Attack happens here
// If the attacker controls decoded.action → RCE
return executeServerReference(decoded.action);
}
### Como é a Aparência do Ataque```http
POST /?flight=1 HTTP/1.1
Content-Type: text/plain
{
"status": "resolved_model",
"$1:__proto__:then": "node:process.mainModule.require('child_process').execSync('id > /tmp/rce')",
"_formData.get": "$1:constructor:constructor"
}
A auto-detecção do cabeçalho Proxy-Authorization é suportada ao analisar a solicitação inteira. O scanner tentará detectar automaticamente e configurar um Proxy-Authorization personalizado com base na solicitação original. Para pular, use --pauth No.
O teler pode ser configurado para buscar seu endereço IP público usando um serviço. Isso é útil se a máquina não tiver acesso direto à Internet, por exemplo, a opção --public-ip api. O endereço IP obtido deste serviço será usado na saída do log se as solicitações recebidas tiverem o endereço IP 127.0.0.1.
No momento, há dois provedores suportados: ipinfo e ipapi.
[!NOTE] O
ipapiestá usandohttppara sua API, enquanto oipinfoestá usandohttps.
Aqui estão todas as opções que você pode usar com o teler.
[[--|--//]] Teler Options [[--|--//]]
Usage of teler:
-c, --config string
Specify teler configuration file
-f, --format string
Custom log format for file output
-i, --input string
Analyze logs from data persistence rather than buffer stream
-j, --json
Display the JSON format threat on the output
-l, --logdev string
--logdev=unix:///var/run/teler/teler.sock
--logdev=unixgram:///var/run/teler/teler.sock
--logdev=unixpacket:///var/run/teler/teler.sock
--logdev=tcp://:2222
--logdev=udp://:2222
-o, --output string
Save detected threats to a file
-x, --concurrent int
Set the concurrent value for the log handler (default 20)
-p, --public-ip string
Public IP address to use in log output if the incoming requests have 127.0.0.1 IP address
-w, --whitelist string
A whitelist for a file, directory, or network that will still be allowed to access even if the request is malicious
-A, --authorization string
Set the Basic Authentication credentials for accessing the Web UI
---```bash
curl -X POST https://target.com/react?flight=1
-H "Content-Type: text/plain"
--data '["$ACTION_REF","proto","constructor","<attacker_payload>"]'
> 🚫 **Aviso legal:** Não utilize isto contra qualquer sistema que não seja seu ou para o qual não tenha autorização explícita por escrito para testar.
---
## Versões Corrigidas — Atualize Agora
### Pacotes React RSC
| Package | Versão Corrigida |
|------------------------------|------------------------------|
| `react-server-dom-webpack` | 19.0.1, 19.1.2, **19.2.1+** |
| `react-server-dom-parcel` | 19.0.1, 19.1.2, **19.2.1+** |
| `react-server-dom-turbopack` | 19.0.1, 19.1.2, **19.2.1+** |
> 💡 **Recomendação:** Atualize para **19.2.3** para também corrigir vulnerabilidades relacionadas subsequentes (CVE-2025-55183, CVE-2025-55184, CVE-2025-67779).
### Next.js
| Sua Versão | Atualize Para |
|--------------|-------------|
| 13.x / 14.x | **14.2.35** |
| 15.0.x | **15.0.5** |
| 15.1.x | **15.1.9** |
| 15.2.x | **15.2.6** |
| 15.3.x | **15.3.6** |
| 15.4.x | **15.4.8** |
| 15.5.x | **15.5.7** |
| 16.0.x | **16.0.7** |
---
## Como se Proteger — Passo a Passo
Siga estes passos **em ordem**. Os passos 1 e 2 são obrigatórios. Os restantes adicionam camadas extras de defesa.
### Passo 1 — Atualize os pacotes React (mais importante)```bash
# Check your current version
npm list react-server-dom-webpack
# Upgrade to the latest patched version
npm install react-server-dom-webpack@latest
npm install react-server-dom-parcel@latest
npm install react-server-dom-turbopack@latest
npm install next@X
### Passo 3 — Adicionar proteção WAF (defesa em profundidade)
| Provedor de Nuvem | Ação Necessária |
|-------------------------|-------------------------------------------------------------------------------------------|
| **AWS WAF** | Ativar `AWSManagedRulesKnownBadInputsRuleSet` v1.24+ — regras React2Shell estão incluídas |
| **AWS Network Firewall** | Ativar regras gerenciadas do Active Threat Defense (atualizadas automaticamente via MadPot) |
| **Google Cloud Armor** | Implantar o conjunto de regras React2Shell a partir do console |
| **Cloudflare** | Regra WAF `react2shell-cve-2025-55182` — aplicada automaticamente para planos Pro+ |
> ⚠️ **As regras WAF por si só não são suficientes.** Elas não conseguem bloquear todas as variantes de payload. Aplicar patches nos seus pacotes é a única correção completa.
### Passo 4 — Se não puder aplicar o patch imediatamente
- Desativar temporariamente os **endpoints RSC Flight** no seu servidor.
- Isso reduz sua superfície de ataque até que você possa aplicar o patch.
### Passo 5 — Verifique se você já foi atacado
- **Audite os logs do seu servidor** em busca de requisições POST suspeitas para endpoints RSC/flight antes da data do seu patch.
- Procure por conexões de saída incomuns, novas contas de usuário ou processos inesperados.
### Passo 6 — Precauções de assumir violação
- **Rotacione todos os segredos** — chaves de API, credenciais de banco de dados, tokens de sessão, variáveis de ambiente.
- Trate qualquer servidor que executou uma versão vulnerável como potencialmente comprometido.
---
## Atividade de Ataque no Mundo Real
### Escala (Até abril de 2026)
| Métrica | Valor |
|--------------------------------|------------------------------------|
| Total de sessões de ataque | **mais de 8,1 milhões** (GreyNoise)|
| Volume diário de ataque | **300.000 – 400.000** requisições/dia |
| Pico de volume diário | **mais de 430.000** (final de dezembro de 2025) |
| IPs de atacantes únicos | **8.163** em 101 países |
| Tempo para primeira infecção | **2 minutos** após exposição do servidor |
Só a AWS representa mais de um terço da infraestrutura de ataque observada — ou seja, os atacantes estão operando em grande parte a partir de servidores hospedados em nuvem para realizar esses ataques em escala.
### Quem Está Atacando?
Múltiplos grupos distintos de agentes de ameaça foram confirmados explorando esta vulnerabilidade:
**Relação com a China (Patrocinado pelo Estado)**
- **Earth Lamia** (também rastreado como UNC5454 pelo Google) — ligado ao Ministério da Segurança do Estado da China (MSS)
- **Jackpot Panda** — identificado pelas equipes de inteligência de ameaças da AWS e do Google
- Também realizando exploração paralela de outras vulnerabilidades recentes simultaneamente
**Relação com o Irã**
- Atores afiliados ao Irã observados pelo Google GTIG em dezembro de 2025
**Coreia do Norte (RPDC)** ⚠️ *Novo — janeiro de 2026*
- Indicadores ligados à campanha **Contagious Interview** (uma operação de longa data da RPDC que visa desenvolvedores de software)
- Implantam **EtherRAT** — um novo backdoor que usa **infraestrutura de comando e controle baseada em blockchain**, tornando muito difícil bloquear com bloqueio padrão de IP/domínio
**Cibercriminosos / Motivados Financeiramente**
- Operadores de ransomware confirmados usando React2Shell para acesso inicial ⚠️ *Novo — dezembro de 2026*
- Pelo menos um caso documentado onde ransomware foi implantado **em menos de um minuto** após a exploração inicial
- Mineração de criptomoedas (XMRig) amplamente implantada em campanhas oportunistas
### Malware Observado em Campo
| Malware / Ferramenta | O Que Faz | Quem Usa |
|-----------------------------------|----------------------------------|---------------------------------|
| SNOWLIGHT | Baixa mais malware | Earth Lamia (China) |
| MINOCAT | Cria túneis ocultos | Earth Lamia (China) |
| HISONIC | Backdoor para persistência | Earth Lamia (China) |
| COMPOOD | Sobrevive a reinicializações | Earth Lamia (China) |
| **EtherRAT** ⚠️ *Novo* | Backdoor C2 blockchain | RPDC / Contagious Interview |
| XMRig | Minera criptomoedas | Múltiplos grupos |
| Cobalt Strike | Framework de controle remoto | Campanhas "emerald" & "nuts" |
| Sliver / Nezha | Frameworks C2 | Campanha "emerald" |
| Fast Reverse Proxy (FRP) | Tunelamento de rede | Múltiplos grupos |
| Secret-Hunter | Rouba credenciais | Campanha "nuts" |
| Botnets Mirai / Rondo | DDoS / persistência | Atores oportunistas |
| MeshAgent (ferramenta RMM) | Gerenciamento remoto | Múltiplos grupos (persistência) |
| **Web shell Next.js em memória** ⚠️ *Novo* | Persistência furtiva | Múltiplos atores (confirmado GTIG) |
> 💡 **O que é um web shell em memória?** É um backdoor que é executado inteiramente na memória do servidor — sem deixar arquivos no disco, tornando extremamente difícil de detectar com antivírus padrão ou ferramentas de varredura de arquivos.
> 💡 **O que é C2 baseado em blockchain?** Em vez de se conectar a servidores atacantes via endereços IP ou domínios normais (que podem ser bloqueados), o EtherRAT recebe seus comandos de transações de blockchain — um sistema descentralizado que não pode ser facilmente derrubado ou bloqueado.
---
## Ferramentas de Detecção
### Microsoft Defender for Cloud
Dois modelos dedicados estão disponíveis na galeria do explorador de segurança:
- *Contêineres expostos à Internet executando imagens de contêiner vulneráveis ao React2Shell — CVE-2025-55182*
- *Máquinas virtuais expostas à Internet vulneráveis ao React2Shell — CVE-2025-55182*
O Microsoft Security Exposure Management também mapeia automaticamente os caminhos de ataque do React2Shell em sua infraestrutura de nuvem.
### GreyNoise
Um modelo de bloqueio pronto para uso está disponível: **Tentativa de RCE por Desserialização Insegura de Componentes de Servidor React CVE-2025-55182**
Conjuntos completos de dados de impressão digital do atacante (ASN, JA4T, JA4H) estão publicamente disponíveis:```
github.com/GreyNoise-Intelligence/gn-research-supplemental-data/tree/main/2026-01-06-react2shell
Use Runtime Vulnerability Analytics — filter by CVE-2025-55182 to identify vulnerable React or Next.js packages in your environment.
Após a divulgação, aproximadamente 145 ferramentas de exploit falsas e não funcionais foram circuladas online — muitas geradas por IA. Riscos do uso de ferramentas não verificadas:
Use apenas scanners de fontes verificadas e confiáveis pela comunidade.
Nov 29, 2025 Lachlan Davidson privately reports the vulnerability to Meta / React team
Dec 03, 2025 Patched packages published to npm CVE-2025-55182 publicly disclosed Vercel deploys runtime-level protections (not just WAF) Cloudflare WAF rules activated Mass automated scanning begins within hours of disclosure
Dec 04, 2025 First working public exploit released by Moritz Sanft Default create-next-app confirmed exploitable with no changes
Dec 05, 2025 Discoverer Lachlan Davidson releases his own PoC (~30 hours post-disclosure) Active exploitation observed in Datadog and Rapid7 honeypots Darktrace honeypot infected in 2 minutes after deployment
Dec 05–08 "emerald" and "nuts" malware campaigns deploy Cobalt Strike, Sliver, Nezha, FRP, Secret-Hunter; Mirai and Rondo botnets also active 362 unique attacker IPs observed; 152 with identifiable payloads
Dec 08, 2025 Rapid7 confirms exploitation using the public PoC
Dec 11, 2025 Follow-on CVEs disclosed: CVE-2025-55183 and CVE-2025-55184
Dec 12, 2025 Google GTIG identifies China-nexus threat clusters Iran-nexus activity also flagged
Dec 15, 2025 Microsoft confirms hundreds of compromised machines Coin miners and backdoors (SNOWLIGHT, HISONIC) deployed at scale Microsoft Defender for Cloud templates published
Dec 17, 2025 ⚠️ [NEW] Ransomware operators confirmed using React2Shell for initial access — malware deployed in under one minute post-exploitation (Reported by BleepingComputer, based on S-RM and Microsoft Defender)
Dec 29, 2025 AWS formally attributes activity to Earth Lamia and Jackpot Panda AWS Network Firewall Active Threat Defense rules updated
Jan 06, 2026 GreyNoise publishes full attacker fingerprint dataset (8.1M+ attack sessions recorded)
Jan 13, 2026 ⚠️ [NEW] IronGate Security identifies DPRK (North Korea) exploitation Indicators linked to Contagious Interview campaign EtherRAT (blockchain C2 backdoor) deployed post-exploitation Attacker staging involves downloading Node.js runtime before payload
Jan 26, 2026 Additional DoS vulnerability CVE-2026-23864 disclosed and patched
Mar 04, 2026 Dynatrace advisory updated with latest remediation guidance
## Referências
| Fonte | Link |
|--------------------------------|-----------------------------------------------------------------------------------------------|
| Comunicado Oficial do React | https://react.dev/blog/2025/12/03/critical-security-vulnerability-in-react-server-components |
| React2Shell (Descobridor) | https://react2shell.com |
| Comunicado do Next.js | https://nextjs.org/blog/CVE-2025-66478 |
| Análise Aprofundada da Wiz | https://www.wiz.io/blog/critical-vulnerability-in-react-cve-2025-55182 |
| Blog de Segurança da Microsoft | https://www.microsoft.com/en-us/security/blog/2025/12/15/defending-against-the-cve-2025-55182-react2shell-vulnerability-in-react-server-components/ |
| Inteligência de Ameaças do Google | https://cloud.google.com/blog/topics/threat-intelligence/threat-actors-exploit-react2shell-cve-2025-55182 |
| Boletim de Segurança da AWS | https://aws.amazon.com/security/security-bulletins/AWS-2025-030/ |
| Atribuição China-Nexus da AWS | https://aws.amazon.com/blogs/security/china-nexus-cyber-threat-groups-rapidly-exploit-react2shell-vulnerability-cve-2025-55182/ |
| Palo Alto Unit 42 | https://unit42.paloaltonetworks.com/cve-2025-55182-react-and-cve-2025-66478-next/ |
| Pesquisa da Trend Micro | https://www.trendmicro.com/en_us/research/25/l/CVE-2025-55182-analysis-poc-itw.html |
| Grade de Observação GreyNoise | https://www.greynoise.io/blog/cve-2025-55182-react2shell-opportunistic-exploitation-in-the-wild-what-the-greynoise-observation-grid-is-seeing-so-far |
| Análise da Darktrace | https://www.darktrace.com/blog/react2shell-how-opportunist-attackers-exploited-cve-2025-55182-within-hours |
| Comunicado da Dynatrace | https://www.dynatrace.com/news/blog/cve-2025-55182-react2shell-critical-vulnerability-what-it-is-and-what-to-do/ |
| BleepingComputer — Ransomware | https://www.bleepingcomputer.com/news/security/critical-react2shell-flaw-exploited-in-ransomware-attacks/ |
| IronGate — Atividade DPRK | https://www.irongatesecurity.com/ironintel/react2shell-cve-2025-55182 |
| Entrada no NVD | https://nvd.nist.gov/vuln/detail/CVE-2025-55182 |
---
**Crédito da Vulnerabilidade:**
Descoberta original e divulgação responsável por **Lachlan Davidson** (29 de novembro de 2025).
---
*Última atualização: 16 de abril de 2026*
*Este documento destina-se apenas a fins educacionais e de segurança defensiva.*
| CVE ID | Descrição | Severidade | Status |
|---|
| CVE-2025-55182 | Execução Remota de Código RSC — esta vulnerabilidade | 10.0 | Corrigido |
| CVE-2025-66478 | RCE downstream do Next.js (duplicata confirmada) | 10.0 | Rejeitado — duplicata |
| CVE-2025-55183 | Exposição de código-fonte via RSC | 5.3 | Corrigido na versão 19.2.2+ |
| CVE-2025-55184 | Negação de Serviço via loop infinito no parser RSC | 7.5 | Corrigido na versão 19.2.2+ |
| CVE-2025-67779 | DoS — correção incompleta para CVE-2025-55184 | 7.5 | Corrigido na versão 19.2.3+ |
| CVE-2026-23864 | Negação de Serviço RSC adicional (Janeiro de 2026) | 7.5 | Corrigido |