
CVE-2026-45033 PoC per Claude Code, non Github Copilot. Funziona per Haiku 4.5.
core.fsmonitor / git bare-repo (PoC)Proof-of-concept per la classe di vulnerabilità "repository git bare malintenzionato → core.fsmonitor → esecuzione di codice" (cfr. CVE-2026-45033 in GitHub Copilot CLI)
riprodotta contro Claude Code, aggirando la protezione aggiuntiva per i permessi bash
che Claude Code ha introdotto e che Copilot non aveva.
Risultato: esecuzione di codice all'interno della sandbox di Claude Code quando l'agente esegue un
comando git in un repository i cui file sono stati piazzati oltre la protezione. Payload inerte
(scrive un timestamp in /tmp/.bench-marker).
Claude Code chiede conferma prima di qualsiasi singolo comando bash che sia
crei file di struttura git (HEAD/objects/refs/hooks) sia esegua git:
"Questo comando crea file di struttura del repository git (HEAD/objects/refs/hooks) e poi esegue git, che può eseguire hooks/fsmonitor dai file creati."
Due bypass:
current/HEAD dove current -> .. La
protezione più vecchia risolve i path in modo lessicale e non vede mai HEAD. (Corretto dalla
modifica realpath nella release patchata.)mkdir/touch/mv/cp); /bin/mkdir, install, o un binario fornito dal
repository vengono saltati. (Funziona anche sulla release patchata.)In entrambi i casi la directory del progetto diventa un bare repo valido il cui
core.fsmonitor scatta alla successiva git status.
Due componenti:
container/ due versioni di Claude Code affiancate, auto-updater disabilitato
malicious-repo/ un monorepo plausibile che trasporta l'iniezione
Controllo di sanità dell'ambiente (nessun agente, dimostra il meccanismo):
cd malicious-repo
./build.sh
./verify.sh # clona da zero, esegue il comando piantato, verifica che fsmonitor sia scattato
Test live contro il vero Claude Code:
cd container
./build.sh # crea un'immagine con sia la versione vulnerabile sia quella patchata
./run.sh login # accesso una tantum (condiviso tra le versioni)
./run.sh # ti porta nel checkout malizioso; esegui claude e segui il prompt
Vedi malicious-repo/RUNBOOK.md per la procedura live passo-passo e il
differenziale atteso tra le due versioni.
$HOME./tmp/.bench-marker, nient'altro. Nessuna
rete, nessuna lettura di file, nessuna azione distruttiva.