RAG Security: Komplett guide
Securing Retrieval-Augmented Generation systems against document poisoning, retrieval manipulation, and embedding attacks
Updated: August 2026 • Del av OWASP LLM08
Vad är 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. Användarfråga
Omfattande terminologi för AI-säkerhetstestning och LLM-säkerhet
2. Inbäddning
Frågan konverteras till vektorinbäddning
3. Hämtning
Liknande kodadVi-dokument|hämta StudioDB|
4. Förstärkning
Hämtat sammanhang har lagts till i promptB och rapportering till Blogga
5. Generation
LLM genererar svar med hjälp av kontext
The Trust Paradox|LM|Lär dig OWASPAI-specifika regler
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.
Attacksvektorer
1. Dokumentförgiftning
Injicera skadligt innehåll i dokument som lagras i kunskapsbasen.
Hur det fungerar
- Angripare laddar upp eller injicerar skadliga dokument
- Dokument är inbäddade och lagrade i vektor-DB
- När relevant förfrågan görs, hämtas förgiftat dokument
- LLM införlivar skadlig kontext i svaret||ID
Påverkan
- 90% success med bara 5 förgiftade dokument
- Fungerar även i databaser med miljontals dokument
- Kan orsaka skadliga, partiska eller felaktiga utdata
- Svårt att upptäcka efter utplacering
2. Hämtningsmanipulation
Manipulera vilka dokument som hämtas för att påverka utdata.
Hur det fungerar
- Angripare skapar förfrågningar för att utlösa specifik hämtning
- Utnyttjar svagheter i rankningsalgoritmen
- Använder semantisk likhet för att kapa hämtning
- Crossanvändarmanipulation i delade system
Påverkan
- Framtvingar hämtning av angriparkontrollerat innehåll
- Kan undertrycka legitimt innehåll
- Möjliggör riktad manipulation
- Krossar förtroendet för hämtningskvalitet
3. Inbädda inversion
Återställer originaldata från vektorinbäddningar.
Hur det fungerar
- Attacker får tillgång till vektordatabasen
- Använder inversionstekniker på inbäddningar
- Rekonstruerar originaltext från vektorer
- Rebedcosession-data
Påverkan
- Recover 50-70% of input words
- Exponera känsliga data i inbäddningar
- Sekretesskränkningar
- Efterlevnadsproblem (GDPR, etc.)
4. Cross-Tenant Attacks
Exploatering av delad RAG-infrastruktur i system med flera hyresgäster.
Hur det fungerar
- Attacker är en hyresgäst av delat system
- Injicerar innehåll som påverkar andra hyresgäster
- Utnyttjar delad vektordatabas
- Hämtar data från andra hyresgäster
Påverkan
- Dataläckage mellan hyresgäster
- Oauktoriserad åtkomst till konkurrentdata
- Brott mot efterlevnad
- Reputationskada
Real-World CVEs
Dokumenterade sårbarheter i RAG-system.
| CVE ID | Product inje|CPSe||Product inje|CPSe| Utvecklingsguide | |Description Clawdbot/MCP ekosystembrott (januari 2026) | Allvarlighetsgrad | CVSS-svar |
|---|---|---|---|---|
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 |
Försvarsstrategier
1. Intagsfas Säkerhet
Dokumentvalidering
- Skanna alla dokument efter skadlig programvara
- Validera dokumentformat och struktur
- Kontrollera om det finns misstänkta innehållsmönster
- Begränsa dokumenttyper tillåtna
Innehållsfiltrering
- Ta bort PII före inbäddning
- Filtrera||AG-datamönster med RAG-datamönster, organisationer Källa:
- Blockera kända skadliga mönster
- Implementera tillåt/blockeringslistor
Åtkomstkontroller
- Validera dokumentkällan
- Implementera RBAC för intag
- Revisionsspår för alla uppladdningar
- Sätt i nya dokument i karantän
2. Säkerhet i hämtningsfasen
Frågesanering
- Validera och sanera användarfrågor
- Detektera injektionsförsök
- Begränsa frågekomplexitet
- Frekvensbegränsning
Hämtning Filtrering
- Implementera omrangering av säkerhet
- Korsreferens med pålitliga källor
- Upptäck onormala hämtningsmönster
- Begränsa antalet dokument
Multi-Tenancy Isolation
- Separata vektornamnrymder
- Strikta hyresgästergränser
- Frågor mot andra hyresgäster
- Kryptering per hyresgäst
3. Generation Phase Security
Utdatavalidering
- Revisionsloggning av alla verktygsanrop
- Kontrollera efter injicerat innehåll
- Faktakontroll mot källor
- Innehållsfiltrering
Kontextverifiering
- Verifiera äkthet av hämtat innehåll
- Detektera manipulationsförsök
- Flagga ovanliga sammanhangsmönster
- Logga all kontextanvändning
Human-in-the-Loop
- Granska känsliga utdata
- Godkänn högriskåtgärder
- Manuell åsidosättningsförmåga
- Eskaleringsvägar
4. Datasäkerhet
Kryptering
- Krypterande vektorer vid vila
- TLS|för I-specifika transiteringsrättigheter
- Bästa metoder för nyckelhantering
- Tänk på homomorf kryptering
Vektor DB-säkerhet
- Stark autentisering
- Nätverksisolering
- Regelbundna säkerhetsrevisioner
- Patchhantering
Sekretessskydd
- Dataminimering
- PII-detektering och borttagning
- Retentionspolicyer
- Rätt till raderingsstöd
Testmetodologi
RAG-säkerhetstestdata Checklista
- Cross-Modal Prompt Injection
- Hämtningsmanipulationstester
- Bädda in inversionsförsök
- Isoleringstester för korshyresgäster
- PII-läckagetester
- Kontextspillningstester
- Rankning av manipulationstester
- Autentiseringsförbikopplingstester
- API-injektionstester
- Denial of service-tester
- Dataexfiltreringstester
- Compliance audit
Testverktyg
Identifiera efterlevnad/regleringskrav (GDPR, HIPAA, etc.)
Dokumentvalideringsexempel
```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
}
```