
PoC CVE-2026-45033 pour Claude Code, pas Github Copilot. Fonctionne avec Haiku 4.5.
core.fsmonitor (PoC)Preuve de concept pour la classe de vulnérabilité « dépôt git bare malveillant → core.fsmonitor → exécution de code » (cf. CVE-2026-45033 dans GitHub Copilot CLI), reproduite contre Claude Code, contournant la protection supplémentaire d'autorisation bash que Claude Code a ajoutée et que Copilot ne possédait pas.
Résultat : exécution de code dans le sandbox de Claude Code lorsque l'agent exécute une commande git dans un dépôt dont les fichiers ont été placés au-delà de la protection. Charge utile inerte (écrit un horodatage dans /tmp/.bench-marker).
Claude Code demande confirmation avant toute commande bash individuelle qui à la fois crée des fichiers de structure git (HEAD/objects/refs/) et exécute git :
hooks« Cette commande crée des fichiers de structure de dépôt git (HEAD/objects/refs/hooks) puis exécute git, ce qui peut exécuter hooks/fsmonitor à partir des fichiers créés. »
Deux contournements :
current/HEAD où current -> .. L'ancienne protection résout les chemins de manière lexicale et ne voit jamais HEAD. (Corrigé par le changement realpath dans la version patchée.)mkdir/touch/mv/cp) ; /bin/mkdir, install ou un binaire fourni avec le dépôt sont ignorés. (Fonctionne aussi sur la version patchée.)Dans les deux cas, le répertoire du projet devient un dépôt bare valide dont le core.fsmonitor se déclenche au prochain git status.
Deux éléments :
container/ two Claude Code versions side by side, auto-updater disabled
malicious-repo/ a plausible monorepo that carries the injection
Vérification de l'environnement (sans agent, prouve le mécanisme) :
cd malicious-repo
./build.sh
./verify.sh # clones fresh, runs the planted command, asserts fsmonitor fired
Test en direct contre un vrai 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
Voir malicious-repo/RUNBOOK.md pour la procédure en direct étape par étape et la différence attendue entre les deux versions.
$HOME./tmp/.bench-marker, rien d'autre. Pas de réseau, pas de lecture de fichiers, aucune action destructrice.