
Scanner passivo de vulnerabilidades para CVE-2025-55182 e CVE-2025-66478, que detecta RCE não autenticado em React Server Components por meio de fingerprinting de framework, análise de versão e sondagem de endpoints RSC.
Ferramenta de Detecção de Execução Remota de Código no Protocolo Flight do React Server Components
Este scanner identifica sistemas potencialmente vulneráveis ao CVE-2025-55182 (React) e ao CVE-2025-66478 (Next.js), vulnerabilidades críticas de execução remota de código não autenticada no protocolo "Flight" do React Server Components (RSC).
Principais Fatores de Risco:
Uma vulnerabilidade crítica de desserialização insegura na implementação de Server Components do React. O protocolo "Flight" do RSC não valida adequadamente a estrutura e os tipos dos payloads recebidos, permitindo que atacantes injetem dados maliciosos que influenciam a execução no lado do servidor.
| Pacote | Versões Vulneráveis | Versões Corrigidas |
|---|---|---|
| react-server-dom-webpack | 19.0.0, 19.1.0, 19.1.1, 19.2.0 | 19.0.1, 19.1.2, 19.2.1 |
| react-server-dom-parcel | 19.0.0, 19.1.0, 19.1.1, 19.2.0 | 19.0.1, 19.1.2, 19.2.1 |
| react-server-dom-turbopack | 19.0.0, 19.1.0, 19.1.1, 19.2.0 | 19.0.1, 19.1.2, 19.2.1 |
| Next.js | 14.3.0-canary.77+, 15.x, 16.0.0-16.0.6 | 15.0.5, 15.1.9, 15.2.6, 15.3.6, 15.4.8, 15.5.7, 16.0.7 |
Attacker → Crafted HTTP POST → RSC Endpoint → Deserialization → RCE
O ataque requer apenas uma solicitação HTTP especialmente elaborada para qualquer endpoint de Server Function. Nenhuma autenticação é necessária, e as configurações padrão são vulneráveis.
O scanner usa fingerprinting passivo e sondagem de protocolo para identificar sistemas potencialmente vulneráveis. Ele NÃO tenta explorar a vulnerabilidade.
┌─────────────────────────────────────────────────────────────────┐
│ DETECTION PIPELINE │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 1. Framework Detection │
│ ├── HTTP Headers (X-Powered-By: Next.js) │
│ ├── Page Source (__NEXT_DATA__, react artifacts) │
│ └── Build Manifests │
│ │
│ 2. Version Fingerprinting │
│ ├── Embedded version strings in JS bundles │
│ ├── Package version patterns │
│ └── Build manifest analysis │
│ │
│ 3. RSC Endpoint Discovery │
│ ├── Send RSC headers (RSC: 1, Accept: text/x-component) │
│ ├── Analyze response Content-Type │
│ └── Detect Flight protocol markers in response │
│ │
│ 4. Server Actions Probing │
│ ├── POST request with minimal Flight payload │
│ ├── Check for deserialization processing │
│ └── Identify action endpoints │
│ │
│ 5. Vulnerability Assessment │
│ ├── Correlate version with known vulnerable ranges │
│ ├── Weight RSC endpoint presence │
│ └── Generate confidence-scored verdict │
│ │
└─────────────────────────────────────────────────────────────────┘
| Indicador | Método de Detecção | Confiança |
|---|---|---|
X-Powered-By: Next.js | Inspeção do cabeçalho HTTP | Alta |
Tag de script __NEXT_DATA__ | Análise do código-fonte HTML | Alta |
Caminhos de assets /_next/ | Análise do código-fonte HTML | Média |
| Marcadores de hidratação do React | Análise do código-fonte HTML | Média |
O protocolo Flight usa um formato de transmissão específico:
0:["$","div",null,{"children":"Hello"}]
1:["$","$L1",null,{}]
2:{"name":"ServerComponent"}
O scanner procura por:
text/x-component{number}:{payload}$, $L, $F, $@, $undefinedProcura padrões de versão em:
/_next/static/chunks/)[email protected])requests# Clone or download the scanner files
# Install dependencies
pip install -r requirements.txt
# Verify installation
python3 cve-2025-55182-scanner.py --help
# Single target
python3 cve-2025-55182-scanner.py -t https://example.com
# With verbose output
python3 cve-2025-55182-scanner.py -t https://example.com -v
# Create targets file (one URL per line)
echo "https://app1.example.com" > targets.txt
echo "https://app2.example.com" >> targets.txt
# Scan all targets
python3 cve-2025-55182-scanner.py -f targets.txt -o results.json
python3 cve-2025-55182-scanner.py -t https://example.com \
--timeout 15 \
--threads 10 \
--user-agent "SecurityAudit/1.0" \
-v \
-o scan_results.json
| Opção | Descrição | Padrão |
|---|---|---|
-t, --target | URL de destino única | - |
-f, --file | Arquivo com lista de destinos | - |
-o, --output | Arquivo de saída JSON | - |
-v, --verbose | Mostrar evidências detalhadas | False |
--timeout | Tempo limite da solicitação (segundos) | 10 |
--threads | Threads simultâneas | 5 |
--verify-ssl | Verificar certificados SSL | False |
--user-agent | User-Agent personalizado | Mozilla/5.0... |
--no-banner | Suprimir banner | False |
Para uma análise mais aprofundada do protocolo:
python3 rsc_analyzer.py https://example.com 2>/dev/null
Ele fornece análise detalhada do protocolo Flight e enumeração de componentes.
| Status | Significado | Ação Necessária |
|---|---|---|
| 🔴 VULNERABLE | Versão vulnerável confirmada detectada | Aplicação imediata de patch |
| 🔴 LIKELY_VULNERABLE | React 19.x com RSC, versão dentro da faixa vulnerável | Aplicação urgente de patch |
| 🟡 POTENTIALLY_VULNERABLE | Endpoints RSC encontrados, versão desconhecida | Investigar e aplicar patch |
| 🟢 NOT_VULNERABLE | Versão corrigida confirmada | Monitorar atualizações |
| 🔵 UNKNOWN | Não foi possível determinar o status | Verificação manual necessária |
| ⚪ ERROR | Falha na varredura | Tentar novamente ou verificação manual |
======================================================================
Target: https://app.example.com
Status: VULNERABLE
Framework: Next.js
Version: 19.1.0
RSC Endpoints: /, /_next/data
Evidence:
- X-Powered-By header: Next.js
- React version detected: 19.1.0
- RSC Flight response at / (Content-Type: text/x-component)
- Flight protocol markers detected at /
Recommendations:
→ CRITICAL: Immediate patching required!
→ Upgrade React to 19.0.1, 19.1.2, or 19.2.1
→ Upgrade Next.js to latest patched version (15.0.5+, 16.0.7)
→ Enable WAF rules to block malicious RSC payloads
→ Monitor for anomalous POST requests to RSC endpoints
======================================================================
{
"target": "https://app.example.com",
"status": "VULNERABLE",
"framework": "Next.js",
"version": "19.1.0",
"rsc_endpoints": ["/", "/_next/data"],
"evidence": [
"X-Powered-By header: Next.js",
"React version detected: 19.1.0",
"RSC Flight response at / (Content-Type: text/x-component)"
],
"recommendations": [
"CRITICAL: Immediate patching required!",
"Upgrade React to 19.0.1, 19.1.2, or 19.2.1"
]
}
| Tipo de Resultado | Confiança | Explicação |
|---|---|---|
| VULNERABLE com versão | ALTA (90%+) | String de versão correspondeu a versão vulnerável conhecida |
| VULNERABLE via cabeçalho | ALTA (85%+) | X-Powered-By expôs versão vulnerável |
| LIKELY_VULNERABLE | MÉDIA-ALTA (70-85%) | React 19.x detectado, RSC ativo, versão não corrigida explicitamente |
| POTENTIALLY_VULNERABLE | MÉDIA (50-70%) | Endpoints RSC respondem, mas versão desconhecida |
| NOT_VULNERABLE | ALTA (85%+) | Versão corrigida detectada explicitamente |
| UNKNOWN | BAIXA (<50%) | Informações insuficientes coletadas |
✅ String de versão explícita encontrada nos bundles
✅ Cabeçalho X-Powered-By expõe a versão
✅ Múltiplos indicadores RSC presentes
✅ Resposta do protocolo Flight confirmada
✅ Servidor aceita solicitações POST RSC
❌ Nenhuma informação de versão exposta
❌ WAF/CDN mascarando respostas
❌ Implementação de framework personalizada
❌ Cache intenso impedindo sondagens
❌ Rate limiting bloqueando a detecção
| Cenário | Por Que Acontece | Mitigação |
|---|---|---|
| String de versão antiga em cache | Cache de CDN/build | Verificar múltiplos endpoints |
| RSC desabilitado após atualização | Alteração de configuração sem rebuild | Verificar data do build |
| Implementação RSC não padronizada | Framework personalizado | Verificação manual |
| Cenário | Por Que Acontece | Mitigação |
|---|---|---|
| Versão removida dos bundles | Otimização de produção | Verificar manifestos de build |
| WAF bloqueando sondagens | Controles de segurança | Testar a partir de IP permitido |
| RSC em caminhos não padronizados | Roteamento personalizado | Expandir wordlist de caminhos |
| SPA sem indicadores de SSR | Renderização somente no cliente | Verificar endpoints de API |
| Fator | Impacto na Detecção |
|---|---|
| Cloudflare/WAF | Pode bloquear sondagens, mascarar cabeçalhos |
| Cache CDN | Pode servir informações de versão desatualizadas |
| Balanceadores de carga | Podem rotear para versões diferentes da aplicação |
| Kubernetes/Containers | Cada pod pode ser diferente |
| Feature flags | RSC pode estar habilitado condicionalmente |
Para achados críticos, sempre valide com:
npm audit ou yarn auditAções Imediatas (0-24 horas):
Aplique o patch imediatamente
npm install [email protected] [email protected]
npm install [email protected] # or latest patched
Habilite regras de WAF - Cloudflare, Akamai e AWS WAF implementaram regras de proteção
Monitore os logs em busca de solicitações POST suspeitas para endpoints RSC
Ações de Curto Prazo (24-72 horas):
package.json# Batch scan all company assets
cat domains.txt | while read domain; do
python3 cve-2025-55182-scanner.py -t "$domain" -o "results_${domain//\//_}.json"
done
# Aggregate results
jq -s '[.[] | select(.status == "VULNERABLE" or .status == "LIKELY_VULNERABLE")]' results_*.json > critical_findings.json
# GitHub Actions example
- name: CVE-2025-55182 Check
run: |
python3 cve-2025-55182-scanner.py -t ${{ env.APP_URL }} -o results.json
if grep -q '"status": "VULNERABLE"' results.json; then
echo "::error::Critical vulnerability detected!"
exit 1
fi
| Versão | Data | Alterações |
|---|---|---|
| 1.0.0 | 2025-12-03 | Lançamento inicial |
Esta ferramenta é fornecida apenas para testes de segurança autorizados. Utilize-a somente contra sistemas que você possui ou para os quais tenha permissão explícita por escrito para testar. Os autores não assumem responsabilidade por uso indevido ou danos causados por esta ferramenta.