
Laboratório de pesquisa de segurança para CVE-2025-55183 e CVE-2025-55184 em React Server Components
Um ambiente abrangente de testes de segurança para as vulnerabilidades CVE-2025-55183 (Exposição de Código Fonte) e CVE-2025-55184 (Negação de Serviço) em Componentes de Servidor React.
APENAS PARA FINS EDUCACIONAIS E DE PESQUISA EM SEGURANÇA
Este repositório contém aplicativos e ferramentas de exploração deliberadamente vulneráveis. Teste apenas em sistemas que você possui ou para os quais tenha permissão explícita por escrito. Testes não autorizados são ilegais e antiéticos.
Ambas as vulnerabilidades afetam as versões 19.0.0 a 19.2.2 dos Componentes de Servidor React, divulgadas em 11 de dezembro de 2025.
| Propriedade | Valor |
|---|---|
| Severidade | Média (CVSS 5.3) |
| Tipo | Divulgação de Informações |
| Impacto | Exposição de código fonte do servidor |
| Autenticação | Nenhuma Necessária |
Atacantes podem coagir argumentos de Server Action a vazar código fonte exclusivo do servidor chamando .toString() em objetos de função do servidor. Isso expõe:
| Propriedade | Valor |
|---|---|
| Severidade | Alta (CVSS 7.5) |
| Tipo | Negação de Serviço |
| Impacto | Indisponibilidade completa do serviço |
| Autenticação | Nenhuma Necessária |
Payloads especialmente criados criam recursão infinita de promessas, fazendo com que o servidor Node.js trave indefinidamente. Resulta em:
| Aspecto | CVE-2025-55183 | CVE-2025-55184 |
|---|---|---|
| Severidade | Média | Alta |
| Tipo | Divulgação de Informações | Negação de Serviço |
| Impacto | Vazamento de código fonte | Travamento do servidor |
| Detecção | Resposta contém código | Tempo limite/travamento do servidor |
| Recuperação | Imediata | Requer reinicialização |
TL;DR: A aplicação ESTÁ vulnerável (React 19.0.0), mas proteções modernas podem impedir a falha real neste ambiente de demonstração.
CVE-2025-55184 é uma vulnerabilidade REAL e CRÍTICA que afeta React 19.0.0-19.2.2 em ambientes de produção. No entanto, demonstrar com sucesso a falha DoS em uma demonstração local pode ser desafiador devido a:
Mesmo que o exploit não trave a demonstração, você pode verificar a vulnerabilidade através de:
cd vulnerable-app
npm list react react-dom
# Output shows:
[email protected] ← VULNERABLE VERSION
[email protected] ← VULNERABLE VERSION
Se você vir 19.0.0 a 19.2.2, a aplicação ESTÁ vulnerável.
cd scanner
python scan.py http://localhost:3000
O scanner verifica:
git clone https://github.com/StealthMoud/react-server-cve-lab.git
cd react-server-cve-lab
# Inicie a aplicação (vulnerável a ambos os CVEs)
docker-compose up --build -d
# Aplicação disponível em: http://localhost:3000
cd scanner
# Instale as dependências
pip install -r requirements.txt
# Escaneie para ambas as vulnerabilidades
python scan.py http://localhost:3000
# Escaneie apenas CVE-2025-55183
python scan.py --cve 55183 http://localhost:3000
# Escaneie apenas CVE-2025-55184
python scan.py --cve 55184 http://localhost:3000
# Escaneie múltiplos alvos
python scan.py --file targets.txt
react-server-cve-lab/
├── README.md # Este arquivo
├── DOCUMENTATION.md # Documentação técnica completa
├── LICENSE
├── .gitignore
├── docker-compose.yml
│
├── vulnerable-app/ # Vulnerável a AMBOS os CVEs
│ ├── Dockerfile
│ ├── package.json
│ ├── next.config.js
│ └── app/
│ ├── layout.js
│ ├── page.js
│ └── actions.js # Ações de servidor vulneráveis
│
├── scanner/
│ ├── requirements.txt
│ ├── scan.py # Scanner para ambos os CVEs
│ └── README.md
│
└── exploits/
├── exploit-55183.py # PoC para CVE-2025-55183
├── exploit-55184.py # PoC para CVE-2025-55184
└── README.md
A aplicação é um aplicativo Next.js executando React 19.0.0 com Server Actions, vulnerável a ambos os CVEs.
# Usando Docker Compose (recomendado)
docker-compose up --build -d
# Verifique se está rodando
curl http://localhost:3000
# Veja os logs
docker-compose logs -f
# Pare a aplicação
docker-compose down
cd vulnerable-app
npm install
npm run build
npm start
O scanner unificado detecta tanto CVE-2025-55183 quanto CVE-2025-55184.
cd scanner
# Escaneie para ambas as CVEs
python scan.py http://localhost:3000
# Escaneie CVE específico
python scan.py --cve 55183 http://localhost:3000
python scan.py --cve 55184 http://localhost:3000
# Saída detalhada
python scan.py --verbose http://localhost:3000
# Tempo limite personalizado
python scan.py --timeout 10 http://example.com