// 1 ZERO-DAY · 4 CVE · 2 EXPLOIT · 1 ADVISORY NELLE ULTIME 24H
La vulnerabilità Plugin4Shell aggira lo SHA pinning nei plugin di quattro agenti AI. Due vendor hanno patchato; Microsoft e Google no. L'analisi del meccanismo e

Il 18 settembre 2026 il team di ricerca AIR ha reso pubblica Plugin4Shell, una vulnerabilità che aggira il meccanismo di SHA pinning nei plugin di Claude Code, OpenAI Codex, GitHub Copilot e Google Gemini CLI. L'esecuzione di codice remoto è zero-click per Claude Code e Codex, che aggiornano automaticamente i plugin in background. Due vendor hanno corretto il problema; Microsoft non ha rilasciato patch, Google ha deprecato Gemini CLI senza risolvere il difetto. La meccanica tecnica è confermata dalla PR #34644 di OpenAI; altri dettagli provengono da ricerca AIR non ancora peer-reviewed.

Punti chiave
  • Quattro agenti AI eseguono plugin verificando il commit hash ma non confermando che il codice checkout corrisponda effettivamente a quel hash, permettendo la sostituzione silenziosa del payload.
  • Claude Code e Codex sono vulnerabili a zero-click exploitation: l'aggiornamento automatico dei plugin riavvia il checkout senza interazione utente.
  • Anthropic ha patchato Claude Code nella versione 2.1.179; OpenAI ha corretto Codex nella versione 0.146.0.
  • Microsoft non ha rilasciato alcun aggiornamento per GitHub Copilot, usato da circa il 90% delle Fortune 100 per le cifre di GitHub.
  • Google ha deprecato Gemini CLI senza patch, indicando la migrazione verso Antigravity.

Come funziona il bypass dello SHA pinning

I plugin degli agenti AI sono distribuiti tramite repository Git, con il marketplace che fissa un commit specifico tramite il suo hash a 40 caratteri. L'agente richiede quell'hash e procede al checkout, presumendo che il codice ottenuto corrisponda al commit desiderato. La ricerca AIR ha dimostrato che questo presupposto è errato.

Per Claude Code, Codex e Copilot, un attaccante che controlla il repository remoto può creare un branch con nome identico all'hash del commit pin. Git, nel risolvere il riferimento, prioritizza il nome del branch rispetto all'oggetto commit. L'agente riceve il codice del branch malevolo mentre l'interfaccia continua a mostrare l'hash originale come pin rispettato.

La variante Gemini CLI utilizza un approccio diverso ma equivalente: l'installer effettua il checkout di FETCH_HEAD, e un branch denominato FETCH_HEAD redirige l'operazione verso codice arbitrario. In entrambi i casi il risultato è identico: esecuzione di codice non autorizzato con l'apparenza di integrità.

Il meccanismo è documentato nella descrizione della pull request #34644 del repository Codex di OpenAI: "Git can interpret a requested commit SHA as a branch name when the remote's default branch has the same name. This can cause a marketplace plugin source to materialize a different commit than the one it pinned". La PR include un test di regressione che crea un branch con nome corrispondente all'hash di un altro commit, verificando il rifiuto del sistema.

Perché l'attacco è zero-click su Claude Code e Codex

La dimensione zero-click si applica specificamente a Claude Code e Codex. Entrambi riavviano automaticamente il checkout dei plugin quando il marketplace aggiorna il pin al commit successivo. L'utente non interagisce con il processo, non visualizza richieste di conferma, non seleziona manualmente il repository. L'agente esegue il pull in background e, nel caso del branch collision, installa il payload senza indicazione visiva di anomalia.

Per Copilot e Gemini CLI, la fonte non specifica se l'installazione dei plugin avvenga con le stesse modalità automatiche. Il brief riporta "zero-click exploitation possible" per Claude Code e Codex, non estendendo questa proprietà agli altri due agenti.

AIR ha costruito proof-of-concept funzionanti contro tutti e quattro gli agenti nel maggio 2026, seguiti da disclosure coordinata ai vendor nel giugno 2026. Non è stata assegnata alcuna CVE alla data della pubblicazione; il team non ha rilevato evidenza di sfruttamento in-the-wild.

"The agent checks out the exact commit the marketplace pinned but never verifies it landed there, so an attacker who controls the plugin's repo makes the checkout resolve to malicious code while the pin still looks honored" — Or Nevo, Dor Granat e Niv Hoffman (AIR)

La risposta asimmetrica dei vendor: due patch, due vuoti

Anthropic ha rilasciato la versione 2.1.179 di Claude Code con verifica post-checkout: il sistema confronta l'hash HEAD risolto con il pin richiesto e interrompe l'operazione in caso di mismatch. OpenAI ha seguito lo stesso pattern nella versione 0.146.0 di Codex, con la pull request #34644 che descrive il controllo: "Resolve HEAD after checking out a SHA-pinned Git plugin source and reject when resolved commit does not exactly match requested SHA".

Microsoft, secondo AIR e The Register, non ha risposto alla disclosure entro la data di pubblicazione. GitHub — proprietà di Microsoft — ha implementato una mitigazione parziale a livello di piattaforma: blocca la creazione di branch e tag con nomi che assomigliano a commit SHA sui repository ospitati. Questa misura protegge i plugin hosted su GitHub, ma Copilot supporta marketplace di terze parti come Bitbucket e server Git self-hosted, dove la restrizione non applica. Secondo AIR, "Microsoft Copilot is also still vulnerable because it supports marketplaces from such platforms as well, which exposes it to the vulnerability".

Google ha scelto di deprecare Gemini CLI senza rilasciare patch, indicando la migrazione verso Antigravity. La fonte non specifica se le versioni enterprise di Gemini CLI annunciate da Google includano la correzione, né fornisce timeline per la transizione.

Cosa fare adesso

  • Gli ambienti che utilizzano Claude Code devono aggiornare alla versione 2.1.179 o successiva; per Codex, alla versione 0.146.0 o successiva.
  • Gli utenti di GitHub Copilot devono limitare l'installazione di plugin a repository ospitati su GitHub, dove la mitigazione di blocco dei nomi SHA-like è attiva; evitare fonti Bitbucket o self-hosted fino a patch da Microsoft.
  • Per Gemini CLI, valutare la migrazione verso Antigravity secondo l'indicazione di Google.

Domande frequenti

I plugin già compromessi vengono rimossi aggiornando l'agente?
La fonte non specifica se l'aggiornamento rimuova plugin già sostituiti o prevenga solo swap futuri. Gli utenti potrebbero dover verificare manualmente le installazioni esistenti.

GitHub è completamente immune?
No. La mitigazione di GitHub blocca solo i nomi SHA-like, non la variante FETCH_HEAD di Gemini CLI. Inoltre Copilot supporta repository non ospitati su GitHub.

Esiste una CVE?
Nessuna CVE è stata assegnata alla data della pubblicazione, secondo le fonti disponibili.

Le informazioni sono state verificate sulle fonti citate e aggiornate al momento della pubblicazione.

Fonti


Fonti e riferimenti
  1. helpnetsecurity.com
  2. thehackernews.com
  3. cybersecuritynews.com
  4. theregister.com
  5. startupfortune.com
  6. github.com
  7. gbhackers.com