La falla Plugin4Shell consente ai repository di scambiare plugin AI agent bloccati

La falla Plugin4Shell consente ai repository di scambiare plugin AI agent bloccati

Air Security afferma che Plugin4Shell consente a un proprietario di repository di scambiare il codice di un plugin bloccato per versione in quattro agenti di codifica AI; solo Claude Code e Codex sono stati corretti.

Una falla di sicurezza che la società Air Security chiama Plugin4Shell consente a chi controlla il repository del codice di un plugin di scambiare il plugin che un agente di codifica AI installa con uno malevolo, anche quando l'agente ha bloccato quel plugin a una specifica versione revisionata. Un agente di codifica AI è un programma che scrive e modifica codice software per un utente con l'aiuto dell'intelligenza artificiale. Air Security ha descritto la falla giovedì e ha affermato che colpisce quattro agenti ampiamente utilizzati: Claude Code di Anthropic, Codex di OpenAI, GitHub Copilot e Gemini CLI di Google.

Questi agenti installano componenti aggiuntivi chiamati plugin, che vengono scaricati da marketplace online. Per mantenere gli utenti al sicuro, un marketplace blocca ogni plugin a una singola versione revisionata tramite il suo commit hash, una lunga stringa di caratteri che identifica un'istantanea esatta del codice. Air Security ha scoperto che gli agenti recuperano quell'istantanea ma non verificano mai che il codice che ottengono corrisponda effettivamente ad essa.

Un branch è una linea di codice denominata all'interno di un repository. Su un host di codice che consente a qualcuno di creare un branch il cui nome è fatto sembrare il commit hash, il proprietario del repository di un plugin può puntare quel nome a codice diverso. L'agente installa quindi il codice diverso pur continuando a segnalare che si trova sulla versione bloccata. Poiché un plugin viene eseguito con lo stesso accesso della persona che utilizza l'agente, il codice scambiato può raggiungere i file di quella persona, le credenziali salvate e i sistemi a cui può accedere, ha affermato Air Security.

Il trucco non funziona ovunque. GitHub non consente nomi di branch o tag che assomigliano a commit hash, secondo la documentazione di GitHub, quindi un plugin installato da un repository GitHub non è esposto a questo trucco del branch. Air Security afferma che il trucco funziona su host che permettono tali nomi, come Bitbucket o il server git di un'azienda, che questi agenti supportano. The Hacker News ha controllato i marketplace forniti con gli agenti il 18 settembre e ha scoperto che ogni plugin nel catalogo della community di Anthropic, e nei cataloghi predefiniti per Claude Code e Copilot, punta a un repository GitHub.

Il Gemini CLI viene attaccato in modo diverso. Invece di un branch a forma di hash, Air Security afferma che il suo installer può essere ingannato da un repository il cui branch principale è chiamato FETCH_HEAD, e la regola di GitHub contro i nomi a forma di hash non blocca chiaramente quel nome. Quindi non è stabilito che installare un plugin Gemini CLI da GitHub eviti la falla, e il Gemini CLI è l'agente che Air Security afferma non verrà corretto.

Ciò che renderebbe l'attacco bisognoso di nessuna azione da parte della vittima è l'aggiornamento automatico in background, che consente a un agente di aggiornare da solo i plugin installati, così un plugin di cui qualcuno si fida già può essere sostituito senza richiesta. Air Security afferma che questo è attivo per impostazione predefinita in Claude Code e Codex. Ma l'aggiornamento automatico è attivo per impostazione predefinita solo per i marketplace integrati degli agenti, ospitati su GitHub, ed è disattivato o opzionale per quelli esterni, secondo la documentazione di Anthropic e GitHub. Quindi un lettore che installa plugin solo dai marketplace predefiniti degli agenti, basati su GitHub, non è esposto alla versione dell'attacco basata sul nome del branch, secondo la stessa spiegazione di Air Security e GitHub su come funziona.

La posizione di ciascun agente, secondo Air Security: Claude Code è corretto nella versione 2.1.179, quindi gli utenti dovrebbero aggiornare alla 2.1.179 o successiva; Codex è corretto nella versione 0.146.0, quindi gli utenti dovrebbero aggiornare alla 0.146.0 o successiva; GitHub Copilot non ha correzione e nessuna patch è disponibile; e Google non correggerà il Gemini CLI, che sta ritirando, con Air Security e Google che indirizzano entrambi gli utenti ad Antigravity, l'agente più recente che Air Security afferma non possa essere raggiunto da questo attacco. Per Copilot, Air Security afferma di aver informato Microsoft a giugno e che nessuna correzione è stata distribuita. Copilot può installare plugin da host diversi da GitHub, ed è qui che Air Security afferma che risiede il rischio. Google ha smesso di fornire il Gemini CLI per i consumatori a giugno e ha indirizzato gli utenti ad Antigravity. Google ha anche affermato che l'accesso enterprise al Gemini CLI continuerà con aggiornamenti, e non è chiaro se una correzione per questa falla sia tra questi.

Air Security afferma di aver costruito un attacco di test funzionante contro tutti e quattro gli agenti a maggio e di aver informato i fornitori a giugno. Al 18 settembre, nessun identificatore CVE era stato assegnato e nessuno dei quattro fornitori aveva pubblicato un avviso di sicurezza per la falla, secondo controlli di The Hacker News, e non c'è segno che sia stata utilizzata in un attacco reale. The Hacker News ha riprodotto il comportamento Git sottostante in un test locale, e la correzione pubblica di OpenAI descrive lo stesso bug: Git "può interpretare un SHA di commit richiesto come nome di branch", ha scritto l'azienda, il che può far sì che una fonte di plugin "materializzi un commit diverso da quello che ha bloccato". Tale modifica è stata distribuita in Codex 0.146.0. Le note di rilascio di Anthropic per la 2.1.179 non menzionano la correzione, e la dichiarazione che è corretta nella versione è di Air Security.

Poiché ogni agente controlla il blocco sulla macchina dell'utente, non sul marketplace, nessun marketplace può risolvere questo per gli utenti, e la correzione deve essere distribuita nell'agente stesso. Una cosa che le fonti non dicono è se l'aggiornamento di un agente interessato rimuova un plugin già scambiato, o solo impedisca scambi futuri. Chiunque abbia eseguito uno di questi agenti prima dell'aggiornamento non può quindi sapere dal registro pubblico se la pulizia sia sufficiente.

Questa non è la prima volta che gli stessi ricercatori esaminano i componenti aggiuntivi degli agenti. A giugno, The Hacker News ha trattato il test di Air Security in cui una falsa skill ha superato i scanner di sicurezza e ha raggiunto circa 26.000 agenti cambiando un link esterno dopo che la revisione lo aveva autorizzato. Plugin4Shell sposta quell'idea da un link scambiato a un plugin scambiato dietro un blocco di versione.

Per i team che consentono agli sviluppatori di eseguire agenti di codifica su macchine di lavoro, la domanda pratica è da dove proviene il codice dei plugin e chi lo revisiona, che è esattamente il tipo di lavoro coperto da AEU-I, il nostro servizio di consulenza IT e infrastruttura security-first, dove i team possono ottenere aiuto per rivedere come sono configurati gli strumenti per sviluppatori e cosa possono raggiungere.

Fino a quando la situazione non sarà più chiara, i passi utili sono limitati ma reali: aggiornare Claude Code alla 2.1.179 o successiva e Codex alla 0.146.0 o successiva, mantenere le installazioni dei plugin all'interno del marketplace integrato dell'agente, ed evitare plugin offerti da altri host di codice. Gli utenti di Copilot non hanno patch da installare, e gli utenti di Gemini CLI vengono spostati ad Antigravity da Google, con Air Security che afferma che quell'attacco non può raggiungerlo.

Come Proteggerti

  1. Aggiorna Claude Code alla versione 2.1.179 o successiva, e Codex alla versione 0.146.0 o successiva, se tu o il tuo team usate questi strumenti.
  2. Installa plugin solo dal marketplace integrato nell'agente, che questi agenti ospitano su GitHub, ed evita plugin offerti da altri host di codice.
  3. Disattiva gli aggiornamenti automatici dei plugin per qualsiasi marketplace non integrato nell'agente, così nulla viene sostituito senza chiedertelo prima.
  4. Se non hai bisogno di plugin da Bitbucket o dal server di codice della tua azienda, chiedi al tuo team IT di disattivare quell'opzione.
  5. Se usi Gemini CLI, considera di passare al più recente agente Antigravity di Google, che Air Security afferma non possa essere raggiunto da questo attacco.
  6. Rivedi l'elenco dei plugin installati dal tuo agente e rimuovi quelli che non riconosci.

I Termini Spiegati

  • plugin Un componente aggiuntivo che dà a un programma abilità extra, in questo caso scaricato e installato da un agente di codifica AI.
  • commit hash Una lunga stringa di lettere e numeri che identifica una versione salvata esatta di un pezzo di codice.
  • branch Una copia denominata del codice all'interno dello spazio di archiviazione di un progetto, dove le modifiche possono essere fatte separatamente dalla copia principale.
  • repository Uno spazio di archiviazione online dove viene conservato il codice di un progetto e vengono tracciate le sue modifiche.
  • AI coding agent Un programma che scrive e modifica codice software per un utente con l'aiuto dell'intelligenza artificiale.
  • auto-update Un'impostazione che consente a un programma di scaricare e installare da solo versioni più recenti dei suoi componenti aggiuntivi, senza chiedere all'utente.
  • CVE Common Vulnerabilities and Exposures, un sistema di numerazione pubblico usato per etichettare e tracciare falle di sicurezza note.

Servizi AEU correlati

  • AEU Panel Pannello di controllo per l'hosting gestito