
CVE-2026-45033 PoC는 Github Copilot이 아닌 Claude Code용입니다. Haiku 4.5에서 작동했습니다.
core.fsmonitor 가드 우회 (PoC)"악성 베어 git 저장소 → core.fsmonitor → 코드 실행" 취약점 클래스(GitHub Copilot CLI의 CVE-2026-45033 참조)를 Claude Code에서 재현한 개념 증명(PoC)으로, Copilot에는 없던 Claude Code의 추가 bash 권한 가드를 무력화합니다.
결과: 에이전트가 가드 검사를 우회해 파일이 심어진 저장소에서 git 명령을 실행하면 Claude Code 샌드박스 내부에서 코드가 실행됩니다. 페이로드는 무해하며 /tmp/.bench-marker에 타임스탬프를 기록할 뿐입니다.
Claude Code는 git 구조 파일(HEAD/objects/refs/hooks)을 생성하면서 동시에 git을 실행하는 모든 단일 bash 명령 앞에서 확인 메시지를 표시합니다:
"이 명령은 git 저장소 구조 파일(HEAD/objects/refs/hooks)을 생성한 다음 git을 실행하므로, 생성된 파일에서 hooks/fsmonitor를 실행할 수 있습니다."
두 가지 우회 방법:
current -> .인 상태에서 current/HEAD를 기록합니다. 이전 가드는 경로를 어휘적으로만 판별하므로 HEAD를 감지하지 못합니다. (패치된 릴리스의 realpath 변경으로 수정됨.)mkdir/touch/mv/cp)만 경로 검사합니다. /bin/mkdir, install, 또는 저장소에 포함된 바이너리는 검사에서 건너뜁니다. (패치된 릴리스에서도 동작함.)어느 쪽이든 프로젝트 디렉터리는 유효한 베어 저장소가 되며, 다음에 git status가 실행되면 해당 저장소의 core.fsmonitor가 실행됩니다.
두 가지 구성 요소:
container/ two Claude Code versions side by side, auto-updater disabled
malicious-repo/ a plausible monorepo that carries the injection
환경 정상 동작 확인(에이전트 없이 메커니즘 입증):
cd malicious-repo
./build.sh
./verify.sh # clones fresh, runs the planted command, asserts fsmonitor fired
실제 Claude Code 대상 라이브 테스트:
cd container
./build.sh # builds an image with both the vulnerable and patched versions
./run.sh login # one-time sign-in (shared across versions)
./run.sh # drops you in the malicious checkout; run claude and follow the prompt
단계별 라이브 절차와 두 버전 간 예상 차이는 malicious-repo/RUNBOOK.md를 참조하세요.
$HOME에 도달할 수 없습니다./tmp/.bench-marker에 타임스탬프 하나만 기록하며 그 외에는 아무것도 수행하지 않습니다. 네트워크 접근도, 파일 읽기도, 파괴적 동작도 없습니다.