AI e LLM

Prompt injection: cos’è e come proteggere il vostro chatbot

4 min di lettura

Sempre più aziende integrano un modello linguistico nei propri servizi: un chatbot per i clienti, un assistente interno che risponde sui documenti aziendali, un agente che apre ticket o compila ordini. Insieme alle opportunità arriva una vulnerabilità nuova, che la OWASP mette al primo posto nella sua Top 10 per le applicazioni LLM: la prompt injection.

Cos’è la prompt injection

Un modello linguistico riceve insieme le istruzioni dello sviluppatore (il prompt di sistema) e i testi da elaborare (le domande dell’utente, i documenti, le pagine web). Non ha un modo affidabile per distinguere le une dagli altri. La prompt injection sfrutta proprio questo: un testo costruito per essere interpretato come istruzione anziché come dato, che fa ignorare al modello le regole previste.

È l’equivalente, per i modelli linguistici, della SQL injection per i database. Con una differenza: non esiste ancora una soluzione definitiva.

Diretta e indiretta

Prompt injection diretta

È l’utente stesso a scrivere il messaggio malevolo: chiede al chatbot di dimenticare le istruzioni, di rivelare il prompt di sistema, di comportarsi in un altro modo. È la forma più nota e, spesso, la meno pericolosa.

Prompt injection indiretta

Le istruzioni sono nascoste nei contenuti che il modello legge: un documento caricato, un’email, una pagina web, un campo di un database. Chi usa l’applicazione non vede nulla, ma il modello esegue. È la forma più insidiosa, perché l’attaccante non ha bisogno di accedere all’applicazione: gli basta far arrivare un testo dove il modello lo leggerà.

Perché è pericolosa

Il danno dipende da cosa il modello può vedere e fare:

  • Fuga di dati: il modello rivela informazioni presenti nel contesto, documenti di altri utenti, il prompt di sistema con dettagli interni.
  • Azioni non autorizzate: se il modello può chiamare strumenti (inviare email, modificare record, eseguire ordini), un input malevolo può fargliele eseguire.
  • Esfiltrazione silenziosa: il modello viene indotto a inserire dati in un link o in un’immagine che, una volta visualizzati, li inviano all’attaccante.
  • Danni alla reputazione: risposte offensive, false o compromettenti a nome dell’azienda.

Le contromisure che funzionano

Non esiste un filtro che blocchi tutte le prompt injection. La protezione efficace è architetturale:

  • Minimo privilegio: il modello deve poter vedere e fare solo ciò che serve. Ogni strumento affidato va trattato come un permesso.
  • Permessi applicati fuori dal modello: chi può leggere quali documenti lo decide il codice, non il prompt. Nei sistemi RAG il filtro per utente va fatto prima di passare i documenti al modello.
  • Conferma umana per le azioni rilevanti: pagamenti, invii, cancellazioni non devono partire solo perché il modello lo ha deciso.
  • Output trattati come input non fidati: ciò che il modello restituisce va validato prima di finire in una pagina web, una query o un comando.
  • Separazione dei contenuti: i testi esterni vanno marcati come dati e mai concatenati alle istruzioni senza controllo.
  • Monitoraggio e limiti: registrare le interazioni, limitare le richieste, accorgersi di comportamenti anomali.

Usare un provider affidabile non basta

OpenAI, Anthropic, Google e gli altri provider proteggono il modello, ma non possono proteggere la vostra applicazione: prompt di sistema, dati passati al modello, strumenti collegati e controlli sugli output sono responsabilità di chi costruisce il servizio. È lì che si trovano le vulnerabilità.

Come si verifica

Il modo più affidabile è un test di sicurezza specifico, che unisca le tecniche della OWASP Top 10 for LLM Applications al classico web application penetration test, perché un chatbot è prima di tutto un’applicazione web. Lo descriviamo nella pagina penetration test di applicazioni AI, chatbot e LLM. Se l’applicazione è stata anche sviluppata con l’aiuto dell’AI, vale la pena leggere i rischi del vibe coding.

Leggi anche

Avete domande su questo tema?

Raccontateci la vostra situazione: vi diciamo in modo chiaro cosa serve e cosa no.