
Teste e Analise a vulnerabilidade CVE-2025-55182 em Next.js Server Actions
Status do Projeto: Experimental / Prova de Conceito
Este repositório serve como um ambiente de pesquisa controlado e um framework de Prova-de-Conceito (PoC) para analisar CVE-2025-55182. Ele demonstra uma vulnerabilidade de Poluição de Protótipo no contexto de Server Actions do Next.js, visando especificamente operações de mesclagem recursiva inseguras.
A vulnerabilidade central reside em uma função utilitária deepMerge personalizada implementada dentro de uma Server Action do Next.js (syncConfiguration). A função não possui sanitização adequada para chaves especiais de objeto—especificamente __proto__ e constructor. Essa omissão permite que um atacante não autenticado injete propriedades arbitrárias no Object.prototype global.
Em um runtime Node.js no lado do servidor, a poluição de protótipo bem-sucedida pode resultar em:
isAdmin), ou configurações globalmente.toString ou valueOf.child_process ou engines de template) para alcançar execução arbitrária de código.lab/next-app/: Uma aplicação Next.js 15 vulnerável projetada para simular a falha de segurança.
src/app/actions.jsx: O código do lado do servidor contendo a implementação vulnerável de deepMerge.exploits/: Scripts de automação em Python para teste e exploração.
rce.py: Um script que automatiza a injeção de payloads JSON maliciosos para demonstrar poluição de estado do servidor.get-shell.py: Uma PoC avançada explorando vetores de desserialização do RSC Flight Protocol.docs/PAYLOADS.md: Um documento de referência contendo vários payloads JSON para teste e análise manuais.Você pode executar o laboratório usando Docker (recomendado) ou localmente.
Certifique-se de que o Docker e o Docker Compose estão instalados.
docker-compose up --build
A aplicação estará acessível em http://localhost:3000.
Requer Node.js 20+.
cd lab/next-app
npm install
npm run dev
A aplicação estará acessível em http://localhost:3000.
http://localhost:3000.docs/PAYLOADS.md (ex.: o Payload Básico).Os scripts Python fornecidos permitem a verificação programática da vulnerabilidade.
Pré-requisito: Obtenha o Next-Action ID da aba Rede do navegador (procure por um cabeçalho de requisição POST Next-Action) ou da saída do terminal do servidor.
docker exec -it exploit-runner bash
export ACTION_ID="your_action_id_here"
python3 rce.py "id"
pip install -r exploits/requirements.txt
export ACTION_ID="your_action_id_here"
python3 exploits/rce.py "id"
Nota: O script rce.py está configurado para demonstrar poluição de estado bem-sucedida. A execução completa do shell depende de gadgets ambientais específicos que podem variar.
Este projeto é destinado exclusivamente para fins educacionais e pesquisa de segurança.
Não use o código ou as técnicas fornecidas aqui em sistemas para os quais você não tenha permissão explícita e por escrito. Os autores não são responsáveis por qualquer uso indevido ou dano causado por este material.