RAG Güvenliği: Tam Kılavuz
Securing Retrieval-Augmented Generation systems against document poisoning, retrieval manipulation, and embedding attacks
Updated: August 2026 • OWASP LLM08'in bir parçası
RAG nedir?
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. Kullanıcı Sorgusu
Kullanıcı sisteme bir soru veya istem gönderir
2. Yerleştirme
Sorgu, vektör yerleştirmeye dönüştürülür
3. Alma
Vektör DB'sinden alınan benzer belgeler
4. Artırma
İsteme alınan içerik eklendi
5. Nesil
LLM, bağlamı kullanarak yanıt üretir
Güven Paradoksu
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.
Saldırı Vektörleri
1. Belge Zehirlenmesi
Bilgi tabanında saklanan belgelere kötü amaçlı içerik yerleştirme.
Nasıl çalışır
- Saldırgan kötü amaçlı belgeleri yükler veya enjekte eder
- Belgeler vektör veritabanına gömülür ve saklanır
- İlgili sorgu yapıldığında zehirli belge alınır
- LLM, kötü amaçlı bağlamı yanıta dahil ediyor
Etki
- 90% success yalnızca 5 zehirli belgeyle
- Milyonlarca belge içeren veritabanlarında bile çalışır
- Zararlı, taraflı veya yanlış çıktılara neden olabilir
- Dağıtımdan sonra tespit edilmesi zor
2. Geri Alma Manipülasyonu
Çıktıları etkilemek için hangi belgelerin alındığını değiştirme.
Nasıl çalışır
- Saldırgan, belirli erişimi tetiklemek için sorgular hazırlar
- Sıralama algoritması zayıflıklarından yararlanır
- Geri alma işlemini ele geçirmek için anlamsal benzerliği kullanır
- Paylaşılan sistemlerde kullanıcılar arası manipülasyon
Etki
- Saldırgan tarafından kontrol edilen içeriğin alınmasını zorlar
- Meşru içeriği bastırabilir
- Hedefli manipülasyona olanak tanır
- Geri alma kalitesine olan güveni sarsıyor
3. Ters Çevirmeyi Gömme
Kurtarma vektör yerleştirmelerinden elde edilen orijinal veriler.
Nasıl çalışır
- Saldırgan, vektör veritabanına erişim kazanır
- Yerleştirmelerde ters çevirme tekniklerini kullanır
- Vektörlerden orijinal metni yeniden oluşturur
- Hassas gömülü verileri kurtarır
Etki
- Recover 50-70% of input words
- Gömmelerde hassas verileri açığa çıkarın
- Gizlilik ihlalleri
- Uyumluluk sorunları (GDPR, vb.)
4. Kiracılar Arası Saldırılar
Çok kiracılı sistemlerde paylaşılan RAG altyapısından yararlanma.
Nasıl çalışır
- Saldırgan, paylaşılan sistemin bir kiracısıdır
- Diğer kiracıları etkileyen içerik enjekte eder
- Paylaşılan vektör veritabanını kullanır
- Diğer kiracılardan veri alır
Etki
- Kiracılar arasında veri sızıntısı
- Rakip verilerine yetkisiz erişim
- Uyumluluk ihlalleri
- İtibar hasarı
Gerçek Dünya CVE'leri
RAG sistemlerinde belgelenmiş güvenlik açıkları.
| CVE ID | Ürün | Açıklama | Önem Düzeyi | 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 |
Savunma Stratejileri
1. Besleme Aşaması Güvenliği
Belge Doğrulaması
- Tüm belgeleri kötü amaçlı yazılımlara karşı tarayın
- Belge formatını ve yapısını doğrulama
- Şüpheli içerik modellerini kontrol edin
- İzin verilen belge türlerini sınırlayın
İçerik Filtreleme
- Yerleştirmeden önce kişisel bilgileri kaldırın
- Hassas veri modellerini filtreleyin
- Bilinen kötü amaçlı kalıpları engelleyin
- İzin verme/engelleme listelerini uygulayın
Erişim Kontrolleri
- Belgelerin kaynağını doğrulama
- Besleme için RBAC'yi uygulama
- Tüm yüklemeler için denetim takibi
- Yeni belgeleri karantinaya alın
2. Alma Aşaması Güvenliği
Sorgu Temizleme
- Kullanıcı sorgularını doğrulama ve temizleme
- Enjeksiyon girişimlerini tespit edin
- Sorgu karmaşıklığını sınırlayın
- Hız sınırlama
Geri Alma Filtreleme
- Yeniden sıralama güvenliğini uygulayın
- Güvenilir kaynaklarla çapraz referans
- Anormal erişim modellerini tespit edin
- Belge sayısını sınırlayın
Çok Kiracılı İzolasyon
- Ayrı vektör ad alanları
- Katı kiracı sınırları
- Kiracılar arası sorgu önleme
- Kiracı başına şifreleme
3. Üretim Aşaması Güvenliği
Çıktı Doğrulaması
- LLM çıktılarını doğrulama
- Enjekte edilen içeriği kontrol edin
- Kaynaklara karşı gerçek kontrolü
- İçerik filtreleme
Bağlam Doğrulaması
- Alınan içeriğin orijinalliğini doğrulayın
- Manipülasyon girişimlerini tespit edin
- Olağandışı bağlam modellerini işaretleyin
- Tüm bağlam kullanımını günlüğe kaydedin
Döngüdeki İnsan
- Hassas çıktıları inceleyin
- Yüksek riskli eylemleri onaylayın
- Manuel geçersiz kılma yeteneği
- İlerletme yolları
4. Veri Güvenliği
Şifreleme
- Hareketsiz vektörleri şifreleme
- Akın halindeki veriler için TLS
- En iyi yönetim uygulamaları
- Homomorfik şifrelemeyi düşünün
Vektör DB Güvenliği
- Güçlü kimlik doğrulama
- Ağ izolasyonu
- Düzenli güvenlik denetimleri
- Yama yönetimi
Gizlilik Koruması
- Veri minimizasyonu
- PII algılama ve kaldırma
- Saklama politikaları
- Silme hakkı desteği
Test Metodolojisi
RAG Güvenlik Testi Kontrol Listesi
- Belge ekleme testleri
- Geri alma manipülasyon testleri
- Tersine çevirme girişimlerini yerleştirme
- Kiracılar arası izolasyon testleri
- PII sızıntı testleri
- Bağlam taşması testleri
- Sıralama manipülasyon testleri
- Kimlik doğrulama atlama testleri
- API enjeksiyon testleri
- Hizmet reddi testleri
- Veri sızdırma testleri
- Uyumluluk denetimi
Test Araçları
Kod Örnekleri
Belge Doğrulama Örneği
```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
}
```