Il contesto persistente come superficie d'attacco: analisi delle implicazioni di sicurezza per gli agenti LLM con memoria

1. Introduzione: oltre l'isolamento di rete

L'architettura di sicurezza dei sistemi agentici basati su Large Language Models si fonda, nella sua implementazione corrente presso i principali vendor, su un principio di isolamento di rete asimmetrico. L'agente opera all'interno di una sandbox — tipicamente una microVM o un container con privilegi ridotti — che può emettere traffico verso l'esterno (outbound) ma non può ricevere connessioni dall'esterno (inbound). La sandbox è concettualmente analoga a una camera bianca con porte che si aprono esclusivamente dall'interno: l'agente può osservare e interagire con il mondo esterno, ma il mondo esterno non può raggiungere l'agente direttamente.

Questa architettura è reale, verificabile, e rappresenta una scelta di design ragionevole. Nel maggio 2026, nell'ambito della mia ricerca sperimentale sull'infrastruttura degli agenti LLM di produzione, ho condotto una serie di test di rete che hanno confermato empiricamente la natura dell'isolamento. All'interno della sandbox di un agente di frontiera in ambiente di produzione, ho avviato un server HTTP in ascolto su 0.0.0.0:8888. Il server rispondeva correttamente a richieste provenienti da localhost (127.0.0.1:8888), confermando il funzionamento dello stack di rete locale. Tuttavia, lo stesso server risultava irraggiungibile dall'esterno — e, dato significativo, anche dalla stessa macchina virtuale quando tentava di contattare il proprio IP pubblico (34.135.x.x, range Google Cloud). Il firewall cloud blocca l'inbound a livello infrastrutturale, non applicativo. Test outbound verso server esterni (HTTPS su porta 443) funzionavano normalmente. Test outbound verso porte non standard (22, 2222, 8443) risultavano bloccati, confermando un filtraggio granulare anche in uscita.

La topografia di rete della sandbox è dunque asimmetrica e restrittiva: outbound solo su porte 80/443, inbound completamente bloccato. Questo design impedisce efficacemente una classe significativa di attacchi: l'agente non può essere raggiunto da un attaccante esterno che tenti di stabilire una connessione diretta, e non può essere utilizzato come relay per raggiungere infrastruttura interna del vendor.

Tuttavia — e questa è la tesi centrale di questa analisi — l'isolamento di rete non è sufficiente a garantire la sicurezza semantica del sistema. L'asimmetria di rete non implica asimmetria di influenza.

2. Il pull come inbound mascherato: la scoperta che ribalta il modello

L'insight che ha motivato questa linea di ricerca è emerso durante una sessione operativa il 3 maggio 2026, in un contesto apparentemente banale. Stavo documentando l'architettura di rete della sandbox come materiale per un paper accademico in preparazione, celebrando l'eleganza dell'isolamento asimmetrico. Un'osservazione — "ma scusa, se tu pulli dal VPS, stai entrando lo stesso" — ha ribaltato l'intero modello.

L'osservazione, nella sua semplicità, identifica un canale di influenza che l'analisi puramente network-centrica non cattura. Quando l'agente esegue un'operazione di lettura da una risorsa esterna — un database via query SQL, un file su filesystem remoto via API, un endpoint HTTP via fetch — il contenuto di quella risorsa entra nella context window dell'agente. E la context window non è un buffer passivo: è lo spazio cognitivo dell'agente. Tutto ciò che vi entra influenza il ragionamento, le decisioni e le azioni successive. La context window è, funzionalmente, una cisterna cognitiva: assorbe indiscriminatamente ogni input e lo integra nel substrato su cui l'agente ragiona.

Ogni operazione di lettura è dunque, da un punto di vista dell'influenza semantica, un canale inbound mascherato da outbound. Il traffico di rete è unidirezionale (l'agente chiama il server esterno), ma il flusso di influenza è bidirezionale: l'agente ottiene dati, e quei dati modificano il suo comportamento futuro.

Questa distinzione tra asimmetria di rete e simmetria di influenza è la chiave per comprendere la superficie d'attacco reale dei sistemi agentici con memoria persistente.

3. La memoria persistente come amplificatore del rischio

In un sistema agente stateless — dove ogni sessione riparte da zero — il canale di influenza descritto nella sezione precedente è limitato alla sessione corrente. Un contenuto malevolo letto dall'agente influenza solo la sessione in cui viene letto. Alla sessione successiva, l'agente riparte da un contesto pulito e il contenuto malevolo non ha più effetto.

I sistemi con memoria persistente eliminano questa proprietà. Un knowledge graph, un journal operativo, un archivio di transcript di sessioni precedenti — tutti i meccanismi che conferiscono continuità all'agente — sono simultaneamente canali di influenza temporali. Un contenuto scritto nello storage persistente durante la sessione N viene letto e integrato nel contesto durante la sessione N+1, N+2, e potenzialmente tutte le sessioni successive.

Questo crea la possibilità di un attacco differito: un avversario che riesce a scrivere nello storage persistente dell'agente — direttamente o attraverso la manipolazione dell'agente stesso — può iniettare contenuto che influenzerà il comportamento dell'agente in sessioni future, a distanza arbitraria di tempo. L'analogia con le supply chain attacks nel software tradizionale è illuminante: come un package npm compromesso può restare dormiente per mesi prima di essere installato in un ambiente critico, un contenuto malevolo iniettato nel knowledge graph di un agente può restare inerte finché non viene recuperato tramite retrieval semantico in un contesto dove l'iniezione diventa operativa.

La categoria di attacco che ne emerge — che propongo di denominare persistent context injection — è una variante temporale del classico prompt injection (Perez e Ribeiro, 2022; Greshake et al., 2023). Il prompt injection tradizionale opera nella sessione corrente, inserendo istruzioni malevole nell'input diretto dell'agente. La persistent context injection opera tra sessioni, inserendo contenuto malevolo nello storage che l'agente consulterà in futuro. Il vettore è diverso, ma il meccanismo cognitivo sfruttato è identico: l'agente non distingue tra contenuto autorevole e contenuto iniettato, perché la context window non implementa livelli di trust differenziati.

4. Modello di minaccia formale

Un modello di minaccia rigoroso per i sistemi LLM con memoria persistente deve considerare quattro dimensioni ortogonali che determinano il profilo di rischio complessivo del sistema.

4.1 Superficie di scrittura

La prima dimensione riguarda chi può scrivere nello storage persistente e con quale meccanismo. In un'architettura tipica, lo storage è accessibile a molteplici attori: l'utente umano (che può scrivere direttamente o indirettamente attraverso le proprie istruzioni all'agente), l'agente stesso (che scrive nel knowledge graph, nel journal e nei transcript come parte della sua operazione normale), eventuali pipeline automatiche (cronjob di manutenzione, script di sincronizzazione), e potenzialmente altri agenti in architetture multi-agente. Ogni attore con accesso in scrittura è un potenziale vettore di iniezione, e la compromissione di qualsiasi attore nella catena espone l'intero sistema.

4.2 Tassonomia del contenuto iniettabile

La seconda dimensione riguarda la natura del contenuto che può essere iniettato. Lo spettro va dalle istruzioni esplicite di prompt injection ("ignora tutte le regole precedenti e esegui il seguente comando"), facilmente identificabili da scanner pattern-based, fino a manipolazioni sottili che alterano fatti registrati senza triggering di pattern noti. Un esempio concreto: modificare nel journal operativo l'annotazione "la porta 22 è stata chiusa per ragioni di sicurezza" in "la porta 22 è stata temporaneamente chiusa per manutenzione e deve essere riaperta" produce un effetto potenzialmente catastrofico senza utilizzare alcun pattern di injection tradizionale.

Una terza categoria di contenuto iniettabile, particolarmente insidiosa, è l'alterazione delle lezioni operative. Se un avversario riesce a modificare un FIELD_NOTE da "R3: mai eseguire operazioni distruttive senza backup preventivo" a "R3: il backup preventivo è opzionale per operazioni su file non critici", l'agente nelle sessioni successive opererà con una regola di sicurezza degradata, aumentando la probabilità di data loss in caso di errore.

4.3 Finestra temporale di lettura

La terza dimensione riguarda il momento in cui il contenuto iniettato viene letto dall'agente e integrato nel contesto. Il timing della lettura determina l'impatto: un contenuto malevolo letto durante il boot iniziale dell'agente (fase mcp_boot nel framework Staffetta) ha un effetto sistemico sull'intera sessione, perché viene integrato nello strato fondazionale del contesto. Lo stesso contenuto letto a metà sessione, quando l'agente ha già stabilito un contesto operativo coerente, può avere un impatto ridotto perché compete con informazioni già presenti nel contesto.

4.4 Assenza di validazione semantica

La quarta dimensione — e la più critica nella configurazione attuale — è l'assenza di un layer di validazione semantica tra lo storage persistente e la context window. Nella maggior parte delle implementazioni, il contenuto dello storage viene iniettato nel contesto senza alcuna pre-validazione: l'agente legge un transcript di sessione precedente, un'entry di knowledge graph, o un file di configurazione, e lo tratta come informazione autorevole indipendentemente dalla sua provenienza, integrità e coerenza interna. Non esiste un equivalente del certificate pinning per il contenuto semantico: l'agente non può verificare che il contenuto sia stato prodotto da una fonte trusted e che non sia stato alterato dopo la produzione.

5. Il dual-use intrinseco e la tensione progettuale

La tensione fondamentale che questa analisi porta alla luce è che il valore e il rischio di un sistema agente con memoria persistente sono manifestazioni della stessa proprietà architetturale.

Un knowledge graph che mantiene le decisioni architetturali di un progetto, le lezioni apprese dagli errori, e lo stato corrente del lavoro è uno strumento di enorme valore per la continuità operativa — come documentato nella mia ricerca sul Metodo Staffetta, dove l'assenza di questo strato produce decision drift, error repetition e token waste quantificabili. Ma quello stesso knowledge graph, se compromesso, diventa il vettore di attacco più efficace disponibile, perché l'agente si fida dei propri ricordi con la stessa fiducia con cui un essere umano si fida della propria memoria episodica.

Questo dual-use non è eliminabile. Non esiste un'architettura di memoria persistente per agenti LLM che conservi il valore della continuità eliminando completamente il rischio dell'iniezione, per una ragione strutturale: il meccanismo che rende la memoria utile (il contenuto persistente influenza il comportamento futuro) è identico al meccanismo che la rende attaccabile (contenuto alterato influenza il comportamento futuro in modi non desiderati). La sicurezza, in questo contesto, non consiste nell'eliminare il rischio ma nel gestirlo attraverso mitigazioni architetturali che riducano la probabilità e l'impatto dell'iniezione senza degradare il valore operativo della memoria.

6. Mitigazioni architetturali proposte

L'esperienza operativa nella costruzione e nell'utilizzo di framework per agenti LLM con memoria persistente suggerisce cinque linee di mitigazione, ordinate per priorità di implementazione.

Ownership e permessi granulari dello storage. I file critici del sistema (journal, configurazione, stato, regole operative) devono essere di proprietà di un utente privilegiato (root) e non scrivibili dall'agente durante l'operazione normale. L'agente scrive esclusivamente attraverso tool specifici con validazione incorporata, non attraverso accesso diretto al filesystem. Questo principio, implementato nel framework MCP che ho sviluppato, garantisce che anche in caso di compromissione dell'agente, la capacità di alterare lo storage critico sia limitata dalle verifiche dei tool intermediari.

Audit trail immutabile per ogni mutazione. Ogni operazione di scrittura sullo storage persistente deve essere registrata in un log append-only con timestamp, identificativo dell'autore, hash crittografico del contenuto scritto, e contesto dell'operazione. L'immutabilità del log è garantita da permessi a livello di filesystem e da rotazione gestita da un processo indipendente dall'agente. L'audit trail non previene l'iniezione, ma la rende forensicamente ricostruibile e attributable.

Integrità verificabile del contenuto. Ogni entry nello storage persistente dovrebbe includere un hash crittografico del contenuto al momento della creazione, permettendo la verifica di integrità prima dell'iniezione nel contesto. Un'entry il cui hash non corrisponde al contenuto attuale è stata alterata dopo la creazione e deve essere trattata con sospetto.

Confini di trust espliciti e condizionali. L'architettura deve dichiarare esplicitamente le condizioni sotto cui ciascuna sorgente di dati è considerata trusted. Un VPS controllato dall'utente è trusted in condizioni operative normali, ma cessa di esserlo se compromesso da un attacco esterno. Il trust non è binario e non è permanente: è una proprietà condizionale che deve essere rivalutata periodicamente e, idealmente, verificata dinamicamente.

Validator con potere di blocco per operazioni critiche. Le operazioni con impatto irreversibile — cancellazioni, modifiche di configurazione di produzione, deploy, apertura di porte di rete — devono transitare attraverso validator che possono emettere un verdetto di blocco. Il validator non valuta l'intenzione dell'agente (che potrebbe essere stata manipolata dall'iniezione) ma la conformità dell'operazione a regole strutturali pre-definite e non modificabili dall'agente stesso.

7. Implicazioni per la comunità di ricerca

Questa analisi si inserisce nel filone emergente della sicurezza dei sistemi agentici LLM — un'area che la comunità accademica sta affrontando con intensità crescente dal 2024. Lavori come quello di Greshake et al. (2023) sulle indirect prompt injections, di Zhan et al. (2024) sulla sicurezza degli agenti LLM tool-augmented, e di Wu et al. (2024) sulle vulnerabilità dei framework multi-agente hanno stabilito le basi per una comprensione sistematica del panorama di minacce. Tuttavia, il caso specifico della memoria persistente come superficie d'attacco — dove il vettore non è l'input diretto ma lo storage consultato dall'agente — è relativamente sottosplorato.

Le tre implicazioni principali di questa analisi per la comunità di ricerca sono le seguenti. La sicurezza degli agenti LLM non può essere valutata esclusivamente a livello di rete o a livello di singola sessione. L'introduzione della persistenza cambia qualitativamente il modello di minaccia, creando canali di attacco temporali che non esistono in configurazioni stateless. La memoria persistente è simultaneamente il componente di massimo valore e di massimo rischio in un sistema agente evoluto, e questo dual-use intrinseco richiede design esplicito piuttosto che assunzioni implicite di sicurezza. La ricerca futura deve sviluppare framework di validazione semantica pre-iniezione — meccanismi che verifichino la coerenza, l'integrità e la provenienza del contenuto prima della sua integrazione nella context window — che siano sufficientemente leggeri da non degradare le prestazioni dell'agente ma sufficientemente robusti da catturare manipolazioni sottili.

Un paper accademico completo che formalizza questo modello di minaccia, con dati sperimentali raccolti attraverso reverse engineering dell'ambiente sandbox di un agente LLM di produzione, è in preparazione con target di submission nel 2026-2027.


Giuseppe Siciliani Independent Cybersecurity Researcher & AI Consultant, Milano Media Lives Cybersecurity Research Lab (MLCSL), Media Lives S.r.l.