Sicurezza contro il Prompt Injection e i Guardrail degli LLM
Gli LLM non hanno un confine netto tra istruzioni e dati. Tutto ciò che si trova nella finestra di contesto è un unico flusso di token. Il prompt injection avviene quando i dati dell'attaccante agiscono come istruzioni. Non è possibile raggiungere la sicurezza solo tramite il filtraggio. Bisogna gestirla con una strategia di difesa in profondità (defense-in-depth).
Il fallimento delle difese comuni:
- Blocklist di parole chiave: Gli attaccanti utilizzano sinonimi, errori di ortografia o lingue diverse per aggirarle. Filtrare le stringhe non significa filtrare l'intento.
- Oscuramento dell'output (Output Redaction): Gli attaccanti possono frammentare o codificare i segreti in modo che il confronto letterale delle stringhe fallisca.
- LLM Judges: Un modello separato può essere manipolato tramite ingegneria sociale per credere che un segreto sia innocuo.
- Revisione umana: Gli esseri umani vedono il testo renderizzato, non i byte grezzi. Non possono vedere i caratteri nascosti utilizzati nell'ASCII smuggling.
L'ASCII Smuggling è una minaccia importante. Utilizza caratteri invisibili come i Unicode Tags o gli spazi a larghezza zero (zero-width spaces) per nascondere le istruzioni. Il modello le legge, ma l'essere umano non vede nulla. Ciò consente il furto di identità (identity spoofing) e l'esfiltrazione di dati tramite email o calendari.
Come difendere la propria applicazione:
- Sanificare i payload grezzi: Rimuovere i caratteri di controllo e i caratteri a larghezza zero prima che raggiungano il modello.
- Utilizzare allowlist: Definire le categorie Unicode specifiche di cui si ha bisogno invece di cercare di rintracciare quelle dannose.
- Normalizzare i dati: Utilizzare la normalizzazione NFKC su tutti gli input.
- Minimizzare i segreti: Non inserire dati sensibili nella finestra di contesto se il modello non ne ha bisogno.
- Trattare il RAG come non attendibile: Assumere che qualsiasi documento recuperato per un modello sia un potenziale vettore di injection.
- Monitorare le anomalie: Segnalare gli input in cui la lunghezza visibile differisce dal conteggio dei code-point grezzi.
La sicurezza è un difetto della pipeline, non solo un difetto del modello. La soluzione risiede nel codice della propria applicazione.
Fonte: https://dev.to/geekaara/llm-prompt-injection-guardrail-security-glm
Community di apprendimento opzionale: https://t.me/GyaanSetuAi