RAG Security : Guide complet
Securing Retrieval-Augmented Generation systems against document poisoning, retrieval manipulation, and embedding attacks
Updated: August 2026 • Partie de OWASP LLM08
Qu'est-ce que 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. Requête de l'utilisateur
L'utilisateur soumet une question ou une invite au système
2. Intégration
La requête est convertie en intégration vectorielle
3. Récupération
Documents similaires récupérés à partir de la base de données vectorielle
4. Augmentation
Contexte récupéré ajouté à l'invite
5. Génération
LLM génère une réponse en utilisant le contexte
Le paradoxe de la confiance
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.
Vecteurs d'attaque
1. Empoisonnement de documents
Injecter du contenu malveillant dans les documents stockés dans la base de connaissances.
Comment ça marche
- L'attaquant télécharge ou injecte des documents malveillants
- Les documents sont intégrés et stockés dans une base de données vectorielle
- Lorsqu'une requête pertinente est effectuée, un document empoisonné est récupéré
- LLM intègre un contexte malveillant dans la réponse
Impact
- 90% success avec seulement 5 documents empoisonnés
- Fonctionne même dans des bases de données contenant des millions de documents
- Peut provoquer des résultats nuisibles, biaisés ou incorrects
- Difficile à détecter après le déploiement
2. Manipulation de la récupération
Manipulation des documents récupérés pour influencer les résultats.
Comment ça marche
- L'attaquant crée des requêtes pour déclencher une récupération spécifique
- Exploite les faiblesses de l'algorithme de classement
- Utilise la similarité sémantique pour détourner la récupération
- Manipulation entre utilisateurs dans les systèmes partagés
Impact
- Force la récupération du contenu contrôlé par l'attaquant
- Peut supprimer le contenu légitime
- Permet une manipulation ciblée
- Rompe la confiance dans la qualité de la récupération
3. Intégration de l'inversion
Récupération des données originales de intégrations vectorielles.
Comment ça marche
- L'attaquant a accès à la base de données vectorielles
- Utilise des techniques d'inversion sur les intégrations
- Reconstruit le texte original à partir de vecteurs
- Récupère les données sensibles intégrées
Impact
- Recover 50-70% of input words
- Exposer les données sensibles dans les intégrations
- Violations de la vie privée
- Problèmes de conformité (RGPD, etc.)
4. Attaques entre locataires
Exploitation de l'infrastructure RAG partagée dans des systèmes multi-locataires.
Comment ça marche
- L'attaquant est l'un des locataires du système partagé
- Injecte du contenu qui affecte d'autres locataires
- Exploite la base de données vectorielles partagée
- Récupère les données d'autres locataires
Impact
- Fuite de données entre locataires
- Accès non autorisé aux données des concurrents
- Violations de conformité
- Dommages à la réputation
CVE du monde réel
Vulnérabilités documentées dans les systèmes RAG.
| ID CVE | Produit | Description | 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 |
Stratégies de défense
1. Sécurité de la phase d'ingestion
Validation des documents
- Analyser tous les documents à la recherche de logiciels malveillants
- Valider le format et la structure du document
- Rechercher des modèles de contenu suspects
- Limiter les types de documents autorisés
Filtrage de contenu
- Supprimer les informations personnelles avant l'intégration
- Filtrer les modèles de données sensibles
- Bloquer les modèles malveillants connus
- Implémenter des listes d'autorisation/de blocage
Contrôles d'accès
- Valider la source des documents
- Implémenter RBAC pour l'ingestion
- Piste d'audit pour tous les téléchargements
- Mettre en quarantaine les nouveaux documents
2. Sécurité de la phase de récupération
Assainissement des requêtes
- Valider et nettoyer les requêtes des utilisateurs
- Détecter les tentatives d'injection
- Limiter la complexité des requêtes
- Limitation du débit
Filtrage de récupération
- Mettre en œuvre le reclassement de la sécurité
- Références croisées avec des sources fiables
- Détectez les modèles de récupération anormaux
- Limiter le nombre de documents
Isolement multi-tenant
- Espaces de noms vectoriels séparés
- Limites strictes des locataires
- Prévention des requêtes entre locataires
- Chiffrement par locataire
3. Sécurité de la phase de génération
Validation des sorties
- Valider les sorties LLM
- Vérifier le contenu injecté
- Vérification des faits par rapport aux sources
- Filtrage de contenu
Vérification du contexte
- Vérifier l'authenticité du contenu récupéré
- Détecter les tentatives de manipulation
- Signaler les modèles de contexte inhabituels
- Enregistrer toute l'utilisation du contexte
Human-in-the-Loop
- Examiner les sorties sensibles
- Approuver les actions à haut risque
- Capacité de remplacement manuel
- Chemins d'escalade
4. Sécurité des données
Chiffrement
- Cryptage des vecteurs au repos
- TLS pour les données en transit
- Meilleures pratiques de gestion des clés
- envisagez le cryptage homomorphique
Sécurité de la base de données vectorielle
- Authentification forte
- Isolement du réseau
- Audits de sécurité réguliers
- Gestion des correctifs
Protection de la vie privée
- Minimisation des données
- Détection et suppression des PII
- Politiques de rétention
- Support du droit à la suppression
Méthodologie de test
Liste de contrôle des tests de sécurité RAG
- Tests d'injection de documents
- Tests de manipulation de récupération
- Intégrer des tentatives d'inversion
- Tests d'isolement entre locataires
- Tests de fuite PII
- Tests de débordement de contexte
- Tests de manipulation de classement
- Tests de contournement d'authentification
- Tests d'injection d'API
- Tests de déni de service
- Tests d'exfiltration de données
- Audit de conformité
Outils de test
Scanners de base de données vectorielles
Outils pour tester la sécurité des bases de données vectorielles
Afficher →Exemples de code
Exemple de validation de document
```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
}
```