Bezpieczeństwo RAG: kompletny przewodnik
Securing Retrieval-Augmented Generation systems against document poisoning, retrieval manipulation, and embedding attacks
Updated: August 2026 • Część OWASP LLM08
Co to jest 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. Zapytanie użytkownika
Użytkownik przesyła pytanie lub monit do systemu
2. Osadzanie
Zapytanie jest konwertowane do osadzania wektorowego
3. Pobieranie
Podobne dokumenty odzyskane z wektorowej bazy danych
4. Rozszerzanie
Pobrany kontekst dodano do monitu
5. Generacja
LLM generuje odpowiedź na podstawie kontekstu
Paradoks zaufania
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.
Wektory ataku
1. Zatrucie dokumentów
Wstrzykiwanie złośliwej zawartości do dokumentów przechowywanych w bazie wiedzy.
Jak to działa
- Atakujący przesyła lub wprowadza złośliwe dokumenty
- Dokumenty są osadzone i przechowywane w wektorowej bazie danych
- Po wykonaniu odpowiedniego zapytania pobierany jest zatruty dokument
- LLM włącza złośliwy kontekst do odpowiedzi
Wpływ
- 90% success tylko 5 zatrutych dokumentów
- Działa nawet w bazach danych zawierających miliony dokumentów
- Mogą powodować szkodliwe, stronnicze lub nieprawidłowe wyniki
- Trudne do wykrycia po wdrożeniu
2. Manipulacja przy pobieraniu
Manipulowanie pobieranymi dokumentami, aby wpłynąć na wyniki.
Jak to działa
- Napastnik tworzy zapytania w celu wywołania określonego pobrania
- Wykorzystuje słabe strony algorytmu rankingu
- Wykorzystuje podobieństwo semantyczne do odzyskiwania porwań
- Manipulacja między użytkownikami we współdzielonych systemach
Wpływ
- Wymusza odzyskanie treści kontrolowanych przez atakującego
- Może tłumić legalne treści
- Umożliwia ukierunkowaną manipulację
- Niszczy zaufanie do jakości odzyskiwania
3. Osadzanie inwersji
Odzyskiwanie oryginału dane z osadzania wektorów.
Jak to działa
- Napastnik uzyskuje dostęp do bazy danych wektorów
- Stosuje techniki inwersji przy osadzaniu
- Rekonstruuje oryginalny tekst z wektorów
- Odzyskuje wrażliwe osadzone dane
Wpływ
- Recover 50-70% of input words
- Ujawnij wrażliwe dane w osadzaniu
- Naruszenia prywatności
- Problemy ze zgodnością (RODO itp.)
4. Ataki między dzierżawcami
Wykorzystywanie współdzielonej infrastruktury RAG w systemach z wieloma dzierżawcami.
Jak to działa
- Atakujący jest jednym z dzierżawców systemu współdzielonego
- Wstrzykiwanie treści wpływających na innych najemców
- Wykorzystuje wspólną bazę danych wektorów
- Pobiera dane od innych najemców
Wpływ
- Wyciek danych między dzierżawcami
- Nieautoryzowany dostęp do danych konkurencji
- Naruszenia zgodności
- Szkoda reputacji
CVE w świecie rzeczywistym
Udokumentowane luki w systemach RAG.
| ID CVE | Produkt | Opis | Ważność | 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 obrony
1. Bezpieczeństwo fazy przyjmowania
Weryfikacja dokumentów
- Skanuj wszystkie dokumenty w poszukiwaniu złośliwego oprogramowania
- Weryfikuj format i strukturę dokumentu
- Sprawdź wzorce podejrzanych treści
- Ogranicz dozwolone typy dokumentów
Filtrowanie treści
- Usuń dane osobowe przed osadzeniem
- Filtruj wrażliwe wzorce danych
- Blokuj znane złośliwe wzorce
- Wdrażaj listy dozwolonych/blokowanych
Kontrola dostępu
- Weryfikuj źródło dokumentów
- Zaimplementuj RBAC na potrzeby pozyskiwania
- Ścieżka audytu wszystkich przesyłanych plików
- Poddaj kwarantannie nowe dokumenty
2. Bezpieczeństwo fazy pobierania
Odkażanie zapytań
- Weryfikacja i oczyszczanie zapytań użytkowników
- Wykryj próby wstrzyknięcia
- Ogranicz złożoność zapytań
- Ograniczanie szybkości
Filtrowanie pobierania
- Wdrożenie zabezpieczeń zmiany rankingu
- Odsyłacze do zaufanych źródeł
- Wykrywaj nietypowe wzorce wyszukiwania
- Ogranicz liczbę dokumentów
Izolacja wielu najemców
- Oddzielne przestrzenie nazw wektorowych
- Ścisłe granice dzierżawy
- Zapobieganie zapytaniom pochodzącym od wielu dzierżawców
- Szyfrowanie na dzierżawcę
3. Bezpieczeństwo fazy generowania
Weryfikacja wyników
- Weryfikacja wyników LLM
- Sprawdź, czy nie wstrzyknięto treści
- Sprawdzanie faktów ze źródłami
- Filtrowanie treści
Weryfikacja kontekstu
- Weryfikacja autentyczności odzyskanej treści
- Wykryj próby manipulacji
- Oznaczanie nietypowych wzorców kontekstowych
- Logowanie całego użycia kontekstu
Human-in-the-Loop
- Przejrzyj wrażliwe wyniki
- Zatwierdzanie działań obarczonych wysokim ryzykiem
- Możliwość ręcznego obejścia użytkowników za pomocą przekonujących wyników
- Ścieżki eskalacji
4. Bezpieczeństwo danych
Szyfrowanie
- Szyfrowanie wektorów w stanie spoczynku
- TLS dla przesyłanych danych
- Najlepsze praktyki w zakresie zarządzania kluczami
- Rozważ szyfrowanie homomorficzne
Bezpieczeństwo Vector DB
- Silne uwierzytelnianie
- Izolacja sieci
- Regularne audyty bezpieczeństwa
- Zarządzanie poprawkami
Ochrona prywatności
- Minimalizacja danych
- Wykrywanie i usuwanie danych osobowych
- Zasady przechowywania
- Wsparcie w zakresie prawa do usunięcia
Metodologia testowania
Lista kontrolna testów bezpieczeństwa RAG
- Testy wstrzykiwania dokumentów
- Testy manipulacji pobieraniem
- Osadzanie prób inwersji
- Testy izolacji między dzierżawcami
- Testy wycieków danych osobowych
- Testy przepełnienia kontekstu
- Testy manipulacji rankingiem
- Testy obejścia uwierzytelniania
- Testy wstrzykiwania API
- Testy typu „odmowa usługi”
- Testy eksfiltracji danych
- Audyt zgodności
Narzędzia testowe
Przykłady kodu
Przykład sprawdzania poprawności 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
}
```