RAG Security: Complete Guide
Securing Retrieval-Augmented Generation systems against document poisoning, retrieval manipulation, and embedding attacks
Updated: August 2026 • Část OWASP LLM08
Co je 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. Dotaz uživatele
Strukturovaný přístup k testování umělé inteligence – od plánování po hlášení.
2. Vkládání
Dotaz je převeden na vektorové vkládání
3. Získávání
Podobné dokumenty získané z vektorové DB aplikace Visual Studio||
4. Rozšíření
Načtený kontext byl přidán do výzvy
5. Generace
LLM generuje odpověď pomocí kontextu
The Trust Paradox
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.
Útočné vektory
1. Dokument otravy
Vložení škodlivého obsahu do dokumentů uložených ve znalostní bázi.
Jak to funguje
- Útočník nahrává nebo vkládá škodlivé dokumenty
- Dokumenty jsou vloženy a uloženy ve vektorové DB
- Při příslušném dotazu se načte otrávený dokument
- LLM začleňuje do odpovědi škodlivý kontext
Dopad
- 90% success s pouhými 5 otrávenými dokumenty
- Funguje i v databázích s miliony dokumentů
- Může způsobit škodlivé, neobjektivní nebo nesprávné výstupy
- Po nasazení je obtížné odhalit
2. Manipulace s vyhledáváním
Manipulace s tím, které dokumenty se načítají za účelem ovlivnění výstupů.
Jak to funguje
- Vytváření dotazů útočníků ke spuštění konkrétního vyhledávání
- Využívá slabiny hodnotícího algoritmu
- Využívá sémantickou podobnost s vyhledáváním únosů
- Manipulace mezi uživateli ve sdílených systémech
Dopad
- Vynutí načítání obsahu řízeného útočníkem
- Dokáže potlačit legitimní obsah
- Umožňuje cílenou manipulaci
- Narušuje důvěru v kvalitu vyhledávání
3. Inverze vkládání
Obnovení původních dat z vektorových vložení.
Jak to funguje
- Útočník|databáze||com získává přístup k vektoru||com
- Používá techniky inverze u vložení
- Rekonstruuje původní text z vektorů
- Obnovuje citlivá vložená data
Dopad
- Recover 50-70% of input words
- Vystavení citlivých dat ve vložení
- Porušení ochrany osobních údajů
- Problémy s dodržováním předpisů (GDPR atd.)
4. Cross-Tenant Attacks
Využívání sdílené infrastruktury RAG v systémech s více nájemci.
Jak to funguje
- Attacker je jeden tenant sdíleného systému
- Vkládá obsah, který ovlivňuje ostatní nájemníky
- Využívá sdílenou vektorovou databázi
- Načítá data od ostatních tenantů
Dopad
- Únik dat mezi tenanty
- Neoprávněný přístup k údajům konkurence
- Porušení souladu
- Škody na pověsti
CVE ze skutečného světa
Zdokumentované zranitelnosti v systémech RAG.
| CVE ID | Vývoj produktu na serveru | 1 Clawdbot/MCP Ecosystem Breach (leden 2026) | Závažnost | 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 |
Obranné strategie
1. Zabezpečení fáze příjmu
Ověření dokumentů
- Prohledat všechny dokumenty na výskyt malwaru
- Ověřit formát a strukturu dokumentu
- Zkontrolovat vzory podezřelého obsahu
- Povolené typy dokumentů
Filtrování obsahu
- Před vložením odstraňte PII
- Filtrování vzorů citlivých dat organizací využívajících RAG, Zdroj:|šipka| nesprávně
- Blokovat známé škodlivé vzory
- Implementujte seznamy povolení/blokování
Ovládání přístupu
- Ověřit zdroj dokumentů
- Implementace RBAC pro příjem
- Audit trail pro všechna nahrávání
- Umístit nové dokumenty do karantény
2. Zabezpečení fáze načítání
Vyčištění dotazů
- Ověření a dezinfekce uživatelských dotazů
- Zjištění pokusů o vložení
- Omezit složitost dotazu
- Omezení četnosti
Filtrování načítání
- Implementujte zabezpečení změny hodnocení
- Křížové odkazy s důvěryhodnými zdroji
- Detekce anomálních vzorců vyhledávání
- Omezit počet dokumentů
Multi-Tenancy Isolation
- Samostatné vektorové jmenné prostory
- Přísné hranice pro nájemce
- Prevence dotazů mezi nájemci
- Šifrování na nájemce
3. Zabezpečení ve fázi generování
Ověření výstupu
- Ověřit výstupy LLM
- Kontrola vloženého obsahu
- Ověření faktů se zdroji
- Filtrování obsahu
Ověření kontextu
- Ověření pravosti načteného obsahu
- Detekce pokusů o manipulaci
- Označit neobvyklé kontextové vzory
- Zaznamenávání veškerého použití kontextu
Human-in-the-Loop
- Zkontrolujte citlivé výstupy
- Schvalování vysoce rizikových akcí
- Schopnost ručního přepsání e-mailu
- Cesty eskalace
4. Zabezpečení dat
Šifrování
- Šifrování v klidu||Ecryptunmbedding vektory v klidu
- TLS pro data v přenosu
- Osvědčené postupy správy klíčů
- Zvažte homomorfní šifrování
Zabezpečení vektorové databáze
- Silné ověřování
- Izolace sítě
- Pravidelné bezpečnostní audity
- Správa oprav
Ochrana soukromí
- Minimalizace dat
- Detekce a odstranění PII
- Zásady uchovávání
- Právo na podporu smazání
Metodika testování
Kontrolní seznam testu zabezpečení RAG
- Secure Průvodce
- Test manipulace s vyhledáváním
- Pokusy o inverzi vložení
- Testy izolace mezi klienty
- Testy úniku PII
- Testy přetečení kontextu
- Hodnocení manipulačních testů
- Testy vynechání autentizace
- Testy vkládání API
- Testy odmítnutí služby
- Testy exfiltrace dat
- Audit souladu
Testovací nástroje
Příklady shody s kódy/certifikace a požadavky na zabezpečení||I Bezpečnostní požadavky| (GDPR, HIPAA atd.)
Příklad ověření dokumentu
```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
}
```