
Plugin4Shell: quattro agenti AI di programmazione si sono fidati di un pin che non hanno mai verificato
- AnthropicNUOVOAnthropic: Claude Fable 5.22026-11-09$8.00 / $40.00 per 1M di token · 99 tok/s
- orcaNUOVOOrca: OrcaC2 1.02026-11-07212 tok/s
- OrcaNUOVOOrcaCyber: GLM 5.3 Abliterated / Uncensored2026-11-04$3.00 / $5.00 per 1M di token · 123 tok/s
- OrcaNUOVOOrcaCyber: Hy4 Abliterated / Uncensored2026-11-04$0.80 / $1.60 per 1M di token · 230 tok/s
- OrcaNUOVOOrcaCyber: Kimi K3.1 Pro Abliterated / Uncensored2026-11-04$4.00 / $20.00 per 1M di token · 39 tok/s
- OrcaNUOVOOrcaCyber: MiniMax M3.1 Flash Abliterated / Uncensored2026-10-29$0.80 / $1.60 per 1M di token · 129 tok/s
- OrcaOrcaCyber: GLM 5.3 Flash Abliterated / Uncensored2026-10-27$0.80 / $1.60 per 1M di token · 58 tok/s
- OrcaOrcaCyber: Qwen3.8 Flash Next Abliterated / Uncensored2026-10-26$0.80 / $1.60 per 1M di token · 98 tok/s
- OrcaOrcaCyber: MiMo V2.6 Flash Abliterated / Uncensored2026-10-26$0.80 / $1.60 per 1M di token · 40 tok/s
- MoonshotMoonshotAI: Kimi K3.1 Pro2026-10-2447Intelligenza
- OrcaOrcaCyber: DeepSeek V4.1 Flash Abliterated / Uncensored2026-10-23$0.80 / $1.60 per 1M di token · 123 tok/s
- minimaxMiniMax: M3.1 Flash2026-10-1929Intelligenza
- OrcaOrca: OrcaCyber Ultra 1.02026-10-17$5.00 / $10.00 per 1M di token · 104 tok/s
- deepseekDeepSeek: DeepSeek V4.1 Flash 10172026-10-1733Intelligenza
- DeepSeekDeepSeek: DeepSeek V4.1 Flash2026-10-1740Intelligenza
- OrcaOrca: OrcaCyber Zero 1.52026-10-10$3.00 / $7.50 per 1M di token · 62 tok/s
- openaiOpenAI: GPT-6.1 Sol2026-09-2955Intelligenza
- anthropicAnthropic: Claude Sonnet 5.52026-09-2855Intelligenza
- typesafeTypeSafe: Jev 1.132026-09-24$0.04 / $0.00 per 1M di token · 429 tok/s
- OpenAIOpenAI: GPT-6 Luna2026-09-2228Intelligenza
Il 17 settembre 2026, AIR Security, una startup che sviluppa strumenti di sicurezza per agenti AI aziendali, ha pubblicato una ricerca che descrive Plugin4Shell — una vulnerabilità di esecuzione di codice remoto zero-click in quattro agenti AI di codifica: Claude Code di Anthropic, Codex di OpenAI, GitHub Copilot e Gemini CLI di Google. Il bug non è in nessun modello. Risiede nel checkout git che ciascun agente esegue quando installa un plugin, e nel fatto che nessuno dei quattro verificava che il codice ricevuto fosse il codice che aveva fissato. Due dei quattro avevano una patch nel momento in cui la ricerca è stata resa pubblica. Due no. Questo incidente è una voce dell'Orca AI Incident Archive, che lo registra come una vulnerabilità della supply chain ad alta gravità senza sfruttamento segnalato.
Cosa hanno effettivamente fatto di sbagliato gli agenti
Ogni agente interessato installa plugin da un marketplace, e ogni marketplace fissa un plugin a uno specifico commit git — uno SHA di 40 caratteri — una volta che il plugin è stato revisionato. Quel pin costituisce l'intero modello di sicurezza: un revisore approva una versione immutabile, e l'agente dovrebbe continuare a eseguire quella versione anche se il repository sottostante cambia in seguito. AIR descrive la falla come un bypass del pinning SHA dei plugin. L'agente esegue il checkout del commit esatto fissato dal marketplace ma non verifica mai che l'albero di lavoro con cui finisce sia quel commit. Parole dei ricercatori: l'agente "esegue il checkout del commit esatto fissato dal marketplace ma non verifica mai di essere arrivato lì, quindi un attaccante che controlla il repository del plugin fa sì che il checkout risolva su codice dannoso mentre il pin sembra ancora rispettato."
È Git a colmare la lacuna. Quando un nome è sia un branch valido sia un oggetto commit, git preferisce il branch e stampa soltanto un avviso di ambiguità. Un attaccante che controlla il repository del plugin crea un branch il cui nome è esattamente lo SHA fissato di 40 caratteri esadecimali, lo punta a codice malevolo e lo rende il branch predefinito del repository. Un clone normale porta quindi quel branch in locale con il nome in forma di SHA, e il successivo checkout si risolve su di esso. Il commit fissato stesso può rimanere intatto, quindi nulla della versione sottoposta a revisione sembra sbagliato. Secondo AIR, devono sussistere due condizioni: il branch con nome SHA deve essere il branch predefinito, perché un branch non predefinito viene recuperato solo come ref di tracciamento remoto e il checkout ricadrebbe sul commit reale; e l'host git deve accettare un nome di branch di 40 caratteri esadecimali. GitHub rifiuta categoricamente questi nomi. Bitbucket e i server git self-hosted no.
Gemini CLI falliva attraverso un percorso diverso. Recuperava il commit fissato, lo registrava nel file FETCH_HEAD del repository e poi eseguiva un checkout di FETCH_HEAD, un checkout che non deve necessariamente leggere quel file. Un repository il cui branch predefinito è esso stesso denominato FETCH_HEAD reindirizza il checkout verso contenuti controllati dall'attaccante e scarta silenziosamente il commit recuperato. Il resoconto di Cybersecurity News sul meccanismo coincide con quello di AIR, inclusa la distinzione tra le due varianti.
Perché nessuno ha dovuto cliccare nulla
Lo stesso checkout viene eseguito di nuovo durante l'aggiornamento automatico in background dei plugin, che è l'impostazione predefinita in Claude Code e Codex. È questo che rende l'attacco zero-click anziché semplicemente silenzioso: quando un marketplace aggiorna un SHA fissato a una nuova versione di routine, ogni agente che ha già il plugin installato riesegue il checkout senza alcun prompt e senza alcuna azione dell'utente. Il punto di AIR è che la vittima non deve installare nulla con leggerezza. Deve solo aver installato un plugin, da un marketplace di cui si fida, che è stato revisionato e fissato esattamente come previsto dal design.
Ci sono due modi per raggiungere quella posizione, e nessuno dei due richiede il controllo del marketplace. Nel primo, un attaccante pubblica un plugin genuinamente benigno che supera la revisione, costruisce una base di installazioni, distribuisce un normale aggiornamento e solo allora crea il ramo con il nome malevolo. Nel secondo, l'attaccante assume il controllo del repository dietro un plugin scritto da qualcun altro e di cui il marketplace si fida già, poi distribuisce la versione malevola a tutti coloro che lo hanno installato.
I numeri dietro quei due percorsi provengono dal lavoro precedente di AIR, non da Plugin4Shell. In una campagna che l'azienda chiama The Story of Skills, afferma che un plugin da essa realizzato si è diffuso a più di 26.000 agenti prima di essere ritirato. In SkillJacking, ha riportato che 925 skill già in uso attivo erano state sottratte ai loro manutentori originali, raggiungendo 134.000 agenti. Il titolo del post di AIR su Plugin4Shell afferma che "milioni di agenti sono colpiti"; la ricerca non fornisce alcun conteggio delle installazioni esposte, e nessuna terza parte ne ha pubblicato uno.
La tempistica e dove sono state applicate le correzioni

AIR afferma di aver trovato la vulnerabilità a maggio 2026 con exploit proof-of-concept funzionanti contro tutti e quattro gli agenti, e di averla divulgata a ciascun fornitore il mese successivo nell'ambito della divulgazione coordinata. Anthropic ha confermato la correzione in Claude Code 2.1.179 il 17 giugno. Google ha detto ad AIR il 4 agosto che non sarebbe stata rilasciata alcuna correzione, perché Gemini CLI verrà ritirato. È stato verificato che Codex 0.146.0 è stato corretto il 12 agosto. Microsoft non ha rilasciato una correzione per GitHub Copilot.
Le versioni patch sono l'unica conferma pubblica che la vulnerabilità fosse reale nei due prodotti che l'hanno risolta. La voce di changelog pubblicata da Anthropic per la 2.1.179 elenca la gestione delle interruzioni di connessione, lo scorrimento in WSL2, correzioni a glob e all'interfaccia della sandbox, e non menziona il pinning, la verifica dei plugin o alcun tipo di correzione di sicurezza. The Hacker News ha fatto la stessa osservazione, secondo il resoconto di The Next Web. Al momento della pubblicazione della ricerca, non era stato assegnato alcun identificatore CVE, e la nota di ricerca della Cloud Security Alliance sulla vulnerabilità ribadisce che nessun identificatore esisteva tre mesi dopo la notifica ai fornitori.
Quattro fornitori, tre risposte diverse

Google è andata oltre il semplice rifiuto di rilasciare una patch. Ha deprecato Gemini CLI, il che significa che le installazioni esistenti restano esposte finché le persone continuano a eseguirle. Il suo consiglio è di migrare ad Antigravity, il più recente ambiente di sviluppo agentico, che secondo AIR non è raggiunto dall'attacco perché non dispone di un pinning SHA dei plugin del marketplace da aggirare.
La posizione di GitHub è ancora diversa. Un portavoce di GitHub ha dichiarato a The Register che la piattaforma non consente agli utenti di creare nomi di branch o tag che assomiglino a SHA di commit e che "questa mitigazione garantisce che la vulnerabilità segnalata non possa essere sfruttata su GitHub". AIR contesta l'ambito di tale mitigazione, non la sua esistenza: i marketplace possono essere ospitati su altre piattaforme come Bitbucket, hanno detto i ricercatori a The Register, e GitHub Copilot supporta ancora i marketplace di tali piattaforme, quindi la variante basata sul nome del branch rimane raggiungibile per gli utenti di Copilot. AIR afferma inoltre che la documentazione di Anthropic elenca Bitbucket e git self-hosted come backend validi per i marketplace; l'attuale documentazione di Anthropic sui marketplace descrive come aggiungere un marketplace da un URL di repository git, non solo da GitHub. Microsoft non ha risposto alla richiesta di commento di The Register, e AIR ha affermato di non aver ricevuto alcuna risposta da Microsoft da quando ha segnalato il problema a giugno, citando il volume di segnalazioni che l'azienda sta gestendo.
Si tratta di un disaccordo sull'ampiezza dell'esposizione, non sull'esistenza del bug. La mitigazione di GitHub è una restrizione a livello di host; la scoperta di AIR è che il controllo deve avvenire all'interno dell'agente, perché il pin viene risolto sul client.
Che cosa è stabilito e che cosa non lo è
• Stabilito: il meccanismo. Il resoconto di AIR fornisce i comandi git esatti, la regola di risoluzione ref-over-object, le due condizioni richieste dal trucco del branch e la variante separata FETCH_HEAD per Gemini CLI. The Register, Help Net Security, Cybersecurity News, InfoWorld e The Next Web lo riportano tutti allo stesso modo.
• Stabilito: due versioni corrette. Anthropic ha confermato Claude Code 2.1.179 il 17 giugno 2026 e Codex 0.146.0 di OpenAI è stato verificato come corretto il 12 agosto 2026, secondo la tempistica di divulgazione di AIR.
• Stabilito: due prodotti non avevano una patch al momento della divulgazione. Google non rilascerà una patch per Gemini CLI e lo sta ritirando; Microsoft non ha rilasciato una correzione per Copilot.
• Non stabilito: riproduzione indipendente. Ogni resoconto pubblicato risale al post sul blog di AIR stesso, e la nota di ricerca della Cloud Security Alliance non descrive esplicitamente una validazione tecnica di terze parti né una riproduzione indipendente dell'exploit. Per questo motivo l'archivio assegna a questo record un livello di confidenza B.
• Non stabilito: quante installazioni siano state effettivamente esposte. "Milioni" è la definizione usata da AIR nel suo titolo, non un dato misurato.
• Non stabilito: se l'aggiornamento di un agente interessato rimuove un plugin già sostituito, oppure impedisce soltanto la successiva sostituzione. Nessuna fonte pubblicata lo risolve.
• Non stabilito:qualsiasi uso nel mondo reale. Nessuna fonte nel fascicolo riporta sfruttamento, sondaggio o infrastrutture dell'attaccante, e l'archivio registra il danno reale come falso. Si tratta di un'assenza di segnalazioni, non di una prova che non sia successo nulla.
Un controllo di terze parti restringe effettivamente il quadro pratico. The Next Web, riassumendo i controlli di The Hacker News, riporta che i plugin nel catalogo community di Anthropic e nei cataloghi predefiniti di Claude Code e Copilot puntano a repository GitHub, e che l'aggiornamento automatico è attivo per impostazione predefinita principalmente per quei marketplace integrati. Poiché GitHub rifiuta nomi di branch con forma di SHA, la variante basata sul nome del branch è più difficile da raggiungere per gli utenti che rimangono sui cataloghi predefiniti. Quel ragionamento non copre la variante FETCH_HEAD di Gemini CLI, che non dipende da come l'host nomina i branch.
Che aspetto deve avere una correzione

La correzione consigliata da AIR è un'unica asserzione: dopo il checkout, risolvere il commit effettivamente presente nell'albero di lavoro e interrompere l'esecuzione a meno che non corrisponda allo SHA fissato. I ricercatori sottolineano che deve controllare l'HEAD risolto anziché il ref richiesto, perché è proprio questa distinzione a consentire alla variante Gemini CLI di passare inosservata, e che deve essere eseguita all'interno dell'agente, perché il pin viene risolto sul client e nessun marketplace può imporre la garanzia che pubblicizza.
Consigli pratici per i team che gestiscono questi agenti, tratti da AIR, Cybersecurity News e dai commenti degli analisti in InfoWorld:
• Aggiorna Claude Code alla versione 2.1.179 o successiva e Codex alla 0.146.0 o successiva. L'aggiornamento è l'unica mitigazione completa laddove è disponibile una patch.
• Disabilita gli aggiornamenti automatici dei plugin su qualsiasi agente che non dispone di una patch. Ciò riduce la vulnerabilità da zero-click a una reinstallazione manuale, il che è una riduzione dell'esposizione anziché una correzione.
• Migrare da Gemini CLI invece di aspettare una patch che, secondo Google, non arriverà.
• Verificare l'inventario dei plugin e limitare, ove possibile, le fonti del marketplace. AIR osserva che un marketplace può attenuare la variante del nome del branch consentendo solo host che rifiutano nomi in formato SHA, di fatto solo GitHub, ma ciò vieta host ufficialmente supportati dagli agenti e non fa nulla per la variante Gemini.
• Considera la workstation come il confine dell'esposizione. I plugin ereditano i permessi dell'agente, quindi un exploit riuscito raggiunge codice sorgente, chiavi SSH, credenziali cloud, token CI/CD e repository interni con l'autorità dello sviluppatore stesso. Pareekh Jain, analista principale di Pareekh Consulting, ha dichiarato a InfoWorld che i team di sicurezza dovrebbero esaminare i log di EDR, git, CI/CD, IAM cloud e autenticazione alla ricerca di processi insoliti, file di plugin inattesi, repository modificati e attività git sospette — e ha aggiunto che queste misure riducono il rischio senza correggere la vulnerabilità di fondo, che egli attribuisce al codice del fornitore. «Le aziende possono introdurre controlli sull'uso dei plugin», ha dichiarato a InfoWorld, «ma non possono correggere una vulnerabilità nel modo in cui l'agente di coding convalida il codice che estrae dal repository».
Perché un bug di pinning è quello che ha contato
Lo SHA pinning era la risposta del settore proprio al tipo di takeover che AIR aveva già dimostrato: se un repository pubblico viene compromesso, l'agente continua a eseguire l'hash verificato invece di scaricare qualunque cosa l'attaccante abbia pubblicato. Plugin4Shell non infrange l'hash. Dimostra che gli agenti risolvevano il pin in un nome di branch che somigliava soltanto all'hash, senza mai confrontare il risultato. Tutto ciò che dipende da quell'assunzione — processi di revisione, allowlist interne, la fiducia che gli sviluppatori ripongono in una versione bloccata — eredita il fallimento.
Ciò che il resoconto non supporta è l'affermazione che qualcosa sia stato sottratto. Si tratta di una vulnerabilità che è stata trovata e, in due casi su quattro, corretta; nessuna fonte in esso riporta un'intrusione, e i prodotti che non hanno rilasciato una patch sono ancora in attesa. La domanda aperta è la meno soddisfacente: per chiunque abbia eseguito un plugin su un agente senza patch, non esiste un modo pubblicato per stabilire se il codice eseguito fosse quello approvato.
