
CVE-2025-55182 React RCE Test Program
Programa de Teste RCE React CVE-2025-55182
Este script é uma ferramenta de verificação de vulnerabilidade direcionada à CVE-2025-55182, uma grave vulnerabilidade de execução remota de código (RCE) presente nos React Server Components (RSC) do React 19.x.
Esta ferramenta determina se a vulnerabilidade existe em um servidor real e, dependendo das opções, pode executar comandos, registrar logs ou testar com o método RCE de dois estágios (module#_load).
⚠️ Esta ferramenta deve ser usada apenas em ambientes de teste fechados para auditoria de segurança e verificação de vulnerabilidades.
| Item | Conteúdo |
|---|---|
| Número da Vulnerabilidade | CVE-2025-55182 (React) / CVE-2025-66478 (Next.js) |
| Nome da Vulnerabilidade | React2Shell |
| Tipo de Vulnerabilidade | Execução Remota de Código (RCE) – Autenticação não necessária |
| Severidade (CVSS) | 10.0 (Crítico) |
| Data de Descoberta | 2025-11-29 (Lachlan Davidson) |
| Dificuldade de Ataque | Muito Baixa (nível Log4Shell) |
| Descrição da Vulnerabilidade | Vulnerabilidade RCE estrutural que permite acesso à cadeia de protótipos (constructor, __proto__) através da notação de colchetes da função requireModule() durante a desserialização Flight |
✅ Projetos com funcionalidades RSC devem atualizar também os módulos
react-server-dom-*para a versão mais recente, separadamente do React, para estarem seguros.
CVE-2025-55182/
├── README.md # 전체 개요 및 스캐너 사용법
├── DETECTION_RULES.md # 탐지/차단용 규칙 모음
├── 설명 및 탐지규칙.md # 한글 탐지 규칙 설명
├── cve_2025_55182_interactive.py # RCE 검증 스캐너 스크립트
├── requirements.txt # 스캐너 의존성 목록
├── setup_vulnerable_env.sh # 취약 환경 일괄 설치 스크립트
├── uninstall_vulnerable_env.sh # 취약 환경 정리/제거 스크립트
└── vulnerable-react-env/ # React2Shell 취약 서버 실습용 코드
├── README.md # 실습 환경 사용법
├── package.json # npm 스크립트 및 의존성
├── server.js # 취약한 Express 백엔드
├── public/
│ └── index.html # CDN 기반 React 프런트엔드
└── .gitignore
✅ Testar interativamente se o RCE é possível no servidor vulnerável
✅ Suporte aos métodos child_process#execSync (padrão) ou module#_load
✅ Salvar o resultado da execução do comando em um arquivo de log
✅ Enviar comandos de sistema digitados pelo usuário para o servidor
git clone <this-repo>
cd <this-repo>
pip install -r requirements.txt
Teste RCE básico (método execSync)
child_process.execSync()python cve_2025_55182_interactive.py http://localhost:3000 --rceTeste RCE de dois estágios (método module#_load)
module#_loadpython cve_2025_55182_interactive.py http://localhost:3000 --rce --method moduleLoadTeste RCE baseado em RSC (opção --rce2)
python cve_2025_55182_interactive.py http://localhost:3000 --rce2Salvar resultado da execução do comando em log
python cve_2025_55182_interactive.py http://localhost:3000 --rce --log rce_output.logA pasta vulnerable-react-env contém um servidor React + Express intencionalmente vulnerável que reproduz o CVE-2025-55182.
./setup_vulnerable_env.sh completa instalação de pacotes apt → instalação do nvm/Node.js 20 → npm install de uma só vez.cd vulnerable-react-env && npm start ou npm run dev.npm run exibirá a lista de scripts. Use npm start (ou npm run start) para especificar o script../uninstall_vulnerable_env.sh para remover node_modules, payloads do moduleLoad e (opcional) Node 20 e nvm.ERR_MODULE_NOT_FOUND: Cannot find package 'express', execute cd vulnerable-react-env && npm install para instalar node_modules e depois npm start novamente.sudo apt update && sudo apt install -y curl build-essential⚠️ Proibido uso fora de fins de pesquisa/educação. Não exponha à internet.
💬 Comando do sistema a ser executado: whoami
✅ Código de resposta: 200
📄 Conteúdo da resposta: {"success":true,"result":"www-data"}
💬 Comando do sistema a ser executado: id
✅ Código de resposta: 200
📄 Conteúdo da resposta: {"success":true,"result":"uid=1000(hacker) gid=1000(hacker)"}
💬 Comando do sistema a ser executado: exit
👋 Encerrando.
❌ Nunca use em ambientes de produção.
✅ Este script deve ser usado apenas em ambiente de teste local ou VM isolada.
🛠️ O método --method moduleLoad cria um arquivo real em /tmp/evil.js.
🧾 Se usar a opção --log, os resultados são salvos em texto simples; restrinja o acesso ao arquivo.
🔐 Todas as requisições verificam se o código JavaScript real é executado no servidor vulnerável.
CVE oficial: CVE-2025-55182
Métodos de exploit:
Fluxo de ataque:
Este projeto é fornecido apenas para fins de pesquisa de segurança, auditoria e teste.
O uso não autorizado em sistemas reais é ilegal.
Toda responsabilidade legal decorrente do uso desta ferramenta é do próprio usuário.
| Produto/Ferramenta | Versão Vulnerável | Versão Corrigida |
|---|
| React.js | 19.0.0, 19.1.0, 19.1.1, 19.2.0 | 19.0.1, 19.1.2, 19.2.1 |
| react-server-dom-webpack | As acima (↑) | As acima |
| react-server-dom-parcel | As acima (↑) | As acima |
| react-server-dom-turbopack | As acima (↑) | As acima |
| Next.js 14 | Algumas versões a partir de 14.3.0.canary.77 | (Oficiosamente) Recomenda-se migrar para 15.0.5 ou superior |
| Next.js 15 | 15.0.0 ~ 15.5.6 | 15.0.5, 15.1.9, 15.2.6, 15.3.6, 15.4.8, 15.5.7, 15.6.0 |
| Next.js 16 | 16.0.0 ~ 16.0.6 | 16.0.7 |
| Outras ferramentas | React Router RSC, RedwoodJS, Vite RSC Plugin, Parcel RSC Plugin, etc. | É necessário corrigir as dependências RSC desses projetos |
Utilização completa (método + log)
moduleLoad juntamente com o salvamento de logpython cve_2025_55182_interactive.py http://localhost:3000 --rce --method moduleLoad --log rce_output.logSaída de depuração do payload
python cve_2025_55182_interactive.py http://localhost:3000 --rce --debugcurl -fsSL https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh -o /tmp/install_nvm.sh && bash /tmp/install_nvm.shnvm install 20 && nvm use 20cd vulnerable-react-env && npm installnpm start (porta padrão: 3000)http://localhost:3000 e envie _payload e cmd através do formulário.vulnerable-react-env/README.md