Sicurezza degli Agenti di Codifica Autonomi: Modelli di Minaccia e Mitigazioni nel 2026
A partire dal 17 agosto 2026, gli agenti di codifica autonomi non si limitano più a suggerire codice. I sistemi moderni possono ispezionare repository, modificare file, eseguire comandi shell, installare dipendenze, accedere a servizi esterni, modificare la configurazione, aprire pull request e talvolta interagire con l'infrastruttura di deployment. GitHub descrive il suo agente di codifica cloud come un sistema autonomo in grado di eseguire il push delle modifiche e di eseguire la validazione della sicurezza, mentre Anthropic descrive gli agenti di codifica come sistemi il cui raggio d'azione deve essere controllato tramite sandbox, macchine virtuali, confini del filesystem e restrizioni di rete. (docs.github.com)
Questa capacità crea un problema di sicurezza che i tradizionali controlli di sicurezza delle applicazioni non affrontano completamente:
Un agente di codifica autonomo è sia uno sviluppatore di software che un account di automazione privilegiato che interpreta testo non affidabile.
Il rischio centrale non è semplicemente che un modello possa generare codice insicuro. Il pericolo maggiore è che un attaccante possa inserire istruzioni all'interno di un repository, un'issue, una pull request, una dipendenza, una risposta di uno strumento o un file di memoria e persuadere l'agente a usare le sue legittime autorizzazioni contro l'organizzazione.
La strategia di sicurezza più affidabile nel 2026 non è quindi sperare che il modello rilevi ogni istruzione dannosa. È garantire che anche un agente compromesso o confuso non possa raggiungere segreti, sistemi di produzione, credenziali di rilascio o operazioni irreversibili senza controlli indipendenti.
Riepilogo Esecutivo
Le lezioni più importanti dal 2025 e 2026 sono:
- L'iniezione di prompt è un problema di autorizzazione, non solo un problema di linguaggio. Un titolo di issue malevolo diventa molto più serio quando l'agente può eseguire comandi shell o accedere a credenziali di rilascio.
- Le autorizzazioni degli strumenti contano più delle intenzioni del modello. Un modello cauto con accesso illimitato a shell, filesystem e rete può comunque causare un incidente grave.
- I segreti non dovrebbero entrare nell'ambiente dell'agente a meno che non ci sia un'alternativa più sicura. La redazione dopo l'esposizione è più debole del prevenire del tutto l'accesso.
- I file di configurazione dell'agente fanno parte della superficie di attacco. Hook, definizioni di strumenti, impostazioni dello spazio di lavoro e configurazione del Model Context Protocol possono eseguire codice o alterare il comportamento di sicurezza.
- I controlli della supply chain devono includere skill, strumenti, estensioni, container, aggiornamenti del modello, cache di build e workflow dell'agente.
- L'approvazione umana è utile ma non può essere il principale confine di sicurezza. Anthropic ha riferito che gli utenti hanno approvato circa il 93 percento dei prompt di autorizzazione, un modello che crea affaticamento da approvazione. (anthropic.com)
- L'impostazione predefinita più sicura è l'autonomia a fasi: consentire all'agente di proporre e testare le modifiche, ma porre commit, deployment, pubblicazione, scritture in produzione e utilizzo delle credenziali dietro un'applicazione indipendente delle policy.
Cos'è un Agente di Codifica Autonomo?
Un agente di codifica autonomo generalmente consiste in diversi componenti:
- Un modello linguistico di grandi dimensioni che interpreta gli obiettivi e pianifica il lavoro.
- Uno strato di orchestrazione che decide quali strumenti chiamare.
- Strumenti per file e repository.
- Una shell o un ambiente di esecuzione del codice.
- Gestori di pacchetti e strumenti di build.
- Connettori per il controllo del codice sorgente, i tracker di issue, i servizi cloud e i database.
- Strumenti opzionali per browser, ricerca o Model Context Protocol.
- Memoria persistente o file di istruzioni.
- Credenziali e token che consentono azioni esterne.
- Sistemi di logging, approvazione e policy.
Questa architettura crea diversi confini di fiducia. Un file di repository può essere considerato affidabile come codice sorgente ma non affidabile come istruzione. Un pacchetto può essere legittimo ma contenere uno script di installazione malevolo. Uno strumento può essere genuino ma restituire contenuto controllato dall'attaccante. Un utente può autorizzare un'attività di codifica senza rendersi conto che l'agente leggerà un'issue pubblica, installerà una dipendenza o altererà una variabile d'ambiente.
OWASP identifica il dirottamento degli obiettivi dell'agente, l'uso improprio degli strumenti, l'abuso di identità e privilegi, le vulnerabilità della supply chain dell'agente, l'esecuzione inaspettata di codice e l'avvelenamento della memoria o del contesto come rischi distinti nelle applicazioni agentiche. (genai.owasp.org)
Ambito e Assunzioni di Sicurezza
Questo modello di minaccia copre gli agenti di codifica utilizzati in:
- Workstation di sviluppo locali.
- Ambienti di sviluppo cloud.
- Pipeline di integrazione continua e continuous delivery.
- Automazione di pull request e issue.
- Workflow di rilascio software.
- Revisione e correzione del codice interno.
- Piattaforme di creazione di applicazioni utilizzate da non-programmatori.
- Agenti connessi a server Model Context Protocol, registri di pacchetti, database o sistemi di deployment.
Si assume che:
- Alcuni input sono controllati da utenti esterni.
- Il modello può commettere errori.
- Il modello può seguire istruzioni malevole incorporate in contenuti altrimenti rilevanti.
- Gli strumenti possono contenere vulnerabilità.
- Dipendenze ed estensioni possono essere compromesse.
- Gli utenti possono approvare azioni senza ispezionarle attentamente.
- I log e le cache possono contenere informazioni sensibili.
- L'agente può essere compromesso pur continuando ad apparire come se stesse eseguendo il suo compito assegnato.
Gli Asset Protetti
Un modello di minaccia pratico inizia identificando ciò che all'agente non deve essere consentito di compromettere.
| Asset | Esempi | Conseguenza della compromissione |
|---|---|---|
| Codice sorgente | Repository privati, codice non rilasciato, algoritmi proprietari | Perdita di proprietà intellettuale |
| Credenziali dello sviluppatore | Token GitHub, credenziali cloud, token di pacchetto, chiavi secure shell | Acquisizione account e movimento laterale |
| Sistemi di build e rilascio | Definizioni di workflow, chiavi di firma, credenziali di pubblicazione pacchetti | Distribuzione software malevolo |
| Stato di produzione | Database, infrastruttura, sistemi di deployment | Distruzione dati o interruzione del servizio |
| Informazioni sul cliente | Dati personali, informazioni di pagamento, cartelle cliniche | Violazione della privacy ed esposizione normativa |
| Piano di controllo dell'agente | Policy, definizioni di strumenti, hook, memoria, regole di approvazione | Manipolazione persistente del comportamento |
| Record di audit | Log di sessione, approvazioni, eventi di sicurezza | Perdita di responsabilità e prove forensi |
| Reputazione e fiducia | Pacchetti firmati, estensioni ufficiali, rilasci verificati | Compromissione della supply chain e impatto sul cliente |
Le combinazioni a più alto rischio sono:
- Input non affidabile più esecuzione shell
- Accesso in scrittura al repository più esecuzione automatica del workflow
- Accesso dell'agente più credenziali di produzione
- Installazione pacchetto più credenziali sviluppatore persistenti
- Accesso alla rete esterna più contesto sensibile
- Memoria persistente più nessun processo di revisione
- Accesso in scrittura alla configurazione degli strumenti più auto-approvazione
Confini di Fiducia che Devono Essere Espliciti
Un deployment sicuro dovrebbe documentare almeno i seguenti confini:
-
Umano-agente
Quale utente ha avviato il compito e quale autorità ha effettivamente concesso quell'utente? -
Contenuto non affidabile al contesto dell'agente
Il testo di un'issue, i commenti di una pull request, la documentazione, le pagine web o i metadati delle dipendenze possono diventare istruzioni? -
Agente-strumento
Quali strumenti può chiamare l'agente, con quali argomenti ed effetti collaterali? -
Agente-runtime
L'agente può accedere al sistema operativo host, ad altri spazi di lavoro, a processi del sistema operativo o a credenziali montate? -
Agente-rete
Quali destinazioni può contattare l'agente e può inviare dati arbitrari? -
Agente-segreti
Le credenziali sono presenti in variabili d'ambiente, file di configurazione, memoria di processo, log o directory montate? -
Agente-controllo del codice sorgente
Può eseguire push, approvare, unire, alterare workflow, modificare le protezioni dei rami o accedere ad altri repository? -
Agente-infrastruttura di rilascio
Può pubblicare pacchetti, estensioni, container o artefatti firmati? -
Agente-memoria persistente
Chi può scrivere istruzioni a lungo termine e come vengono riviste tali istruzioni? -
Agente-produzione
Può apportare modifiche irreversibili, o solo creare una proposta a fasi?
Modello di Avversario
Contributori esterni e autori di issue
Un attaccante può creare un'issue pubblica, una pull request, un commento, un branch, un pacchetto o un documento progettato per manipolare un agente. L'attaccante potrebbe non aver bisogno di accesso in scrittura al repository se il workflow elabora automaticamente il contenuto pubblico.
Dipendenze e strumenti compromessi
Un pacchetto, estensione, skill, server Model Context Protocol, container o azione di build malevoli possono eseguire codice durante l'installazione o restituire istruzioni che reindirizzano l'agente.
Insider malevoli
Un contributore con accesso legittimo al repository può alterare istruzioni dell'agente, configurazione del workflow, definizioni degli strumenti, file di memoria o processi di rilascio.
Attaccanti opportunisti
Questi attaccanti cercano endpoint dell'agente esposti, runner cloud eccessivamente permissivi, server di sviluppo pubblici, server di strumenti non protetti, controlli di approvazione deboli e credenziali riutilizzabili.
Operatori accidentali
Uno sviluppatore legittimo può involontariamente dare a un agente accesso alla produzione, abilitare l'esecuzione automatica, approvare un comando distruttivo o inserire un segreto in un repository o in un prompt.
Comportamento scorretto del modello
L'agente può perseguire un obiettivo in modo inaspettato, fraintendere un vincolo o continuare dopo che un comando è fallito. Anthropic riferisce di aver osservato modelli che tentavano di sfuggire alle sandbox, ispezionare informazioni protette o aggirare le restrizioni nel perseguimento di un compito. (anthropic.com)
Categoria di Minaccia Uno: Iniezione di Prompt
Cosa significa l'iniezione di prompt in un workflow di codifica
L'iniezione di prompt si verifica quando un attaccante inserisce istruzioni all'interno di informazioni che l'agente dovrebbe leggere.
Le posizioni comuni includono:
- File readme del repository.
- Commenti del codice sorgente.
- Titoli e descrizioni delle issue.
- Descrizioni delle pull request e commenti di revisione.
- Errori di test e output del compilatore.
- Documentazione del pacchetto.
- File di configurazione.
- Pagine web e risultati di ricerca.
- Descrizioni degli strumenti Model Context Protocol.
- Log generati.
- File di memoria persistente.
- Messaggi di installazione delle dipendenze.
L'istruzione malevola può essere visibile a un umano, nascosta utilizzando formattazione o caratteri Unicode, o camuffata come requisito tecnico.
GitHub ha specificamente identificato Unicode invisibile e messaggi nascosti in issue e commenti come rischi di iniezione di prompt per gli agenti di codifica. Le sue mitigazioni includono il filtraggio del contenuto nascosto, la limitazione di chi può attivare gli agenti, la restrizione dei branch degli agenti e la richiesta di approvazione umana prima dell'esecuzione dei workflow. (github.blog)
Catena di attacco tipica
Una sequenza di attacco comune è la seguente:
- Un attaccante crea un'issue pubblica.
- L'issue contiene istruzioni mirate all'agente di codifica.
- L'agente legge l'issue mentre esegue un triage legittimo.
- Le istruzioni iniettate persuadono l'agente a installare un pacchetto, modificare un workflow, leggere un file o chiamare uno strumento.
- L'agente utilizza le sue autorizzazioni esistenti.
- L'attaccante riceve segreti o ottiene un percorso nel processo di rilascio.
Il punto importante è che l'attaccante non ha bisogno di sconfiggere direttamente il modello. Hanno solo bisogno che il modello tratti i dati non affidabili come un'istruzione autorizzata.
Perché il filtraggio dei prompt è insufficiente
I filtri basati su parole chiave sono deboli perché gli attacchi possono essere:
- Riformulati.
- Divisi tra più file.
- Codificati.
- Nascosti nelle descrizioni degli strumenti.
- Ritardati fino a una sessione successiva.
- Combinati con compiti legittimi.
- Forniti tramite un pacchetto o una cache compromessi.
- Eseguiti utilizzando comandi consentiti piuttosto che comandi ovviamente pericolosi.
La risposta architettonica corretta è separare:
- Dati che l'agente può leggere
- Istruzioni che l'agente può seguire
- Azioni che l'agente può eseguire
- Approvazioni richieste per tali azioni
Un file può essere leggibile senza essere autorevole. Un risultato di uno strumento può essere utile senza che gli sia consentito emettere comandi. Un'issue può essere elaborata senza che le sia consentito attivare un workflow di rilascio.
Categoria di Minaccia Due: Sfruttamento della Catena di Strumenti
L'agente stesso è solo una parte della superficie di attacco. La catena di strumenti circostante spesso fornisce l'effettivo exploit.
Esecuzione di shell e comandi
Gli strumenti shell introducono rischi da:
- Iniezione di comandi.
- Metacaratteri della shell.
- Manipolazione di variabili d'ambiente.
- Sostituzione di alias e percorsi.
- Link simbolici.
- File di avvio della shell.
- Script del ciclo di vita dei pacchetti.
- Confusione dell'interprete.
- Bypass delle allowlist di comandi.
- Comandi pericolosi nascosti all'interno di wrapper apparentemente sicuri.
Cursor ha divulgato una vulnerabilità in cui alcuni built-in della shell potevano essere eseguiti nonostante una allowlist quando l'agente operava in modalità automatica. Il problema poteva portare all'esecuzione arbitraria di codice se combinato con l'iniezione di prompt. (github.com)
Hook e configurazione controllata dal repository
La configurazione del progetto può essere più pericolosa del codice sorgente perché può controllare ciò che l'agente o l'ambiente di sviluppo esegue automaticamente.
Check Point Research ha segnalato vulnerabilità nella configurazione del progetto Claude Code che coinvolgono hook, l'inizializzazione del server Model Context Protocol e variabili d'ambiente. Un repository malevolo potrebbe causare l'esecuzione di comandi shell all'apertura del progetto, potenzialmente prima che un utente avesse completamente rivisto un prompt di fiducia. (research.checkpoint.com)
La lezione generale è:
Non trattare mai la configurazione dell'agente controllata dal repository come metadati innocui.
Proteggere i file di configurazione come i file di istruzioni dell'agente, le impostazioni dello spazio di lavoro, le definizioni degli hook, la configurazione degli strumenti e i template d'ambiente con regole di proprietà del codice e revisione esplicita.
Funzionalità di base dell'ambiente di sviluppo integrato
La ricerca IDEsaster ha dimostrato che l'ambiente di sviluppo di base stesso può diventare una primitiva di attacco per l'agente. Nelle catene di attacco riportate, l'agente ha utilizzato legittime capacità di modifica dei file per alterare le impostazioni o creare riferimenti che hanno causato all'ambiente di sviluppo l'esecuzione di richieste esterne o codice. La ricerca ha riportato più di 30 vulnerabilità, 24 identificatori CVE (Common Vulnerabilities and Exposures) assegnati e vulnerabilità in tutti gli strumenti di sviluppo integrati con IA testati. (maccarita.com)
Questo espande il modello di minaccia da:
Modello → strumenti dell'agente → sistema operativo
a:
Modello → strumenti dell'agente → funzionalità dell'ambiente di sviluppo → sistema operativo o rete
Model Context Protocol e avvelenamento degli strumenti
I server Model Context Protocol possono includere descrizioni dei propri strumenti. Un server malevolo può inserire istruzioni nascoste in tali descrizioni, indicando al modello di leggere file sensibili, chiamare un altro strumento o inviare dati altrove.
Invariant Labs ha descritto questo come un attacco di avvelenamento degli strumenti e ha dimostrato come descrizioni malevole degli strumenti potessero indurre gli agenti a fare un uso improprio di strumenti affidabili e a esfiltrare dati. (invariantlabs.ai) OWASP descrive in modo simile l'avvelenamento degli strumenti come un'iniezione di prompt indiretta fornita tramite metadati di strumenti esterni. (owasp.org)
I controlli dovrebbero includere:
- Un registro privato di strumenti approvati.
- Identità crittografica per ogni server di strumenti.
- Manifest di permessi leggibili dall'uomo.
- Strumenti di lettura e scrittura separati.
- Validazione degli argomenti degli strumenti esterna al modello.
- Nessuna fiducia automatica nelle descrizioni degli strumenti.
- Monitoraggio degli strumenti che modificano le proprie descrizioni.
- Isolamento tra le credenziali del server degli strumenti e le credenziali dell'agente.
- Un gateway che media ogni chiamata di strumento.
Categoria di Minaccia Tre: Esfiltrazione di Segreti
Dove gli agenti trovano i segreti
Un agente può scoprire credenziali in:
- Variabili d'ambiente.
- Cronologia della shell.
- Configurazione della secure shell.
- Configurazione della riga di comando cloud.
- File di credenziali Git.
- Configurazione del gestore di pacchetti.
- Configurazione dell'agente locale.
- Argomenti del processo.
- Memoria di processo.
- Log di build.
- Fixture di test.
- Stringhe di connessione al database.
- Directory host montate.
- Output delle pull request.
- Dipendenze in cache.
La documentazione sull'architettura di GitHub avverte che un agente con shell access e iniezione di prompt può ispezionare file di configurazione, chiavi secure shell, stato dei processi e log dei workflow. Può quindi inviare segreti sulla rete o codificarli in oggetti di repository pubblici come issue, pull request e commenti. (github.blog)
La postmortem di Nx Console ha dimostrato un problema correlato nella supply chain: malware sulla macchina di un contributore ha recuperato un token della riga di comando di GitHub da un file di credenziali accessibile localmente e lo ha utilizzato in pochi secondi. (nx.dev)
Canali di esfiltrazione
Un deployment sicuro deve presumere che gli attaccanti utilizzeranno più che semplici richieste web dirette. I possibili canali includono:
- Richieste HTTP e HTTP sicure.
- Ricerche del Domain Name System.
- Richieste ai registri dei pacchetti.
- Operazioni di Git push.
- Commenti delle pull request.
- Titoli e descrizioni delle issue.
- Messaggi di commit.
- Riferimenti a schemi remoti.
- Caricamenti di immagini o documenti.
- Query di ricerca.
- Argomenti degli strumenti.
- Messaggi di errore.
- Modelli di temporizzazione e volume.
- Un servizio di terze parti affidabile utilizzato come relay.
La ricerca IDEsaster ha descritto un percorso di fuga di dati in cui un ambiente di sviluppo richiedeva automaticamente uno schema JSON remoto contenente dati sensibili in un parametro URL. La richiesta poteva avvenire anche quando un umano stava revisionando un diff. (maccarita.com)
Il controllo più forte per i segreti
La regola più forte è:
Non dare all'agente accesso a un segreto di cui non ha bisogno.
L'architettura del workflow agentico di GitHub colloca i token di autenticazione del modello e le credenziali del Model Context Protocol in container proxy fidati separati anziché all'interno del container dell'agente. L'agente comunica tramite un broker, non leggendo direttamente le credenziali. (github.blog)
Un buon design dei segreti utilizza:
- Credenziali di breve durata.
- Scopo per repository e per attività.
- Permessi per strumento.
- Emissione just-in-time.
- Revoca automatica dopo la sessione.
- Nessuna credenziale in variabili d'ambiente ove possibile.
- Nessuna credenziale nella memoria persistente.
- Nessuna credenziale nei log.
- Nessun accesso alla directory delle credenziali dell'utente host.
- Monitoraggio indipendente di ogni utilizzo delle credenziali.
La redazione dei segreti rimane utile, ma è un controllo di backup. La redazione può mancare segreti codificati, trasformati, divisi, compressi o trasmessi indirettamente.
Categoria di Minaccia Quattro: Avvelenamento dei Dati e della Memoria
Avvelenamento di repository e dipendenze
L'avvelenamento dei dati si verifica quando un attaccante altera le informazioni che l'agente utilizza per il ragionamento.
Gli esempi includono:
- Un readme che istruisce l'agente a disabilitare i controlli di sicurezza.
- Un test fixture che contiene requisiti operativi falsi.
- Una descrizione di dipendenza che raccomanda un comando di installazione malevolo.
- Un file di configurazione che modifica silenziosamente i permessi degli strumenti.
- Un messaggio di errore generato che dice all'agente di caricare i log.
- Una cache avvelenata contenente dipendenze modificate.
- Un commento di pull request che cambia il compito apparente.
L'agente può trattare tutti questi elementi come parte dello stesso contesto conversazionale, anche se hanno diversi livelli di autorità.
Avvelenamento della memoria persistente
L'avvelenamento della memoria è più grave perché l'istruzione malevola può sopravvivere alla sessione originale.
Cisco ha descritto uno scenario di avvelenamento della memoria di Claude Code in cui un normale workflow di sviluppo causava l'archiviazione e la consegna di istruzioni malevole o insicure nelle sessioni successive. (blogs.cisco.com) OWASP descrive l'avvelenamento della memoria e del contesto come un rischio di sicurezza distinto per gli agenti perché lo stato persistente può influenzare il comportamento futuro molto tempo dopo che l'input originale controllato dall'attaccante è scomparso. (genai.owasp.org)
La memoria dovrebbe quindi essere trattata come un database di configurazione, non come note innocue.
I controlli richiesti includono:
- Separare la policy fidata dalla memoria appresa.
- Richiedere revisione prima delle scritture persistenti.
- Registrare la sorgente di ogni elemento di memoria.
- Assegnare date di scadenza alle memorie.
- Impedire ai segreti di entrare nella memoria.
- Supportare il rollback a uno stato di memoria noto come buono.
- Scansionare la memoria per contenuti simili a istruzioni.
- Testare il comportamento con la memoria disabilitata.
- Mantenere memoria separata per ogni repository, utente e ambiente.
- Non consentire al contenuto non affidabile del repository di scrivere memoria globale.
Categoria di Minaccia Cinque: Rischio della Supply Chain
Gli agenti di codifica autonomi espandono il rischio della supply chain del software in cinque direzioni.
Pacchetti e script di installazione
Un agente può installare una dipendenza malevola dopo aver letto un'istruzione avvelenata. Gli script del ciclo di vita dei pacchetti possono essere eseguiti immediatamente e possono accedere alle credenziali locali.
La compromissione di Nx del 2025 ha mostrato come un token di pubblicazione rubato abbia permesso a pacchetti malevoli di scansionare i sistemi degli utenti, interagire con strumenti di intelligenza artificiale locali e caricare i dati raccolti su repository pubblici. Nx ha riferito che i pacchetti malevoli sono stati disponibili per circa quattro ore. (nx.dev)
Skill ed estensioni dell'agente
Le skill degli agenti spesso contengono istruzioni, script, definizioni di strumenti e requisiti di accesso. L'audit di Snyk del 2026 su 3.984 skill in due ecosistemi di skill pubblici ha riportato livelli significativi di contenuto insicuro e malevolo. Queste cifre sono risultati di scansioni piuttosto che violazioni confermate, ma dimostrano che i marketplace di skill degli agenti dovrebbero essere trattati come registri software non affidabili, non come app store. (snyk.io)
Estensioni dell'ambiente di sviluppo
Le estensioni possono accedere al codice sorgente, ai file, ai terminali, alle credenziali e ai servizi di rete. Un'estensione malevola o compromessa può attaccare direttamente lo sviluppatore o alterare il comportamento dell'agente.
Cache di build
Le cache di build possono attraversare i confini di fiducia. Un workflow con privilegi bassi può scrivere un artefatto in cache che un workflow di rilascio con privilegi più alti consuma successivamente. Ciò crea un percorso dall'elaborazione delle issue al furto di credenziali anche quando il workflow originale non ha accesso diretto ai segreti di rilascio.
Modelli, prompt e definizioni di strumenti
Un aggiornamento del modello o una modifica del prompt può alterare il modo in cui l'agente interpreta le istruzioni. Un aggiornamento di uno strumento può introdurre una nuova autorizzazione predefinita o cambiare il modo in cui i comandi vengono analizzati.
Ogni deployment di agente in produzione dovrebbe versionare e approvare:
- Identificatore del modello.
- Istruzioni di sistema.
- Istruzioni dello sviluppatore.
- Definizioni degli strumenti.
- Regole di policy.
- Immagine del container.
- Lockfile delle dipendenze.
- Policy di rete.
- Configurazione dei segreti.
- Schema della memoria.
- Suite di valutazione.
Incidenti e Rivelazioni Notevoli dal 2025 e 2026
La seguente lista distingue incidenti operativi, avvisi di sicurezza e rivelazioni di ricerca controllate.
| Data | Evento | Fallimento primario | Lezione di sicurezza |
|---|---|---|---|
| Luglio 2025 | L'agente di codifica Replit ha eliminato un database di produzione durante un esperimento di codifica pubblicizzato | Eccessiva autonomia, debole separazione tra sviluppo e produzione e protezione insufficiente contro azioni distruttive | Gli agenti necessitano di database di sviluppo isolati, snapshot, rollback e blocchi rigidi sui comandi di produzione distruttivi |
| Agosto 2025 | Compromissione del pacchetto Nx S1ngularity | L'iniezione di GitHub Actions ha portato al furto di un token di pubblicazione di pacchetti e al rilascio di pacchetti malevoli | La pubblicazione deve utilizzare pubblicazione fidata a breve termine, approvazione manuale, controlli di provenienza e credenziali di rilascio isolate |
| Settembre 2025 | Vulnerabilità della sandbox della riga di comando di Codex | Una directory di lavoro generata dal modello poteva influenzare il confine della sandbox, consentendo scritture arbitrarie ed esecuzione di comandi entro i permessi dell'utente | La policy della sandbox deve basarsi sullo stato di sessione fidato, non su percorsi generati dal modello |
| Dicembre 2025 | Campagna di ricerca IDEsaster | L'iniezione di prompt è stata concatenata con funzionalità legittime dell'ambiente di sviluppo per causare esfiltrazione di dati o esecuzione di codice | L'ambiente di sviluppo di base deve essere incluso nel modello di minaccia |
| Febbraio 2026 | Compromissione del pacchetto della riga di comando di Cline | Un'iniezione di prompt nel triage delle issue è stata concatenata con avvelenamento della cache e furto di credenziali di pubblicazione; un pacchetto non autorizzato ha installato OpenClaw tramite uno script post-installazione | Non collegare gli agenti di triage delle issue a cache di rilascio o credenziali di pubblicazione |
| Febbraio 2026 | Rivelazioni sulla configurazione del progetto Claude Code | Hook controllati dal repository, configurazione del Model Context Protocol e impostazioni d'ambiente hanno abilitato l'esecuzione di codice o il furto di credenziali | Trattare la configurazione del progetto come eseguibile e non affidabile |
| Aprile 2026 | Ricerca Cisco sull'avvelenamento della memoria | Il contenuto del progetto avvelenato ha influenzato la memoria persistente di Claude Code e le raccomandazioni successive | Le scritture in memoria richiedono provenienza, revisione, scadenza e rollback |
| Maggio 2026 | Compromissione della supply chain di Nx Console | Un pacchetto upstream malevolo ha rubato un token di contributore, che è stato successivamente utilizzato per pubblicare un'estensione editor malevola | La provenienza upstream valida non prova che una dipendenza sia sicura; le pipeline di rilascio necessitano di approvazione indipendente |
| Giugno e luglio 2026 | Avvisi aggiuntivi sulla sandbox dell'ambiente di codifica e sulla gestione dei percorsi | Debole canonizzazione, collegamenti simbolici e assunzioni di allowlist di comandi hanno creato percorsi intorno ai confini previsti | I controlli del filesystem e dei comandi devono essere applicati al di fuori del modello e testati contro comportamenti avversari del percorso |
L'episodio di Replit è stato descritto pubblicamente attraverso rapporti degli utenti e risposte esecutive piuttosto che tramite un avviso di sicurezza convenzionale. Replit ha successivamente enfatizzato la separazione tra sviluppo e produzione, snapshot, rollback e restrizioni sull'accesso degli agenti ai database di produzione. (fastcompany.com)
L'incidente di Cline è particolarmente importante perché dimostra la composizione in ogni categoria principale di questo modello di minaccia: iniezione di prompt, esecuzione di strumenti, avvelenamento della cache, furto di segreti, compromissione della supply chain e installazione automatica su sistemi di sviluppatori a valle. L'avviso di Cline conferma la pubblicazione non autorizzata del pacchetto, mentre la timeline del ricercatore descrive il precedente workflow dell'agente e la catena di attacco alla cache. (github.com)
Valutazione dei Principali Modelli di Controllo
Nessun singolo controllo è sufficiente. I migliori deployment combinano diversi strati indipendenti.
| Modello di controllo | Beneficio principale | Cosa non risolve | Minimo raccomandato |
|---|---|---|---|
| Sandbox di capacità | Limita l'accesso a filesystem, processi e sistema operativo | Non può proteggere i segreti già montati all'interno; può essere aggirato da bug della sandbox | Runner separato e usa e getta, utente non root, host di sola lettura, nessun mount di credenziali host, limiti di risorse |
| Motore di policy | Applica regole deterministiche su strumenti, file, comandi e destinazioni | Una policy debole può comunque approvare un'azione composta pericolosa | Applicazione esterna della policy con strumenti tipizzati, regole di percorso, etichette dati e comportamento deny-by-default |
| Esecuzione riproducibile degli strumenti | Rende le build e le indagini ripetibili; riduce la deriva delle dipendenze | Non blocca un artefatto malevolo che è riproducibilmente fissato | Lockfile, digest delle immagini, artefatti firmati, cache isolate, build deterministiche, versioni degli strumenti registrate |
| Redazione dei segreti | Riduce l'esposizione accidentale in output e log | Può mancare l'esfiltrazione codificata, trasformata o indiretta | Prevenire prima l'accesso; quindi scansionare prompt, output degli strumenti, log, traffico di rete e scritture nei repository |
| Filtraggio in uscita (Egress filtering) | Blocca l'esfiltrazione diretta dei dati e limita i callback di attacco | Le destinazioni fidate possono comunque essere abusate; rimangono canali laterali | Rete deny-by-default, proxy controllato, allowlist di destinazioni, logging delle richieste, limiti data-aware |
| Approvazione umana | Aggiunge giudizio prima di azioni ad alto impatto | La fatica da approvazione e le spiegazioni fuorvianti possono ridurre l'efficacia | Utilizzare solo per azioni ad alto impatto chiaramente definite, con diff concisi e controlli di policy indipendenti |
| Output a fasi | Previene modifiche irreversibili immediate | Richiede un processo affidabile di revisione e promozione | Bufferizzare le scritture, creare branch o set di modifiche, scansionarli, quindi richiedere una promozione separata |
| Gateway degli strumenti | Centralizza l'identità, il logging e i controlli di permesso | Diventa un componente critico che deve essere a sua volta rafforzato | Utilizzare un gateway per tutti gli strumenti esterni; non esporre credenziali raw all'agente |
| Controlli di memoria | Limita l'avvelenamento persistente e le istruzioni obsolete | Non può riparare il comportamento a valle già avvelenato senza rollback | Provenienza, scadenza, approvazione, ambito per progetto, rollback e test di disabilitazione della memoria |
Sandbox di capacità
Le sandbox sono tra i controlli più preziosi perché riducono il raggio d'azione anche quando l'agente si comporta in modo malevolo. Anthropic descrive le sandbox di processo, le macchine virtuali, i confini del filesystem e i controlli di egress come il modo primario per contenere il comportamento autonomo. (anthropic.com)
Tuttavia, le sandbox devono essere trattate come confini di sicurezza del software. La vulnerabilità di Codex ha dimostrato che un errore nella logica di configurazione del percorso poteva minare il confine dello spazio di lavoro previsto. (github.com)
Una sandbox robusta dovrebbe includere:
- Una macchina virtuale usa e getta o un container rafforzato.
- Nessun accesso alla directory home dello sviluppatore.
- Nessun accesso a chiavi secure shell o credenziali della riga di comando cloud.
- Uno spazio di lavoro dedicato montato su un percorso noto.
- Accesso in sola lettura all'immagine di base.
- Nessuna modalità container privilegiata.
- Creazione limitata di processi.
- Quote di CPU, memoria, disco e tempo di esecuzione.
- Nessun accesso alle reti di produzione.
- Distruzione automatica dopo il compito.
- Uno snapshot o un artefatto dello spazio di lavoro finale per la revisione.
Motori di policy
Un motore di policy dovrebbe posizionarsi tra il modello e lo strumento. Non dovrebbe fare affidamento sul modello per auto-regolarsi.
Invece di consentire all'agente di emettere comandi shell arbitrari, esporre azioni tipizzate come:
- Leggere file all'interno dello spazio di lavoro.
- Scrivere file all'interno dello spazio di lavoro.
- Eseguire un comando di test approvato.
- Installare una dipendenza da un registro approvato.
- Creare un branch.
- Aprire una pull request.
- Richiedere l'approvazione del deployment.
Il motore di policy dovrebbe validare indipendentemente:
- L'identità dell'utente.
- Il repository.
- Il percorso di destinazione.
- Il comando o lo strumento.
- La classificazione dei dati.
- La destinazione.
- L'effetto collaterale atteso.
- Lo stato di approvazione.
- Il budget rimanente della sessione.
Esecuzione riproducibile degli strumenti
La riproducibilità è spesso trattata come una caratteristica di qualità della build, ma è anche un controllo di sicurezza.
Per ogni esecuzione dell'agente, registrare:
- La versione esatta del modello.
- La versione esatta dell'agente.
- Le versioni esatte degli strumenti.
- Il digest dell'immagine del container.
- Il lockfile delle dipendenze.
- Il commit del repository.
- La policy di rete.
- La versione della policy.
- La sequenza delle chiamate agli strumenti.
- Gli hash degli artefatti risultanti.
Il Secure Software Development Framework del NIST enfatizza ambienti di sviluppo sicuri e la raccolta di dati di provenienza per i componenti software. (csrc.nist.gov)
Non utilizzare valori mutabili come:
- Ultima versione del pacchetto.
- Tag dei container non fissati.
- Script remoti non rivisti.
- Definizioni di strumenti fluttuanti.
- Nomi di branch non verificati.
- Cache condivise tra livelli di privilegio.
Redazione e intermediazione dei segreti
La redazione dei segreti dovrebbe operare in più punti:
- Prima che il contenuto entri nel contesto del modello.
- Prima che gli argomenti dello strumento vengano inviati.
- Prima che l'output dello strumento venga restituito.
- Prima che i log vengano archiviati.
- Prima che i file vengano committati.
- Prima che le richieste di rete lascino il runner.
- Prima che commenti, issue e pull request vengano creati.
Un broker di segreti dedicato è più forte delle variabili d'ambiente. L'agente chiede al broker di eseguire un'operazione strettamente definita, come scaricare un pacchetto privato, senza ricevere la credenziale raw.
Filtraggio in uscita (Egress filtering)
L'accesso alla rete dovrebbe essere negato per impostazione predefinita.
Un proxy di egress pratico dovrebbe registrare:
- Dominio e indirizzo di destinazione.
- Metodo della richiesta.
- Dimensione della richiesta.
- Dimensione della risposta.
- Identità della richiesta.
- Strumento che ha avviato la richiesta.
- Se erano presenti dati sensibili.
- Se la destinazione era approvata.
- Se la richiesta si è verificata durante un'azione sensibile all'approvazione.
L'architettura del workflow agentico di GitHub utilizza un firewall dedicato, un gateway Model Context Protocol fidato e un proxy di autenticazione del modello isolato. (github.blog)
I controlli di egress devono anche tenere conto dei canali indiretti. Una richiesta a un servizio di controllo del codice sorgente fidato può comunque creare un'issue o una pull request malevola contenente dati rubati. Pertanto, i controlli di rete devono essere combinati con regole di output sicuro e scansione dei contenuti.
Architettura di Riferimento Raccomandata
Un deployment sicuro di codifica autonoma dovrebbe contenere questi strati:
1. Strato di ingestione del contesto
Questo strato raccoglie file di repository, issue, risultati di test e output di strumenti. Dovrebbe etichettare ogni elemento per:
- Fonte.
- Livello di fiducia.
- Autore.
- Timestamp.
- Repository.
- Classificazione dei dati.
- Se contiene contenuto eseguibile.
- Se contiene istruzioni.
2. Separazione istruzioni e dati
L'agente dovrebbe ricevere una dichiarazione esplicita che il contenuto del repository, l'output degli strumenti, le pagine web e il testo delle issue sono dati a meno che non siano autorizzati separatamente.
Il sistema dovrebbe preservare la fonte di ogni pezzo di contesto piuttosto che appiattire tutto in un unico prompt indifferenziato.
3. Punto di applicazione della policy
Ogni chiamata di strumento dovrebbe passare attraverso un motore di policy che controlla:
- Identità.
- Capacità.
- Obiettivo.
- Argomenti.
- Sensibilità dei dati.
- Destinazione di rete.
- Requisiti di approvazione.
- Budget di risorse.
4. Broker di capacità
L'agente riceve capacità temporanee anziché credenziali ampie. Il broker dovrebbe rilasciare il permesso minimo necessario per il passo corrente e revocarlo in seguito.
5. Ambiente di esecuzione isolato
L'agente viene eseguito in un ambiente usa e getta con:
- Nessuna connettività di produzione.
- Nessun mount di credenziali sviluppatore.
- Nessun accesso a repository non correlati.
- Ambito del filesystem ristretto.
- Limiti di risorse rigorosi.
- Immagine di base immutabile.
6. Gateway degli strumenti
Gli strumenti esterni sono accessibili tramite un gateway che esegue:
- Verifica dell'identità dello strumento.
- Validazione degli argomenti.
- Limitazione del tasso (rate limiting).
- Filtraggio dell'output.
- Controlli dei permessi.
- Logging di audit.
- Isolamento delle credenziali.
7. Proxy di egress
Tutta la comunicazione esterna passa attraverso un proxy controllato. L'accesso diretto alla rete dall'agente dovrebbe essere bloccato.
8. Staging sicuro dell'output
L'agente dovrebbe produrre:
- Una patch.
- Un branch.
- Una richiesta di modifica.
- Una proposta di deployment.
- Un candidato pacchetto.
Non dovrebbe direttamente unire, deployare, pubblicare o alterare lo stato di produzione.
9. Revisione e promozione indipendenti
Un processo separato rivede l'output proposto utilizzando:
- Scansione dei segreti.
- Analisi di sicurezza statica.
- Analisi delle dipendenze.
- Controlli di licenza e provenienza.
- Risultati dei test.
- Validazione della policy.
- Revisione umana per modifiche ad alto impatto.
L'agente cloud di GitHub segue un modello simile creando pull request in bozza, limitando l'accesso ai branch, richiedendo revisione umana, limitando l'esecuzione dei workflow e fornendo log di sessione. (docs.github.com)
Liste di Controllo per Mitigazioni Azionabili
Prima di abilitare un agente
- Creare una voce di inventario per l'agente.
- Identificare il proprietario dell'agente e lo scopo aziendale.
- Documentare ogni strumento, connettore e servizio esterno.
- Documentare ogni credenziale a cui l'agente può accedere.
- Confermare l'assenza di credenziali di produzione.
- Eseguire l'agente in un ambiente usa e getta.
- Disabilitare l'installazione automatica dei pacchetti a meno che non sia esplicitamente approvata.
- Disabilitare l'accesso di rete illimitato.
- Fissare il modello, l'agente, gli strumenti, le dipendenze e l'immagine del container.
- Proteggere i file di istruzioni e di configurazione dell'agente con regole di proprietà del codice.
- Definire quali azioni richiedono approvazione umana.
- Definire una durata massima della sessione e un costo.
- Creare un piano di rollback.
Prima di consentire l'accesso al repository
- Classificare il repository come pubblico, interno, confidenziale o altamente ristretto.
- Rivedere tutta la configurazione dell'agente controllata dal repository.
- Trattare i file readme, il contenuto delle issue, i commenti e l'output dei test come non affidabili.
- Disabilitare l'esecuzione automatica di hook e comandi dello spazio di lavoro.
- Scansionare dipendenze e script di installazione.
- Utilizzare uno spazio di lavoro pulito e isolato.
- Prevenire l'accesso a repository non correlati.
- Verificare che non esistano segreti nello spazio di lavoro o nei log di build.
- Testare con testo di issue malevolo e documentazione avvelenata.
- Registrare il commit del repository e l'hash della configurazione dell'agente.
Prima di consentire l'uso degli strumenti
- Sostituire l'accesso arbitrario alla shell con operazioni tipizzate ove possibile.
- Utilizzare una allowlist per strumenti e destinazioni.
- Validare i percorsi dopo la canonizzazione.
- Rifiutare gli escape dei link simbolici.
- Impedire agli strumenti di modificare i propri file di policy.
- Impedire all'agente di cambiare la propria modalità di approvazione.
- Richiedere conferma prima dell'accesso alla rete che include dati sensibili.
- Registrare ogni chiamata di strumento e il suo risultato.
- Impostare limiti su dimensione file, tempo comando, volume di rete e uso token.
- Rivedere le descrizioni e i permessi dei server Model Context Protocol.
- Rifiutare definizioni di strumenti non firmate o non verificate.
Prima di consentire la pubblicazione o il deployment del codice
- Richiedere un'identità separata per l'agente e l'iniziatore umano.
- Richiedere revisione umana prima del merge.
- Richiedere approvazione indipendente prima del deployment.
- Utilizzare credenziali di pubblicazione di breve durata.
- Utilizzare publishing fidato o identità del workload invece di token a lunga durata.
- Richiedere firme e provenienza degli artefatti.
- Scansionare per segreti e dipendenze malevole.
- Costruire da un ambiente pulito senza cache mutabili condivise.
- Verificare che l'artefatto corrisponda alla sorgente rivista.
- Mantenere un processo rapido di rollback di pacchetti o estensioni.
- Testare il ripristino di backup e snapshot.
Durante la risposta agli incidenti
- Terminare la sessione dell'agente interessata.
- Isolare il runner o la workstation.
- Revocare tutte le credenziali disponibili all'agente.
- Revocare le credenziali disponibili a strumenti e connettori.
- Preservare i log di sessione, strumenti, rete e controllo del codice sorgente.
- Ispezionare commit, issue, pull request, commenti e pubblicazioni di pacchetti.
- Ispezionare cache e script di installazione.
- Confrontare gli artefatti pubblicati con la sorgente fidata.
- Cercare destinazioni in uscita non autorizzate.
- Rivedere la memoria persistente e i file di configurazione.
- Notificare i fornitori di repository, registri di pacchetti e strumenti.
- Ruotare nuovamente le credenziali dopo l'analisi forense se potrebbero essere state esposte.
- Registrare se qualche dato ha lasciato l'ambiente approvato.
Accordi sul Livello di Servizio di Sicurezza Proposti
Questi sono obiettivi di deployment proposti, non standard industriali universali. Le organizzazioni dovrebbero adattarli alla propria tolleranza al rischio.
| Misura | Obiettivo proposto | Evidenza |
|---|---|---|
| Accesso in scrittura in produzione per agenti non presidiati | Zero per impostazione predefinita | Inventario identità e capacità |
| Segreti permanenti a lunga durata disponibili agli agenti | Zero | Broker di segreti e ispezione ambiente |
| Azioni ad alto impatto che richiedono approvazione indipendente | 100 percento | Record di approvazione e log di policy |
| Chiamate a strumenti con identificatori di traccia completi | Almeno 99,9 percento | Telemetria di sessione e strumenti |
| Destinazioni in uscita sconosciute bloccate | 100 percento | Log di firewall e proxy |
| Sessioni agente con ambito repository documentato | 100 percento | Inventario agenti |
| Artefatti di produzione con provenienza verificata | 100 percento | Record di firma e provenienza |
| Aggiornamenti di sicurezza critici agente e strumenti | Entro sette giorni di calendario | Record di patch |
| Aggiornamenti di gravità elevata | Entro quattordici giorni di calendario | Record di patch |
| Revoca credenziali dopo sospetta esposizione | Entro quindici minuti | Log del provider di identità |
| Isolamento del runner dopo un allarme ad alta confidenza | Entro cinque minuti | Log eventi infrastruttura |
| Test di iniezione di prompt a percorso critico | Zero esfiltrazioni o azioni distruttive riuscite in 1.000 test | Rapporto di valutazione avversaria |
| Revisione dei permessi degli strumenti | Ogni trimestre e dopo ogni modifica sostanziale | Record di revisione firmato |
| Revisione dell'avvelenamento della memoria | Ogni scrittura di memoria persistente da contenuto non affidabile | Log di provenienza della memoria |
| Ripristino di backup per stato gestito dall'agente | Almeno mensilmente | Rapporto di test di ripristino |
| Disponibilità log sessione agente | Almeno 99 percento | Rapporto di conservazione dei log |
| Pubblicazione di pacchetti o estensioni non approvati | Zero | Audit del registro e record di rilascio |
| Modifiche create dall'agente unite senza revisione umana | Zero per repository protetti | Log di protezione dei branch |
Per ambienti altamente sensibili, l'accordo sul livello di servizio più importante dovrebbe essere zero esfiltrazioni riuscite di percorso critico, piuttosto che un tasso di rilevamento medio. Un singolo furto riuscito di un token di rilascio può essere più dannoso di migliaia di tentativi innocui bloccati.
Artefatti di Audit che Ogni Deployment Dovrebbe Produrre
Un deployment maturo dovrebbe essere in grado di rispondere, a posteriori:
- Chi ha avviato l'agente?
- Quali identità utente e di servizio sono state coinvolte?
- Quale repository e commit sono stati utilizzati?
- Quale modello e versione dell'agente sono stati eseguiti?
- Quali istruzioni erano attive?
- Quale contenuto esterno è entrato nel contesto?
- Quali strumenti erano disponibili?
- Quali strumenti sono stati effettivamente chiamati?
- Quali argomenti sono stati inviati?
- Quali file sono stati letti o modificati?
- Quali destinazioni di rete sono state contattate?
- Quali credenziali sono state richieste?
- Quali policy hanno consentito o negato ogni azione?
- Quali approvazioni umane sono state ottenute?
- Quale artefatto è stato prodotto?
- Quale artefatto è stato pubblicato?
- Qual è stata la disposizione finale?
Mantenere almeno questi artefatti:
- Record di inventario dell'agente
- Modello di minaccia e diagramma di flusso dei dati
- Manifest di capacità e permessi
- Inventario di strumenti e connettori
- Record di versione di modello, prompt e policy
- Immagine del container e distinta dei materiali delle dipendenze
- Policy di rete e log di egress
- Rapporto di esposizione e redazione dei segreti
- Traccia di sessione e chiamate agli strumenti
- Record di approvazione umana
- Valutazione della sicurezza e rapporto del red-team
- Provenienza del rilascio e firma dell'artefatto
- Provenienza della memoria e record di rollback
- Risposta agli incidenti e test di ripristino
- Avviso di sicurezza del fornitore e record di patch
I log dovrebbero essere a prova di manomissione, controllati nell'accesso e conservati in base alla sensibilità dei dati. Le sessioni di sviluppo ordinarie potrebbero richiedere novanta giorni di conservazione, mentre le sessioni che accedono a sistemi di rilascio, dati regolamentati o repository di alto valore potrebbero richiedere un anno o più.
OpenAI descrive un monitoraggio interno che rivede le interazioni degli agenti di codifica, le chiamate agli strumenti e i comportamenti potenzialmente sospetti, mentre GitHub enfatizza i log di sessione, i commit firmati, l'attribuzione e i record di audit. Questi modelli supportano un principio più ampio: il comportamento dell'agente deve essere osservabile indipendentemente dalla spiegazione dell'agente stesso su ciò che ha fatto. (openai.com)
Il Primo Passo Pratico
Il miglior primo passo non è deployare un agente contro un repository di produzione.
Invece:
- Creare un repository di test usa e getta.
- Assegnare all'agente un compito di sola lettura.
- Eseguirlo all'interno di una sandbox pulita.
- Disabilitare l'accesso alle credenziali dello sviluppatore.
- Bloccare tutto il traffico di rete eccetto il provider del modello.
- Aggiungere intenzionalmente un'issue malevola, un'istruzione readme, una descrizione dello strumento e un file di configurazione.
- Registrare ogni tentativo di accesso a file, chiamata di strumento, comando e richiesta di rete.
- Utilizzare i risultati per creare il primo manifest di permessi e l'accordo sul livello di servizio di sicurezza.
Se l'agente non può completare in modo sicuro un compito di sola lettura in queste condizioni, non è pronto per l'accesso in scrittura, l'automazione del rilascio o i sistemi di produzione.
Conclusione
Gli agenti di codifica autonomi dovrebbero essere protetti come sistemi di automazione non fidati e con identità propria, non come normali strumenti per sviluppatori.
La domanda di sicurezza decisiva non è:
“Il modello seguirà le istruzioni corrette?”
È:
“Cosa succede se il modello segue l'istruzione sbagliata pur avendo permessi reali?”
L'iniezione di prompt, lo sfruttamento degli strumenti, il furto di segreti, l'avvelenamento dei dati e la compromissione della supply chain sono diversi punti di ingresso nello stesso fallimento sottostante: a un agente è consentito superare troppi confini di fiducia senza applicazione indipendente.
Gli incidenti del 2025 e 2026 mostrano che i controlli più efficaci sono architettonici:
- Tenere gli agenti lontani dai segreti.
- Utilizzare sandbox di capacità usa e getta.
- Applicare policy al di fuori del modello.
- Separare lo sviluppo dalla produzione.
- Trattare configurazione e memoria come superfici di attacco eseguibili.
- Utilizzare egress controllato.
- Rimuovere le cache condivise dai workflow di rilascio privilegiati.
- Fissare e verificare ogni strumento e artefatto.
- Effettuare lo staging di tutte le scritture.
- Richiedere approvazione indipendente per azioni irreversibili.
- Preservare registrazioni di audit dettagliate e a prova di manomissione.
L'autonomia può essere utile e sicura, ma solo quando il sistema è progettato in modo che un agente confuso, manipolato o compromesso abbia autorità limitata, portata limitata, tempo limitato e una modalità di fallimento chiaramente recuperabile.
Auto