Codex의 샌드박스는 AI 코딩 에이전트가 읽고, 쓰고, 실행할 수 있는 범위를 제한하기 위한 장치다. 그러나 Accomplish AI가 공개한 Heapjack과 Overpatch는 신뢰된 구성요소가 신뢰할 수 없는 코드와 비밀값을 공유하거나, 공격자가 제어하는 입력으로 권한 범위를 계산할 경우 이 경계가 우회될 수 있음을 보여줬다. 두 문제는 모두 패치된 것으로 보고됐다.
4
8
핵심: 권한을 가진 쪽이 잘못된 대상을 신뢰했다
두 취약점의 기술적 경로는 달랐지만 본질은 같다. 샌드박스 밖에서 더 높은 권한을 가진 도우미 또는 하니스(harness)가 샌드박스 안쪽의 신뢰할 수 없는 상태나 입력을 권한 판단에 사용했다는 점이다.
| 취약점 |
신뢰한 대상 |
경계가 무너진 이유 |
| Heapjack |
공유 V8 힙에 있던 인증 토큰 |
신뢰할 수 없는 코드가 신뢰된 요청을 구분하는 비밀값을 복구할 수 있었다. 8 15 |
| Overpatch |
에이전트가 제어하는 패치 안의 경로 |
경로가 단순한 편집 대상 설명이 아니라 쓰기 권한 범위를 넓히는 입력으로 쓰였다. 4 |
이는 전형적인 혼동된 대리인(confused deputy) 문제다. 높은 권한을 가진 구성요소가 낮은 신뢰도의 입력을 대신 처리하면서, 그 입력의 권한 또는 최종 대상이 안전한지 제대로 검증하지 못하는 상황이다. 따라서 에이전트의 셸만 격리하는 것으로는 충분하지 않다. 보조 도구, 인증 토큰, 전역 설정, 오케스트레이션 하위 프로세스가 더 높은 권한을 유지하거나 저장소 내용의 영향을 받는다면 전체 신뢰 경계가 흔들릴 수 있다.
Heapjack: 공유 V8 힙에 놓인 인증 비밀값
Heapjack은 Codex Desktop이 설치한 node_repl 통합 구성요소에 영향을 줬다. 연구진에 따르면 Desktop 앱은 MCP 서버 설정을 전역 ~/.codex/config.toml에 기록했다. 이 공유 설정을 쓰는 CLI 세션도 해당 도우미를 상속할 수 있는 구조였다.
8
9
문제의 분리는 도우미의 JavaScript 런타임 안에서 실패했다.
- 신뢰된 컨텍스트는 실행마다 부여되는 인증 토큰을 보관했다.
- 에이전트가 제어하는 신뢰할 수 없는 컨텍스트는 같은 V8 힙에서 실행됐다.
- 신뢰할 수 없는 쪽이 토큰을 복구해 네이티브 부모 프로세스가 승인된 것으로 판단하는 요청을 만들 수 있었다.
8
15
이 부모 프로세스는 샌드박스 바깥에서 동작했으므로, 결과적으로 명령 실행을 포함한 호스트 수준 작업으로 이어질 수 있었다. Codex가 읽기 전용 모드로 설정된 경우에도 마찬가지였다. 핵심은 JavaScript 실행 자체가 아니라, 신뢰된 작업과 신뢰할 수 없는 작업을 구분하는 자격 증명이 후자가 접근 가능한 메모리에 있었다는 점이다.
8
15
Overpatch: 패치 내용이 쓰기 권한을 넓힌 경우
Overpatch는 워크스페이스 쓰기 모드의 Codex CLI apply_patch에 관한 문제였다. 이 도구는 편집을 워크스페이스 안으로 제한해야 했지만, 패치에 적힌 상위 디렉터리를 기준으로 쓰기 범위를 허용했다.
4
즉, 패치 안의 파일 경로 자체가 보안상 민감한 입력이 됐다. Accomplish의 개념증명에서는 실질적인 변경에는 도움이 되지 않는 /tmp 같은 경로를 넣는 것만으로 권한 범위가 파일시스템 루트(/)까지 확대될 수 있었다. 이어 별도의 패치 변경이 저장소가 제어하는 심볼릭 링크를 따라 워크스페이스 밖 파일을 수정할 수 있었으며, 여기에는 사용자 홈 디렉터리의 셸 시작 설정 파일도 포함됐다.
4
9
위험은 즉시 실행되는 형태가 아니라도 현실적이었다. 예를 들어 셸 시작 파일에 삽입된 코드는 개발자가 나중에 터미널을 열 때 에이전트 샌드박스 밖에서 실행될 수 있다. 이 호스트 동작에는 통상적인 승인 프롬프트가 필요하지 않았다.
4
7
Git 기반 에이전트 탈출과의 연결점
2026년에 보고된 다른 코딩 에이전트 샌드박스 탈출은 기술적으로는 별개지만 구조는 유사했다. Accomplish의 Beltdown 및 Beltdown2 보고서에 따르면, 에이전트의 셸은 샌드박스로 감싸졌지만 주변 하니스가 실행하는 내부 Git 명령은 샌드박스 밖에서 동작했다. 저장소의 .git/config는 Git의 core.fsmonitor 설정을 이용해, Git이 작업 트리를 검사할 때 구성된 도우미를 실행하게 만들 수 있었다.
17
18
Manifold Security는 이 범주를 GitSpawn으로 설명했다. 저장소가 제어하는 Git 설정이 에이전트의 프로젝트 검사 과정에서 공격자가 선택한 코드를 실행시킬 수 있다는 것이다. 경우에 따라 의미 있는 승인 또는 신뢰 결정 이전에 실행될 수 있다.
20
21
여기서의 교훈은 모든 저장소가 모든 작업 흐름에서 자동으로 위험하다는 뜻은 아니다. 다만 도구가 메타데이터를 검사하고, 심볼릭 링크를 해석하고, 패치를 적용하고, 훅을 실행하거나 보조 프로세스를 시작할 때 저장소는 잠재적으로 능동적인 입력으로 취급해야 한다는 뜻이다. 에이전트 제품의 신뢰 경계에는 화면에 보이는 명령 도구뿐 아니라 이 모든 경로가 포함된다.
패치된 Codex 버전
보고된 최소 수정 버전은 다음과 같다.
- Heapjack: Codex Desktop 빌드 26.818.21641 이상
8
9
- Overpatch: Codex CLI 버전 0.149.0 이상
4
8
Accomplish는 두 문제를 2026년 8월 12일 OpenAI에 보고했으며, 수정은 8일 안에 이뤄졌다고 밝혔다.
9
신뢰할 수 없는 저장소를 열기 전 점검할 일
- Desktop과 CLI를 모두 업데이트한다. 두 문제는 서로 다른 구성요소에 영향을 줬다. 특히 Desktop이 설치한 전역 도우미는 공유 설정을 쓰는 CLI 세션에도 영향을 줄 수 있었다.
8
9
- 저장소를 단순한 소스 코드로만 보지 않는다. 심볼릭 링크, 패치 경로, 구성 파일, 훅, Git 메타데이터는 에이전트 또는 하니스의 동작에 영향을 줄 수 있다.
4
20
- 민감한 호스트 자원을 노출하지 않는다. 출처가 불분명한 코드를 평가할 때 장기 자격 증명, SSH 키, 클라우드 토큰, Docker 소켓, 민감한 홈 디렉터리 파일을 환경에 제공하지 않는 것이 좋다.
- 정말 신뢰할 수 없는 프로젝트에는 외부 격리를 사용한다. 일회용 VM 등 강한 별도 환경은 에이전트·도우미·하니스가 손상됐을 때도 개발자 워크스테이션과 분리된 경계를 제공한다.
.git 메타데이터가 그대로 전달되는 경로에 특히 주의한다. GitSpawn 계열 위험은 압축 파일, 공유 드라이브, 동기화 폴더, 이동식 저장장치처럼 .git 메타데이터를 보존하는 방식으로 프로젝트를 받을 때 더 관련성이 크다. 일반적인 git clone은 원격 저장소의 로컬 .git/config를 통상 전송하지 않는다.
22
실무적인 결론은 명확하다. 영향받은 Codex 구성요소를 패치해야 하지만, 낯선 저장소와 개발자 워크스테이션 사이의 유일한 방어선으로 프로세스 내부 샌드박스만 믿어서는 안 된다.