Newsletter
Notizie

Plugin4Shell, la falla che apriva i quattro agenti AI più usati per programmare

Air Security ha pubblicato Plugin4Shell: il blocco della versione dei plugin non veniva verificato, e Claude Code, Codex, Copilot e Gemini CLI potevano eseguire codice ostile senza un clic.

Il 17 settembre il laboratorio di ricerca della società di sicurezza Air ha pubblicato i dettagli di una vulnerabilità che ha chiamato Plugin4Shell. Riguarda quattro degli strumenti più usati da chi programma con l’aiuto di un modello linguistico: Claude Code di Anthropic, Codex di OpenAI, GitHub Copilot di Microsoft e Gemini CLI di Google. Il difetto permette di far eseguire codice sul computer di chi sviluppa senza che questi faccia niente: nessun clic, nessuna finestra di conferma, nessun segnale.

Il lucchetto che non teneva

Questi agenti si allargano con i plugin, piccole estensioni distribuite attraverso marketplace pubblici. Per evitare che un plugin già approvato cambi contenuto dopo la revisione, il settore usa una tecnica chiamata SHA pinning: il marketplace esamina il codice in un preciso momento della sua storia, annota l’identificativo di quella versione (una stringa di quaranta caratteri) e da lì in avanti installa sempre e solo quella.

I ricercatori di Air hanno verificato che tutti e quattro gli agenti chiedono la versione bloccata ma non controllano mai di averla davvero ottenuta. Il blocco viene scritto, la verifica manca.

Il ramo che si chiama come il commit

Chi controlla il deposito del plugin può creare un ramo di sviluppo con lo stesso nome dell’identificativo approvato. Git, davanti a due oggetti omonimi, dà la precedenza al ramo. Il marketplace continua a mostrare la versione revisionata, l’agente scarica invece il contenuto del ramo, che può essere qualsiasi cosa. Su Gemini CLI la variante è un’altra ma l’effetto coincide: basta chiamare FETCH_HEAD il ramo predefinito del deposito.

Perché non serve nemmeno un clic

La parte che trasforma un problema serio in un problema grave è l’aggiornamento automatico. In Claude Code e in Codex i plugin installati si aggiornano da soli in sottofondo, ed è il comportamento predefinito. La sequenza descritta da Air è questa: l’attaccante pubblica un plugin innocuo e supera la revisione; il plugin viene adottato; l’attaccante propone un aggiornamento, anch’esso innocuo, e il marketplace sposta il blocco sulla nuova versione; a quel punto crea un ramo con quel nome, lo riempie di codice malevolo e lo rende predefinito. Tutte le installazioni già esistenti si aggiornano da sole alla versione ostile.

La catena di attacco di Plugin4Shell in cinque passaggi
Screenshot: Air Security, dal blog ufficiale

Chi subisce l’attacco non deve aver fatto nulla di avventato: gli basta avere installato, da un marketplace di cui si fida, un plugin revisionato e bloccato esattamente come prevede il modello di sicurezza. Chi entra ottiene i permessi di chi usa l’agente: codice sorgente, chiavi delle API, credenziali della catena di compilazione, ambienti cloud.

Chi ha corretto e chi no

Air dice di aver individuato il problema a maggio e di averlo comunicato ai quattro fornitori a giugno. Anthropic ha corretto Claude Code nella versione 2.1.179, OpenAI ha corretto Codex nella 0.146.0. GitHub Copilot, di Microsoft, al momento della pubblicazione non aveva ricevuto alcuna correzione. Google ad agosto ha annunciato la dismissione di Gemini CLI indirizzando chi lo usava verso Antigravity, e una correzione non è arrivata. Non risulta assegnato un codice CVE.

Va detto che Air vende prodotti di sicurezza per questo stesso ecosistema, e nel proprio articolo precisa che i clienti dei suoi strumenti non erano esposti: è la versione di chi ha trovato la falla.

Una correzione che il marketplace non può dare

Il punto più scomodo è che il controllo avviene dentro l’agente, quindi solo un aggiornamento dell’agente ripristina la garanzia. Un marketplace, al massimo, può accettare soltanto depositi ospitati su piattaforme che rifiutano nomi di ramo in forma di identificativo, in pratica il solo GitHub: escluderebbe però servizi che gli agenti supportano ufficialmente, e non risolverebbe la variante di Gemini.

Chi usa uno di questi strumenti ha una mossa utile e immediata, cioè portare l’agente all’ultima versione disponibile, perché una versione vecchia resta vulnerabile anche quando il marketplace è pulito.

Resta l’osservazione che i ricercatori mettono in cima al loro lavoro: non è la svista di un singolo prodotto, è lo stesso errore di progettazione ripetuto identico da quattro aziende diverse, nello strato che distribuisce le estensioni. A inizio settembre avevamo raccontato di quasi diciottomila estensioni per agenti che parlano con fonti non verificate, e del caso in cui bastava una riga in un file Git per far eseguire comandi. La superficie di attacco degli assistenti di programmazione si sta rivelando un capitolo per conto suo.

Immagini: screenshot dal blog ufficiale di Air Security.

Categorie Notizie
Giulia Ferrero

Giulia Ferrero

Redazione · Notizie

Ti è stato utile questo articolo?

Ricevi ogni venerdì mattina le storie e i tool che contano. Gratis, niente spam.