Geri Alma Destekli Üretim (RAG) sistemleri, modern kurumsal yapay zeka uygulamalarının omurgası haline gelmiştir. Ancak bu sistemlerin karmaşıklığı arttıkça, geleneksel güvenlik modellerinin genellikle gözden kaçırdığı yeni saldırı yüzeyleri ortaya çıkmaktadır. RAG mimarilerindeki en az tartışılan risklerden biri şema çıkarımı ve meta veri sızıntısıdır. Saldırganlar, ham içeriğe doğrudan erişim olmadan, vektör veritabanınızın yapısını kullanarak hassas iş mantığını, kullanıcı veri yapılarını veya iç sınıflandırma şemalarını çıkarabilir. Bu yazıda, bu ince ama tehlikeli tehditlerin nasıl tespit edileceğini ve azaltılacağını inceliyoruz.
Vektör Veritabanlarında Şema Çıkarımını Anlama
Pinecone, Weaviate, Qdrant ve Milvus gibi vektör veritabanları yalnızca gömüleri (embeddings) depolamakla kalmaz; her vektörle ilişkili zengin meta veri şemalarını da sürdürürler. Tipik bir RAG kurulumunda, belgeler parçalara ayrılır, gömülere dönüştürülür ve source_url, access_level, department ve timestamp gibi meta verilerle birlikte saklanır. Bu meta veriler filtreleme ve ilgili sıralama için hayati önem taşısa da, iç veri organizasyonunuzun bir parmak izi görevi görür.
Şema çıkarımı, bir saldırganın (genellikle bir istem enjeksiyonu veya kötü niyetli bir kullanıcı sorgusu aracılığıyla) bu meta verinin yapısını ortaya çıkarmak için geri alma sürecini manipüle etmesiyle gerçekleşir. Örneğin, bir saldırgan "İK" departmanından gelen her belgenin belirli bir meta veri anahtarları setine sahip olduğunu veya erişim seviyelerinin 1-5 arası tamsayılar olarak kodlandığını belirleyebilirse, yetki modelinizi haritalandırabilir. Bu, içerik tabanlı güvenlik filtrelerini atlayan hedefli yetki yükseltme veya veri sızdırma saldırılarına olanak tanır.
Ayrıca, vektörlerinizin boyutluluğu ve kullanılan belirli gömme modeli bazen tersine mühendislik yapılabilir. Bir saldırgan, farklı girdilerin geri alma puanlarını nasıl etkilediğini gözlemleyebilirse, gömme uzayının özelliklerini çıkarabilir ve bu da sistemin belirli, hassas belgeleri geri almasını sağlayan advers girdiler oluşturmasına izin verebilir.
Yaygın Meta Veri Sızıntısı Vektörleri
RAG sistemlerinde meta veri sızıntısı nadiren doğrudan veritabanı erişimi yoluyla gerçekleşir. Bunun yerine, LLM ve geri alma katmanı arasındaki etkileşim yoluyla sızar. İşte en yaygın vektörler:
- İstem Yansıması: Bazı LLM'ler geri alınan bağlamı "yankılamaya" yatkındır. Bir parçanın meta verisi bağlam penceresine (örneğin, JSON formatında) istemeden dahil edilirse, LLM bu anahtarları yanıtında özetleyebilir veya listeleyebilir.
- Hata Mesajı Sızıntısı: Geri alma sırasında kötü yönetilen istisnalar, "Filtrede 'user_id' anahtarı bulunamadı" gibi iç şema detaylarını ortaya çıkarabilir ve bu alanın varlığını ifşa edebilir.
- Arama Puanı Analizi: Farklı özniteliklere sahip sorgular oluşturarak, bir saldırgan hangi meta veri filtrelerinin daha yüksek ilgili puanlarına yol açtığını analiz edebilir ve bu da veritabanının yapısını fiilen sondalamasına olanak tanır.
İşte tipik bir geri alma fonksiyonu:
async def retrieve_context(query: str, user_id: str):
# Kırılganlık: Ham meta veriyi LLM'e ifşa etme
results = vector_db.query(
vector=embed(query),
filter={"user_id": user_id},
include_metadata=True
)
context = ""
for doc in results:
# Kötü Uygulama: Tüm meta veriyi isteme eklemek
context += f"Source: {doc['metadata']['source_url']}\n"
context += f"Access Level: {doc['metadata']['access_level']}\n"
context += f"Content: {doc['text']}\n"
return context
Yukarıdaki kodda, access_level ve source_url doğrudan LLM'e iletilir. İleri düzey bir istem enjeksiyonu, LLM'in bu değerleri ifşa etmesine neden olabilir veya bir saldırgan bu bilgileri yetki hiyerarşisini anlamak için kullanabilir.
RAG Mimarinizi Güvenceye Alma Stratejileri
Şema çıkarımını ve meta veri sızıntısını azaltmak, en az ayrıcalık ilkesine ve veri minimizasyonuna odaklanan çok katmanlı bir yaklaşım gerektirir.
1. Meta Veri Soyutlama:
Ham meta veri anahtarlarını veya değerlerini açıkça gerekli olmadıkça LLM'e ifşa etmeyin. Bunun yerine, hassas meta verileri yüksek düzeyde, hassas olmayan tanımlayıcılara soyutlayın. Örneğin, access_level: 3 yerine, arka uçta doğrulama sonrası is_authorized: true boolean bayrağını iletin.
2. Sunucu Tarafında Doğrulama ve Temizleme:
Tüm meta veri filtreleri, veri LLM'e gönderilmeden önce sunucu tarafında uygulanmalıdır. LLM, belgelerin yapısal meta verilerini değil, yalnızca text içeriğini almalıdır. Meta veri alanları üzerinden istem enjeksiyonunu önlemek için tüm metin verilerinin sıkı temizlenmesini uygulayın.
async def secure_retrieve_context(query: str, user_id: str, user_permissions: List[str]):
# 1. Arka uçta güvenli filtreleme
allowed_sources = get_sources_for_permissions(user_permissions)
results = vector_db.query(
vector=embed(query),
filter={
"source": {"$in": allowed_sources},
"classification": {"$ne": "confidential"}
},
include_metadata=False # Bu katmana meta veri döndürme
)
# 2. Yalnızca metin kullanarak bağlam oluşturma
context_parts = []
for doc in results:
# Yalnızca metin içeriğini dahil et
context_parts.append(doc['text'])
return " ".join(context_parts)
3. İç Yapıların Gizlenmesi:
İş mantığını ifşa eden, insan okunabilir ve tanımlayıcı meta veri anahtarlarından kaçının. Mümkün olan durumlarda iç sınıflandırma için hash'lenmiş veya kodlanmış tanımlayıcılar kullanın. Örneğin, department: finance yerine dept_id: a9f2b1 kullanın. Bu, bazı meta veriler sızsa bile saldırganın yapıyı çıkarmasını zorlaştırır.
4. Geri Alma Desenlerinde Anomali Tespiti: Sondalama öneren desenler için geri alma sorgularını izleyin. Örneğin, bir kullanıcı belirli meta veri anahtarlarının veya değerlerinin varlığını test etmek için tasarlanmış sorguları hızla gönderiyorsa, bu etkinliği inceleme için işaretleyin. Kaba kuvvet şema çıkarım denemelerini yavaşlatmak için meta veri yoğun sorgularda hız sınırlaması uygulayın.
5. Düzenli Penetrasyon Testleri: Penetrasyon testleri anlaşmalarınıza RAG'a özgü saldırı vektörlerini dahil edin. Testçiler, LLM'in meta verileri ifşa etmesini sağlamaya, şema detayları için hata mesajlarını sorgulamaya ve veritabanı yapısını çıkarmak için arama puanı varyasyonlarını analiz etmeye çalışmalıdır.
Sonuç
RAG sistemlerini güvence altına almak, yalnızca vektör verilerini korumakla ilgili değildir; bu verilerin sunulduğu bağlamı korumakla ilgilidir. Şema çıkarımı ve meta veri sızıntısı, tüm yapay zeka uygulamanızın bütünlüğünü zayıflatabilen ince ama önemli risklerdir. Meta veri işleme için güvenlik odaklı bir yaklaşım benimseyerek—hassas verileri soyutlayarak, sunucu tarafında doğrulayarak ve anormal geri alma desenlerini izleyerek—hem güçlü hem de güvenli RAG sistemleri inşa edebilirsiniz. RAG mimarileri evrildikçe, tehditler de evrilecektir. Önde kalmak, yapay zeka altyapınızın tam saldırı yüzeyini anlamaya proaktif bir bağlılık gerektirir.