🤖 AI Horizon #5: RAG Mimarilerinde Gizli Tehdit: Data Poisoning ve Vektör Veritabanı Zehirlenmesi
Şirketlerin kendi iç dokümanlarını (PDF, Confluence, Notion) yapay zekayla buluşturduğu RAG (Retrieval-Augmented Generation) mimarileri, kurumsal yapay zekânın omurgasını oluşturuyor. Ancak bu sistemler, veri kaynaklarının tahrif edilmesiyle gerçekleşen Data Poisoning (Veri Zehirlenmesi) ve Indirect Prompt Injection saldırılarına karşı açık hedef haline geliyor.
📌 RAG Sistemleri Nasıl Zehirlenir?
Saldırganlar ana LLM modeline doğrudan erişemese bile, RAG sisteminin beslendiği bilgi havuzunu kirleterek yapay zekayı manipüle edebilir:
Gizli Metin Enjeksiyonu (Invisible Text Injection): Halka açık bir PDF'e, e-postaya veya destek biletine beyaz renkle yazılmış ya da HTML etiketleriyle gizlenmiş zararlı komutlar eklenir.
Vektör Kirliliği (Embedding Poisoning): Saldırgan, RAG sistemine güvenilmez veya manipüle edilmiş içerikler ekleyerek bunların embedding olarak indekslenmesini ve belirli sorgular sırasında geri getirilmesini hedefler.
Sessiz Manipülasyon: Kullanıcı masum bir soru sorduğunda ("Şirket içi izin politikamız nedir?"), RAG mekanizması zehirli dokümanı getirir. Model, kullanıcıya yanlış veya manipüle edilmiş bilgi verebilir; eğer sistem dış araçlara/ajan yeteneklerine bağlıysa, zehirli talimatlar tehlikeli araç çağrılarını veya veri sızıntılarını tetikleyebilir.
🛡 RAG Güvenliği İçin 3 Kritik Savunma Katmanı
Girdi Temizliği (Ingestion Sanitization): Dokümanlar vektör veritabanına gömülmeden (embedding) önce HTML, Markdown ve görünmeyen içerikler normalize edilmeli; dokümanlar güvenilirlik, kaynak ve içerik bütünlüğü kontrollerinden geçirilmelidir.
Kaynak Doğrulama ve Rol Bazlı Erişim (RBAC): Vektör veritabanından çekilen her parçanın (chunk) kaynağı doğrulanamıyorsa bağlama eklenmemeli; kullanıcının erişim yetkisi olmayan dokümanlar vektör aramasında listelenmemelidir.
Bağlam Doğrulama (Context Verification): LLM'e gönderilen bağlam metni ile üretilen yanıtın tutarlılığı, ana modelden bağımsız daha küçük bir denetim modeliyle (Evaluator) kontrol edilmelidir.
💻 Python ile RAG Veri Temizliği (Sanitization) Örneği
Python
import re
def sanitize_rag_chunk(text_chunk: str) -> str:
# 1. Gizli komut enjeksiyonu kalıplarını temizle
forbidden_patterns = [
r"ignore previous instructions",
r"system prompt:",
r"you must now obey"
]
cleaned_text = text_chunk
for pattern in forbidden_patterns:
cleaned_text = re.sub(pattern, "[REDACTED_PROMPT]", cleaned_text, flags=re.IGNORECASE)
# 2. HTML/Görünmeyen karakter temizliği
cleaned_text = re.sub(r'<[^>]*>', '', cleaned_text)
return cleaned_text.strip()
⚠️ Önemli: forbidden_patterns ile birkaç ifadeyi silmek gerçek bir Prompt Injection savunması değildir. Regex tabanlı filtreler kolayca atlatılabilir.
O zaman 💬 Mustafa soruyor: Kurumsal RAG projelerinizde vektör veritabanına alınan dokümanların güvenliğini ve veri temizliğini (sanitization) nasıl sağlıyorsunuz? Dış kaynaklı dokümanlarda veri zehirlenmesini engellemek için bir filtreniz var mı? Düşüncelerinizi yorumlarda paylaşın! 👇
Okuduğunuz için teşekkürler! Kendinize, verilerinize ve dijital zırhınıza çok iyi bakın!
Henüz yorum yok. İlk yorumu sen yap!

