Piratage de l'IA
Ressources de sécurité IA

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

Garak

Scanner de vulnérabilités LLM avec des sondes spécifiques à RAG

Afficher →

Apache RAG

Cadre de test de sécurité spécifique à RAG

Afficher →

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
        }
```
AH
AI Hacking Team

The AI Hacking team researches and documents AI/LLM security vulnerabilities, red teaming techniques, and defensive strategies. Our guides are based on real-world pentesting experience and continuous monitoring of the AI security landscape.

Stay Ahead of AI Security

Get the latest AI/LLM security research, OWASP updates, and new vulnerabilities delivered straight to your inbox.