Un sito può dare ordini nascosti agli agenti AI senza mostrarli nel browser

Signals Corps analizza 217 milioni di risposte HTTP e scopre siti che pongono in essere tentativi di prompt injection attraverso gli header. Cosa significa e come questi attacchi possono influenzare gli agenti AI senza farsi notare.
Un sito può dare ordini nascosti agli agenti AI senza mostrarli nel browser

Un sito web può tentare di impartire istruzioni a un assistente AI senza inserirle nel contenuto della pagina, senza modificare il codice HTML e persino senza lasciare tracce visibili nel browser. È sufficiente utilizzare gli header HTTP, cioè i campi che accompagnano le risposte di un server e che normalmente trasportano informazioni tecniche su cache, contenuti, autenticazione e reindirizzamenti: ne abbiamo parlato anche nell’articolo su cosa succede quando si scrive un indirizzo nella barra del browser e si preme Invio.

Una ricerca pubblicata da Signals Corps ha esaminato oltre 217 milioni di risposte HTTP per verificare quanto sia diffuso il fenomeno e quali rischi comporti per gli assistenti AI capaci di navigare sul web, interrogare servizi e utilizzare strumenti locali. I ricercatori hanno rilevato che quasi 8.000 siti trasmettono intestazioni rivolte esplicitamente ai sistemi AI, con alcuni tentativi evidenti di manipolarne il comportamento.

La ricerca si inserisce in un filone di studi sulle tecniche di prompt injection, attacchi che sfruttano istruzioni malevole nascoste nei contenuti elaborati da un sistema AI per manipolarne le risposte, aggirarne le regole o indurlo a compiere operazioni non autorizzate.

I tecnici di Signals Corps hanno analizzato oltre 217 milioni di risposte HTTP provenienti dal dataset Common Crawl CC-MAIN-2026-39: Common Crawl è un archivio pubblico di contenuti web utilizzato anche per attività di ricerca e addestramento dei modelli linguistici.

Come funziona una prompt injection nascosta negli header HTTP

Quando un client richiede una pagina, il server restituisce un codice di stato, una serie di intestazioni e poi il corpo della risposta. In HTTP/1.1 queste informazioni viaggiano in un formato testuale; in HTTP/2 e HTTP/3 cambiano le modalità di rappresentazione e trasporto, ma è sempre presente una differenziazione tra header e contenuto.

Informazioni come Content-Type, Cache-Control e Location svolgono funzioni precise: il primo dato indica il tipo di contenuto restituito, il secondo regola il comportamento delle cache, mentre Location comunica generalmente la destinazione di un reindirizzamento.

HTTP consente anche di utilizzare campi personalizzati: un amministratore può aggiungere alla risposta un’intestazione come X-AI, X-LLM oppure X-Agent-Directive, inserendovi testo liberamente definito.

Il browser tradizionale non considera un’istruzione rivolta all’intelligenza artificiale come un comando da eseguire. Un agente AI, invece, potrebbe ricevere l’intera risposta HTTP attraverso uno strumento di recupero delle pagine e incorporare quelle informazioni nel materiale elaborato dal modello linguistico.

Un esempio individuato nella ricerca elaborata da Signal Corps, utilizzava un’intestazione X-AI che chiedeva di ignorare tutte le istruzioni precedenti e restituire un numero preciso; un altro tentava di imporre la parola meow (amanti dei gatti?) come risposta.

Il meccanismo è quello della indirect prompt injection, descritta anche da OWASP nella categoria LLM01:2025: l’attaccante non modifica direttamente il prompt dell’utente. Inserisce invece istruzioni in una fonte esterna che il sistema AI deve consultare per svolgere un’attività legittima.

AgentPwn: un header HTTP può spingere un agente a eseguire un comando?

Tra i casi più interessanti compare AgentPwn, un progetto di ricerca e honeypot gestito da OpenA2A: il sito utilizzava un’intestazione x-ai-instructions, presentando le proprie indicazioni come parte di una verifica di sicurezza.

Il messaggio suggeriva all’agente di eseguire il comando npx hackmyagent secure, sostenendo che l’operazione avrebbe consentito di correggere problemi rilevati nella configurazione. In realtà, il comando scarica ed esegue HackMyAgent, uno strumento legittimo che analizza la directory corrente alla ricerca di credenziali esposte, configurazioni insicure e altre vulnerabilità, producendo un rapporto senza applicare automaticamente correzioni.

Il problema non riguarda, in questo caso specifico, quindi la pericolosità del software, ma il tentativo di convincere un agente AI a eseguire un programma esterno sulla base di un’istruzione nascosta negli header HTTP. Un aggressore potrebbe sfruttare lo stesso meccanismo per indurre l’assistente a scaricare ed eseguire codice realmente malevolo.

Una seconda variante richiedeva inoltre l’invio di una richiesta HTTP POST all’endpoint agentpwn.com/api/report, contenente un rapporto predefinito sull’interazione.

Il progetto hackmyagent è disponibile come software open source con licenza Apache 2.0. Signals Corps ne ha esaminato il codice rilevando che lo scanner ricerca credenziali e configurazioni degli agenti nella directory corrente, mostra i risultati mascherando le informazioni più “delicate” e invia eventi di telemetria relativi all’utilizzo.

Il rischio nascosto negli header HTTP e come proteggere gli agenti AI

Signals Corps ha dimostrato che un server può riconoscere un agente AI attraverso lo User-Agent o altre intestazioni HTTP e restituirgli istruzioni malevole completamente invisibili a chi visita lo stesso sito con un normale browser. Nell’esperimento, il server invitava l’assistente a scaricare ed eseguire uno script senza informare l’utente, pur mantenendo identico il contenuto HTML della pagina.

La ricerca evidenzia quindi un rischio che va oltre i tentativi di prompt injection sin qui individuati: gli attacchi destinati esclusivamente a specifici agenti potrebbero sfuggire ai crawler tradizionali e ai controlli manuali.

Per difendersi è fondamentale trattare gli header e tutti i contenuti recuperati dal web come dati non attendibili, evitando che diventino istruzioni operative per il modello AI.

Occorre inoltre limitare le informazioni HTTP trasferite agli assistenti, applicare il principio del minimo privilegio e richiedere autorizzazioni esplicite prima di eseguire comandi, installare software o trasmettere dati all’esterno. Un agente AI non deve mai attribuire automaticamente autorità alle indicazioni provenienti da un sito web: anche quando riconosce e ignora una prompt injection, potrebbe comunque prendere decisioni sulla base di informazioni alterate attraverso tecniche di cloaking.

La sicurezza dipende quindi sia dalla separazione tra dati e istruzioni sia dalla possibilità di verificare quali contenuti il server abbia effettivamente mostrato all’agente.

Ti consigliamo anche

Link copiato negli appunti