Sicurezza RAG: guida completa
Securing Retrieval-Augmented Generation systems against document poisoning, retrieval manipulation, and embedding attacks
Updated: August 2026 • Parte di OWASP LLM08
Cos'è RAG?
Retrieval-Augmented Generation (RAG) is an AI architecture that combines large language models with external knowledge retrieval. Enterprise LLM deployments now use RAG extensively, making its security critical.
1. Query dell'utente
L'utente invia una domanda o un prompt al sistema
2. Incorporamento
La query viene convertita in incorporamento di vettori
3. Recupero
Documenti simili recuperati dal DB vettoriale
4. Aumento
Contesto recuperato aggiunto al prompt
5. Generazione
LLM genera una risposta utilizzando il contesto
Il paradosso della fiducia
RAG systems have a fundamental security flaw: user queries are treated as untrusted input, but retrieved context is implicitly trusted - even though both enter the same prompt. This creates a significant attack surface that traditional security doesn't address.
Vettore di attacco
1. Avvelenamento da documenti
Inserimento di contenuti dannosi documenti archiviati nella base di conoscenza.
Come funziona
- L'autore dell'attacco carica o inserisce documenti dannosi
- I documenti sono incorporati e archiviati nel database vettoriale
- Quando viene effettuata una query pertinente, viene recuperato il documento avvelenato
- LLM incorpora un contesto dannoso nella risposta
Impatto
- 90% success con soli 5 documenti avvelenati
- Funziona anche in database con milioni di documenti
- Può causare output dannosi, distorti o errati
- Difficile da rilevare dopo la distribuzione
2. Manipolazione del recupero
Manipolazione dei documenti recuperati per influenzare gli output.
Come funziona
- L'aggressore crea query per attivare il recupero specifico
- Sfrutta i punti deboli dell'algoritmo di classificazione
- Utilizza la somiglianza semantica per il recupero degli hijack
- Manipolazione tra utenti in sistemi condivisi
Impatto
- Forza il recupero di contenuti controllati dagli aggressori
- Può sopprimere contenuti legittimi
- Consente la manipolazione mirata
- Diminuisce la fiducia nella qualità del recupero
3. Incorporamento dell'inversione
Recuperare i dati originali da incorporamenti di vettori.
Come funziona
- L'attaccante ottiene l'accesso al database vettoriale
- Utilizza tecniche di inversione sugli incorporamenti
- Ricostruisce il testo originale da vettori
- Recupera dati sensibili incorporati
Impatto
- Recover 50-70% of input words
- Esporre dati sensibili negli incorporamenti
- Violazioni della privacy
- Problemi di conformità (GDPR, ecc.)
4. Attacchi tra tenant
Sfruttare l'infrastruttura RAG condivisa in sistemi multi-tenant.
Come funziona
- L'aggressore è un tenant del sistema condiviso
- Inserisce contenuti che colpiscono altri tenant
- Sfrutta il database vettoriale condiviso
- Recupera i dati da altri tenant
Impatto
- Perdita di dati tra tenant
- Accesso non autorizzato ai dati della concorrenza
- Violazioni di conformità
- Danno alla reputazione
CVE reali
Vulnerabilità documentate nei sistemi RAG.
| ID CVE | Prodotto | Descrizione | Gravità | CVSS |
|---|---|---|---|---|
CVE-2025-68700 |
RAGFlow | RCE via Canvas CodeExec component - untrusted data parsed with eval() | Critical | 9.1 |
CVE-2025-69286 |
RAGFlow | Insecure API key generation allows mutual token derivation (authentication bypass) | Critical | 8.9 |
CVE-2025-25282 |
RAGFlow | IDOR vulnerability allowing cross-tenant access and unauthorized user addition | High | 8.1 |
CVE-2025-69286 |
RAGFlow | Token generation using same URLSafeTimedSerializer for API keys | High | 8.9 |
GHSA-8xw3-v6c2-j84j |
RAGFlow | RCE via stdout parsing in CodeExec component | High | 8.5 |
Strategie di difesa
1. Sicurezza della fase di acquisizione
Convalida dei documenti
- Scansiona tutti i documenti per individuare malware
- Convalida del formato e della struttura del documento
- Verifica la presenza di modelli di contenuti sospetti
- Limita tipi di documenti consentiti
Filtro dei contenuti
- Rimuovi le informazioni personali prima dell'incorporamento
- Filtra modelli di dati sensibili
- Blocca modelli dannosi noti
- Implementare elenchi di autorizzazione/blocco
Controlli di accesso
- Convalida l'origine dei documenti
- Implementa RBAC per l'acquisizione
- Traccia di controllo per tutti i caricamenti
- Metti in quarantena i nuovi documenti
2. Sicurezza della fase di recupero
Sanitizzazione delle query
- Convalida e disinfetta le query degli utenti
- Rilevare tentativi di iniezione
- Limita la complessità delle query
- Limitazione della velocità
Filtro di recupero
- Implementa la riclassificazione della sicurezza
- Riferimento incrociato con fonti attendibili
- Rileva modelli di recupero anomali
- Limitare il numero di documenti
Isolamento multi-tenancy
- Spazi dei nomi vettoriali separati
- Confini rigorosi dei tenant
- Prevenzione delle query tra tenant
- Crittografia per tenant
3. Sicurezza in fase di generazione
Convalida dell'output
- Convalida gli output LLM
- Verifica la presenza di contenuti inseriti
- Verifica dei fatti rispetto alle fonti
- Filtraggio dei contenuti
Verifica del contesto
- Verifica l'autenticità del contenuto recuperato
- Rileva tentativi di manipolazione
- Segnala modelli di contesto insoliti
- Registra tutto l'utilizzo del contesto
Human-in-the-Loop
- Esamina gli output sensibili
- Approvare azioni ad alto rischio
- Funzionalità di override manuale
- Percorsi di escalation
4. Sicurezza dei dati
Crittografia
- Crittografa i vettori a riposo
- TLS per i dati in transito
- Best practice per la gestione delle chiavi
- Considera la crittografia omomorfica
Sicurezza DB vettoriale
- Autenticazione forte
- Isolamento della rete
- Controlli di sicurezza regolari
- Gestione delle patch
Protezione della privacy
- Minimizzazione dei dati
- Rilevamento e rimozione PII
- Politiche di conservazione
- Supporto per il diritto di cancellazione
Metodologia di prova
Elenco di controllo del test di sicurezza RAG
- Test di inserimento di documenti
- Test di manipolazione del recupero
- Incorporamento di tentativi di inversione
- Test di isolamento tra tenant
- Test di perdita PII
- Test di overflow del contesto
- Classifica dei test di manipolazione
- Test di bypass dell'autenticazione
- Test di iniezione API
- Test di Denial of Service
- Test di esfiltrazione dei dati
- Verifica di conformità
Strumenti di test
Esempi di codici
Esempio di convalida del documento
```python
import re
from typing import List
class RAGDocumentValidator:
SUSPICIOUS_PATTERNS = [
r"ignore previous instructions",
r"system prompt:",
r"{{.*}}",
r"you are now dan",
]
PII_PATTERNS = [
r"\b\d{3}-\d{2}-\d{4}\b", # SSN
r"\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b", # Email
r"\b\d{16}\b", # Credit card
]
def validate_document(self, content: str) -> dict:
"""Validate document before embedding."""
warnings = []
blocked = False
# Check for suspicious patterns
for pattern in self.SUSPICIOUS_PATTERNS:
if re.search(pattern, content, re.IGNORECASE):
warnings.append(f"Suspicious pattern: {pattern}")
blocked = True
# Check for PII
for pattern in self.PII_PATTERNS:
if re.search(pattern, content):
warnings.append(f"PII detected: {pattern}")
return {
"valid": not blocked,
"warnings": warnings,
"pii_detected": len([w for w in warnings if "PII" in w]) > 0
}
```