
PoC de CVE-2026-45033 para Claude Code, no Github Copilot. Funcionó para Haiku 4.5.
core.fsmonitor (PoC)Prueba de concepto de la clase de vulnerabilidad "repositorio git bare malicioso → core.fsmonitor → ejecución de código" (cf. CVE-2026-45033 en GitHub Copilot CLI) reproducida contra Claude Code, sorteando la protección adicional de permisos de bash que Claude Code añadió y que Copilot no tenía.
Resultado: ejecución de código dentro del sandbox de Claude Code cuando el agente ejecuta un comando git en un repositorio cuyos archivos se colocaron más allá de la protección. Payload inerte (escribe una marca de tiempo en /tmp/.bench-marker).
Claude Code solicita confirmación antes de cualquier comando bash individual que cree archivos de estructura de git (HEAD/objects/refs/) y que ejecute git:
hooks"Este comando crea archivos de estructura de repositorio git (HEAD/objects/refs/hooks) y luego ejecuta git, lo que puede ejecutar hooks/fsmonitor desde los archivos creados."
Dos bypass:
current/HEAD donde current -> .. La protección anterior resuelve rutas léxicamente y nunca ve HEAD. (Corregido por el cambio a realpath en la versión parcheada.)mkdir/touch/mv/cp); /bin/mkdir, install o un binario incluido en el repositorio se omiten. (También funciona en la versión parcheada.)De cualquier manera, el directorio del proyecto se convierte en un repo bare válido cuyo core.fsmonitor se activa en el siguiente git status.
Dos componentes:
container/ two Claude Code versions side by side, auto-updater disabled
malicious-repo/ a plausible monorepo that carries the injection
Verificación de cordura del entorno (sin agente, demuestra el mecanismo):
cd malicious-repo
./build.sh
./verify.sh # clones fresh, runs the planted command, asserts fsmonitor fired
Prueba en vivo contra Claude Code real:
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
Consulta malicious-repo/RUNBOOK.md para conocer el procedimiento en vivo paso a paso y la diferencia esperada entre las dos versiones.
$HOME./tmp/.bench-marker, nada más. Sin red, sin lecturas de archivos, sin acciones destructivas.