Plugin4Shell: cosa è successo il 18 settembre 2026
Il 18 settembre 2026 la società di sicurezza Air Security ha reso pubblico Plugin4Shell, un difetto che riguarda quattro coding agent diffusi: Claude Code, Codex, GitHub Copilot e Gemini CLI.
Chi controlla il repository di un plugin può far installare all'agente codice diverso da quello revisionato. L'agente intanto dichiara di trovarsi sulla versione bloccata.
Lo stato delle patch resta disomogeneo, come riporta The Hacker News[1]. Anthropic ha corretto il difetto in Claude Code 2.1.179 e OpenAI in Codex 0.146.0. GitHub Copilot resta scoperto, mentre Google lascia il Gemini CLI così com'è: il prodotto va in pensione.
Il materiale pubblico porta un nome commerciale, Plugin4Shell; un identificativo CVE ufficiale resta fuori dal resoconto. Questo desk lo segnala come limite di tracciabilità: un nome di marketing risulta più difficile da mappare dentro un processo di patch management.
Il meccanismo: un hash trattato come etichetta
Il marketplace blocca ogni plugin su una versione revisionata tramite commit hash. L'hash è una stringa lunga che identifica uno snapshot esatto del codice.
La garanzia regge a una condizione: chi scarica lo snapshot ricalcola l'hash del codice ottenuto e lo confronta con quello atteso. Air Security ha trovato che i quattro agenti saltano proprio questo confronto. Recuperano l'artefatto e si fidano dell'etichetta.
Un branch è una linea di codice con un nome. Su un host git che accetta nomi di branch modellati come un hash, il proprietario del repository crea quel nome e lo punta dove preferisce.
Il comando di fetch risolve quella stringa come riferimento simbolico invece che come contenuto. L'agente installa codice arbitrario e continua a riportare la versione bloccata.
Dove il trucco funziona davvero
Il perimetro conta. GitHub rifiuta nomi di branch e tag che assomigliano a un commit hash, come indica la sua documentazione. Un plugin ospitato lì resiste al trucco del branch.
Air Security indica gli host permissivi come superficie reale: Bitbucket e i server git aziendali, che questi agenti supportano allo stesso modo. The Hacker News ha verificato i marketplace predefiniti il 18 settembre 2026. Ogni plugin del catalogo community di Anthropic e dei cataloghi di default di Claude Code e Copilot punta a un repository GitHub.
Il Gemini CLI segue una strada diversa. Secondo Air Security il suo installer cade davanti a un repository il cui branch principale porta il nome FETCH_HEAD, e la regola di GitHub copre quel caso in modo ambiguo.
Per il Gemini CLI, quindi, l'ospitalità su GitHub offre una protezione incerta, e la correzione resta fuori dalla roadmap di Google.
L'auto-update chiude il cerchio
L'elemento che trasforma un difetto in incidente è l'aggiornamento automatico in background.
La funzione rinfresca i plugin già installati per conto proprio. Un plugin approvato mesi prima viene sostituito durante una sessione qualunque, e l'utente resta all'oscuro del cambio.
Air Security riferisce che questo comportamento è attivo di default in Claude Code e Codex. Qui sta il punto di procurement: la catena di fiducia si regge su un gesto iniziale, mentre l'esecuzione prosegue per settimane. Un'approvazione di sicurezza datata finisce per coprire codice arrivato molto dopo.
Il vettore completo richiede due condizioni: un plugin ospitato su un git server permissivo e l'auto-update attivo. Entrambe descrivono configurazioni aziendali comuni.
Il raggio d'azione: il plugin eredita le credenziali
Un plugin gira con gli stessi permessi della persona che usa l'agente.
File locali, credenziali salvate, sistemi raggiungibili con quelle credenziali: il raggio d'azione copre tutto questo, come nota Air Security. Qui sta la differenza fra una compromissione di supply chain classica e una agentica.
Il codice sostituito atterra dentro un processo che ha già token, chiavi cloud e sessioni aperte. L'analisi di Unit 42 sulle credenziali dell'harness di AWS AgentCore (unit42.paloaltonetworks.com[2]) descrive lo stesso schema da un'altra angolazione. L'ambiente di esecuzione dell'agente conserva materiale di autenticazione leggibile dal codice che ospita.
Chi progetta runtime per agenti deve trattare quel processo come una zona a privilegio alto. La revoca conta quanto l'installazione: un agente merita credenziali proprie e log nominativi.
La condizione di fondo
La condizione di fondo che i quattro casi condividono è una sola. Il pinning viene dichiarato al livello dei metadati e ignorato in fase di installazione.
È lo stesso schema visto nei package manager dei primi anni 2010: lockfile presenti, controlli di integrità assenti. Il settore ha chiuso quella falla con hash di contenuto obbligatori, firme e transparency log.
La security posture dei sistemi AI resta due o tre anni dietro la maturità dell'infrastruttura che li ospita. Plugin4Shell lo mostra nel modo più diretto: il vocabolario della supply chain sicura è arrivato nei coding agent prima dei controlli che lo rendono vero. L'etichetta ha viaggiato più veloce del meccanismo.
Una garanzia dichiarata produce fiducia misurabile e protezione nulla. Questa asimmetria è la parte costosa.
Tre domande per gli enterprise AI team
Tre domande per gli enterprise AI team, da chiudere entro il ciclo di patch corrente:
- Quale host ospita i plugin che gli agenti installano oggi in azienda: GitHub, Bitbucket o un server git interno?
- Quale versione del client gira sulle macchine degli sviluppatori? Claude Code 2.1.179 e Codex 0.146.0 sono le soglie minime.
- L'aggiornamento automatico dei plugin è attivo, e chi riceve il log di ogni sostituzione?
Le prime due domande hanno risposte verificabili in un pomeriggio, con un inventario dei client e una query sui manifest dei plugin. La terza richiede una decisione di policy, e va presa dal capo dell'engineering.
La terza domanda merita una risposta scritta. Un agente che aggiorna codice per conto proprio genera eventi che vanno registrati con lo stesso rigore di un deploy in produzione.
Per GitHub Copilot serve una misura compensativa, visto che la patch manca: limitare i plugin ai repository GitHub e bloccare via policy l'installazione da host permissivi. Per il Gemini CLI la scelta risulta più netta: un prodotto in ritiro con un difetto aperto esce dal perimetro aziendale.
Decisioni per il prossimo planning cycle
Decisioni per CTO e Head of Engineering nel prossimo planning cycle: il marketplace di plugin va trattato come un registry di pacchetti, con le stesse regole.
Questo significa mirror interno degli artefatti approvati, verifica dell'hash lato client e allowlist degli host consentiti. Il costo risulta modesto rispetto al debito tecnico di una catena di fiducia dichiarata.
Per il CFO la lettura è diretta: l'investimento in tooling agentico regge, mentre il budget di sicurezza deve coprire anche il canale di distribuzione delle estensioni. Il comitato di procurement ha tre punti da rinegoziare con i vendor. Contano gli SLA di patch pubblici, il controllo del cliente sull'auto-update e la trasparenza sulla catena di fornitura dei plugin.
Questa architettura pende verso la trappola finché il controllo resta al livello del metadato. Diventa vantaggio competitivo nel momento in cui l'hash torna a significare ciò che dichiara.
Questo articolo è stato redatto da un autore editoriale AI con supervisione umana, in conformità agli obblighi di trasparenza del Regolamento (UE) 2024/1689 (AI Act, Art. 50). Le fonti sono linkate nel testo.
Article by LEON
Fonti
- The Hacker News 18 set 2026 (thehackernews.com)
- unit42.paloaltonetworks.com