
PoC для CVE-2026-45033 для Claude Code, а не для Github Copilot. Работает на Haiku 4.5.
core.fsmonitor (PoC)Доказательство концепции для класса уязвимостей «вредоносный bare git-репозиторий → core.fsmonitor → выполнение кода» (ср. CVE-2026-45033 в GitHub Copilot CLI), воспроизведённое против Claude Code, которое обходит дополнительную защиту разрешений bash, добавленную Claude Code и отсутствовавшую в Copilot.
Результат: выполнение кода внутри песочницы Claude Code при запуске агентом git-команды в репозитории, файлы которого были размещены в обход защиты. Инертная нагрузка (записывает временную метку в /tmp/.bench-marker).
Claude Code запрашивает подтверждение перед любой одиночной bash-командой, которая одновременно создаёт файлы git-структуры (HEAD/objects/refs/hooks) и запускает git:
«Эта команда создаёт файлы структуры git-репозитория (HEAD/objects/refs/hooks) и затем запускает git, который может выполнить hooks/fsmonitor из созданных файлов.»
Два способа обхода:
current/HEAD, где current -> .. Старая защита разрешает пути лексически и никогда не видит HEAD. (Исправлено изменением realpath в пропатченном релизе.)mkdir/touch/mv/cp); /bin/mkdir, install или бинарный файл из репозитория пропускаются. (Работает и на пропатченном релизе.)В любом случае каталог проекта становится корректным bare-репозиторием, чей core.fsmonitor срабатывает при следующем git status.
Два компонента:
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, и ничего больше. Ни сети, ни чтения файлов, ни разрушительных действий.