
Exploit de prova de conceito para o Next.js CVE-2025-66478, demonstrando RCE via desserialização insegura e poluição de protótipo em Server Actions. Inclui aplicação vulnerável e script de exploit em Python para pesquisa de segurança.
Este repositório contém uma Prova de Conceito (PoC) para reproduzir e pesquisar a vulnerabilidade CVE-2025-66478 do Next.js. Ele consiste em uma aplicação Next.js vulnerável e um script de exploração em Python para testar a vulnerabilidade.
Esta é uma vulnerabilidade de Execução Remota de Código (RCE) que ocorre no processamento das Server Actions do Next.js.
Principais Destaques:
__proto__.| Item | Descrição |
|---|
| CVE ID | CVE-2025-66478 |
| Tipo | Execução Remota de Código (RCE) |
| Causa Raiz | Desserialização Insegura no Protocolo Flight do RSC |
| Gravidade (CVSS) | 10.0 (Crítica) |
| Impacto | Execução arbitrária de comandos do sistema no servidor |
__proto__.Object.prototype.then em todos os objetos. A lógica do Next.js identifica erroneamente esses objetos como Promises (Thenables).await essa "Promise falsa", o código JavaScript malicioso injetado no método then é executado (por exemplo, child_process.execSync).sequenceDiagram
participant Attacker
participant Server as Next.js Server
Attacker->>Server: POST / (JSON with "__proto__": {"then": ...})
Note right of Server: JSON Parsing Pollutes Object.prototype
Server->>Server: Application Logic encounters an Object
rect rgb(200, 150, 150)
Note right of Server: "Thenable" Check Gadget
Server->>Server: Checks: typeof obj.then === 'function'?
Server-->>Server: YES (due to pollution)
end
Server->>Server: Await/Execute malicious .then()
Note right of Server: Malicious JS Code Runs (RCE)
Server-->>Attacker: Response (Action Redirect / Error info)Consequentemente, à medida que o servidor processa essa Promise manipulada, ele executa o código JavaScript injetado pelo atacante, o que pode levar à execução de comandos do sistema. O main.py incluído é um código de exemplo que reproduz esse cenário de ataque.
Esta vulnerabilidade afeta aplicações Next.js que utilizam o App Router.
Versões Corrigidas:
next.js/: Código de exemplo de aplicação web Next.js vulnerável.exploit/: Script de execução do exploit escrito em Python (main.py).Primeiro, você precisa executar o servidor Next.js alvo.
Navegue até o diretório next.js:
cd next.js
Instale as dependências:
npm install
# You can also use yarn or pnpm.
Inicie o servidor de desenvolvimento:
npm run dev
Verifique se você consegue acessar http://localhost:3000 pelo seu navegador.
Agora você pode testar a vulnerabilidade usando o script Python.
Navegue até o diretório exploit a partir da raiz do projeto:
cd exploit
(Opcional) É recomendado usar um Ambiente Virtual:
python3 -m venv venv
source venv/bin/activate # For Windows: venv\Scripts\activate
Instale as bibliotecas necessárias:
O módulo requests é obrigatório.
pip install requests
Execute o script:
python main.py
Por padrão, ele aponta para o endereço local (http://localhost:3000). Para testar um endereço diferente, use a opção --url:
python main.py --url http://target-ip:3000
Este código é fornecido apenas para fins de pesquisa em segurança e educação. Usar esta ferramenta contra sistemas ou redes sem permissão prévia é ilegal, e o usuário é o único responsável por quaisquer problemas decorrentes desse uso.