
Um scanner de superfície não intrusivo para CVE-2025-55182 (RCE em React Server Components). Detecta endpoints RSC expostos em aplicações React 19 e Next.js.
Um detector de superfície especializado e não intrusivo para CVE-2025-55182 (RCE em Componentes de Servidor React).

Leia isto antes de escanear:
Embora a CVE-2025-55182 seja uma vulnerabilidade crítica de RCE (CVSS 10.0), a exploração real em ambientes de produção do Next.js é condicional.
serverManifest para permitir módulos específicos. Tentativas diretas de carregar módulos perigosos (como child_process) via RSC geralmente falham porque não estão neste manifesto.serverManifest na memória e contornar a lista de permissões.742 em vez de `"vm""). Exploits rígidos que adivinham nomes falharão (Falsos Negativos).Esta ferramenta é um Detector de Superfície. Ela identifica se o protocolo RSC está exposto e ativo. Encontrar um endpoint exposto é o passo pré-requisito para identificar a superfície de ataque onde uma cadeia de Poluição de Protótipo poderia ser tentada.
A maioria dos PoCs e scanners públicos resulta em Falsos Negativos em ambientes de produção porque caem em quatro armadilhas comuns:
Rigidez do Exploit: Tentam executar gadgets específicos (como vm ou child_process) que são bloqueados por listas de permissões, ou dependem de IDs hardcoded (ex.: "id":"vm") que falham contra builds Webpack minificados.
Redirecionamentos Raiz: Acessar POST / no Next.js geralmente dispara um redirecionamento 307/308 (ex.: para /login), fazendo com que o corpo do POST seja perdido ou convertido para GET antes que o servidor o processe.
Incompatibilidade de Transporte: Muitos scanners enviam payloads como text/plain ou JSON puro. Ações de Servidor Next.js estritas geralmente exigem encapsulamento multipart/form-data. Se o formato estiver errado, o servidor retorna 404/200 sem nunca acionar o parser vulnerável.
Cegueira para WAF: Ferramentas padrão veem um 403 Proibido e desistem. Elas não conseguem distinguir entre um bloqueio global de IP e um filtro de regra específico, perdendo oportunidades de contornar o WAF usando técnicas de codificação ou preenchimento.
Este scanner resolve todos os três desafios:
✅ Sondagem Inteligente de Caminhos: Sonda automaticamente caminhos aleatórios inexistentes (ex.: /x7z9q2) para contornar redirecionamentos raiz (307/308) e forçar o App Router do Next.js a processar o contexto da requisição.
✅ Transporte Rigoroso (Multipart): Usa encapsulamento multipart/form-data em vez de texto simples. Isso resolve Falsos Negativos em endpoints de Ações de Servidor estritas que, de outra forma, retornam 404.
✅ Análise Diferencial de WAF: Distingue entre bloqueios globais ([BLOQUEADO]) e filtragem de regras específicas ([FILTRADO]). Se o backend permite o protocolo mas bloqueia o payload, o scanner identifica como um alvo de alto valor.
✅ Modo de Bypass Automático: Inclui um mecanismo opcional --bypass que tenta automaticamente técnicas de evasão (Escapes Unicode, Mutação de Espaços em Branco, Preenchimento Lixo) contra alvos [FILTRADO].
✅ Detecção Aprimorada: Captura "Falhas Silenciosas" ([SUSPEITO]) em servidores enterprise que removem cabeçalhos X-Powered-By, e identifica a impressão digital do redirecionamento 303 See Other da Assetnote.
✅ Identificação Ativa: Usa um payload especializado (["$1:aa:aa"]) para acionar o erro único "Digest" do React 19 RSC, confirmando que o parser está ativo mesmo sem um RCE completo.
Clone o repositório:
git clone https://github.com/fatguru/CVE-2025-55182-scanner.git
cd CVE-2025-55182-scanner
Instale as dependências (recomendado em um ambiente virtual):
pip install -r requirements.txt
Varredura Básica
Verifique uma única URL. Nota: Certifique-se de apontar para o caminho correto da aplicação (ex.: /dashboard, /login), não apenas o domínio raiz, pois os endpoints do App Router do Next.js são específicos de caminho.
python3 cve_2025_55182_scanner.py -u http://localhost:3000/dashboard
Varredura em Lote
Escaneie uma lista de URLs de um arquivo (uma URL por linha). Esta é a estratégia recomendada para evitar perder caminhos específicos.
python3 cve_2025_55182_scanner.py -l targets.txt -o results.csv
Ignora erros de certificado SSL/TLS (útil para varredura baseada em IP, laboratórios locais ou certificados autoassinados).
python3 cve_2025_55182_scanner.py -u [https://192.168.1.50](https://192.168.1.50) -k
Novo na v2.1: Use a flag --header para passar cookies de sessão ou tokens se a aplicação estiver atrás de autenticação ou um WAF que exija cabeçalhos específicos.
python3 cve_2025_55182_scanner.py -u https://target.com --header "Cookie: session=123" --header "Authorization: Bearer xyz"
| Flag | Descrição |
|---|---|
-u, --url | URL de destino única (ex.: http://target.com/dashboard). |
-l, --list | Arquivo contendo uma lista de URLs para escanear (uma por linha). |
--bypass | (Novo v2.5) Ativa o modo de Evasão de WAF. Tenta automaticamente técnicas de mutação (Unicode, Preenchimento, Espaços) se um alvo for detectado como [FILTRADO]. |
--header | Adiciona cabeçalhos personalizados (ex.: Cookie: session=xyz, Authorization: Bearer...). Pode ser usado várias vezes. |
-o, --output | Salva os resultados em um arquivo de texto. |
-k, --insecure | Desabilita a verificação de certificado TLS (Suprime avisos SSL). |
-t, --threads | Número de threads simultâneas para varredura em lote (padrão: 10). |
--timeout | Tempo limite de requisição em segundos (padrão: 10s para acomodar payloads multipart). |
--verbose | Ativa o modo de depuração. Mostra etapas detalhadas de sondagem, status de bloqueio do WAF e tentativas de bypass. |
📊 Interpretando Resultados (v2.5)
[EXPOSTO] | 🔴 (Vermelho) | Vulnerável
O servidor processou o payload e retornou um erro digest do React 19 OU um Redirecionamento de Ação (303). Alta confiança de superfície exposta.
[BYPASSADO] | 🟠 (Laranja) | WAF Evadido
Sucesso! O scanner inicialmente detectou um filtro, mas o evadiu com sucesso usando técnicas de mutação (ex.: Preenchimento/Unicode) para acionar a vulnerabilidade.
[SUSPEITO] | 🟡 (Amarelo) | Aviso
O servidor travou (500) ao analisar o payload. Indica lógica de serialização exposta, mesmo em alvos protegidos que removem cabeçalhos X-Powered-By.
[FILTRADO] | 🔵 (Azul) | Regra de WAF Detectada
O servidor aceita tráfego RSC (Payload benigno passou), mas uma regra específica do WAF bloqueou o payload do exploit. O alvo está vivo atrás do WAF. Use --bypass para tentar evasão.
[INFO] | 🔵 (Ciano) | Protocolo Detectado
O servidor fala RSC (text/x-component) mas lidou com o payload de forma graciosa. Provavelmente corrigido ou comportamento padrão.
[BLOQUEADO] | 🟣 (Magenta) | Bloqueio Global de WAF
Tudo foi bloqueado (403/406), incluindo o handshake benigno. O WAF está bloqueando o protocolo completamente ou seu IP.
[SEGURO] | 🟢 (Verde) | Limpo
O servidor retornou 404/200 mas ignorou cabeçalhos RSC/corpos multipart em todos os caminhos sondados.
Um template Nuclei baseado nesta lógica de detecção está incluído neste repositório: cve-2025-55182-detection.yaml.
nuclei -t cve-2025-55182-detection.yaml -l targets.txt
--bypass automatiza técnicas de evasão (Espaços em Branco, Unicode, Preenchimento Grande) quando um alvo é detectado como [FILTRADO].multipart/form-data para corrigir Falsos Negativos em alvos que retornam 404 para payloads de texto.X-Powered-By.303 See Other usados por algumas implementações vulneráveis.text/plain para multipart/form-data. Isso resolve Falsos Negativos em alvos que impõem estritamente dados de formulário para Ações de Servidor e anteriormente retornavam 404.HTTP 303 See Other e x-action-redirect, que são fortes indicadores de processamento RSC frequentemente ocultos quando scanners seguem redirecionamentos automaticamente.--header para identificação de tráfego personalizada, Autorização ou permissão de WAF.Esta ferramenta destina-se a ajudar pesquisadores de segurança e administradores a identificar superfícies de ataque expostas em seus próprios sistemas. O autor não é responsável por qualquer uso indevido desta ferramenta. Não a utilize contra sistemas para os quais você não tenha permissão explícita para testar.
Referências:
- https://nvd.nist.gov/vuln/detail/CVE-2025-55182
- https://www.wiz.io/blog/critical-vulnerability-in-react-cve-2025-55182