🤖 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!