I sistemi di automazione basati sull’Intelligenza Artificiale stanno diventando centrali nello sviluppo software moderno.
Gli agenti integrati nelle piattaforme DevOps non si limitano a generare codice: leggono repository, analizzano issue, commentano pull request e operano su più progetti contemporaneamente. Questa evoluzione aumenta la produttività, ma amplia anche la superficie di attacco.
La ricerca di Noma Security, con la tecnica GitLost, mostra come un semplice ticket pubblico possa indurre un agente a divulgare contenuti presenti in repository privati quando dispone di autorizzazioni troppo estese. Il caso rappresenta uno dei primi esempi concreti di prompt injection nei workflow reali di sviluppo.
Cos’è GitLost
GitLost è una tecnica di attacco che sfrutta una forma di prompt injection indiretta nei GitHub Agentic Workflows. Il bersaglio non è il repository privato, ma l’agente AI incaricato di eseguire attività automatiche.
Un attaccante pubblica una normale Issue in un repository pubblico della stessa organizzazione e inserisce istruzioni progettate per essere interpretate dal modello linguistico. Se il workflow legge automaticamente le issue e dispone di credenziali con accesso in lettura ad altri repository, anche privati, l’agente può eseguire quelle istruzioni senza distinguere tra contenuto informativo e comandi operativi. Il risultato è la lettura di file riservati e la successiva pubblicazione del loro contenuto in uno spazio pubblico, senza violare direttamente account o infrastrutture.
Il punto critico è l’assenza, nei modelli linguistici attuali, di una separazione nativa tra dati attendibili e non attendibili. Tutto il testo elaborato durante l’esecuzione può essere interpretato come istruzione. Nei sistemi tradizionali esiste una distinzione chiara tra input, configurazioni e codice eseguibile; negli agenti AI, invece, l’intero contesto testuale viene usato per soddisfare la richiesta complessiva.
GitHub Agentic Workflows consente di descrivere attività in linguaggio naturale e Markdown, delegando l’analisi a modelli come Copilot, Claude, Gemini o Codex. Quando agli agenti vengono assegnati token con permessi estesi, questi acquisiscono visibilità su repository che un utente esterno non potrebbe consultare. GitLost sfrutta proprio questa combinazione di input controllato dall’esterno e privilegi eccessivi.
Impatti e mitigazioni
La dimostrazione pratica mostra che basta una issue apparentemente legittima per indurre l’agente a recuperare dati da repository pubblici e privati e pubblicarli in chiaro.
Le difese attuali, come sandbox e filtri sui prompt, non sono sempre sufficienti: piccole variazioni linguistiche possono aggirarle. Il problema è quindi architetturale. La mitigazione più efficace resta il principio del minimo privilegio, limitando l’accesso degli agenti solo alle risorse indispensabili.
È inoltre fondamentale trattare ogni contenuto pubblico come non attendibile, ridurre i trigger automatici e introdurre revisioni umane prima della pubblicazione di output generati. Separare workflow pubblici e privati e progettare attentamente le autorizzazioni diventa essenziale per evitare che un semplice messaggio si trasformi in un canale di esfiltrazione dei dati.