LLM Operasyon Güvenliği

Semantik Önbellek Güvenliği: Zehirlenme, Sızıntı ve Güvenli Tasarım

Semantik önbellek güvenliği: yanlış eşleşme, önbellek zehirlenmesi, kullanıcılar arası sızıntı ve zamanlama riskine karşı anahtar, eşik ve süre tasarımı.

Semantik önbellek güvenliği, maliyet kazancının hangi bedelle geldiği sorusudur. Semantik önbellek, anlamca benzer sorulara daha önce üretilmiş yanıtı yeniden döndürür ve model çağrısını azaltır. Yanlış eşleşme yanlış yanıt, yetkisiz eşleşme veri sızıntısı, saldırganın yerleştirdiği kayıt ise binlerce kullanıcıya dağıtılan zararlı yanıt demektir. Güvenli tasarım önbellek anahtarına kiracı ve yetki bağlamayı, yazma işlemini denetlemeyi, kişiye özel yanıtları dışarıda tutmayı ve kayıtlara geçerlilik süresiyle geçersiz kılma yolu koymayı gerektirir.

Semantik önbellek nasıl çalışır ve neden saldırı yüzeyidir?

Gelen sorunun gömme vektörü hesaplanır ve önceden kaydedilmiş sorularla karşılaştırılır. Benzerlik eşiğin üstündeyse kayıtlı yanıt modele gitmeden döner. Eşleşme yoksa model çağrılır ve yeni yanıt önbelleğe yazılır. Bu akışta iki karar noktası güvenlik açısından kritiktir: eşleşmenin hangi kapsamda aranacağı ve yeni yanıtın hangi koşulda yazılacağı.

Ocak 2026'da yayımlanan ve ICML 2026'ya kabul edilen "From Similarity to Vulnerability" çalışması sorunu kavramsal olarak net koyar: semantik önbellek anahtarı bulanık bir özet fonksiyonu gibi davranır. Yüksek isabet oranı için gereken yakınlık özelliği, güvenlik için gereken çakışma direnciyle çelişir. Yazarların CacheAttack adlı kara kutu yöntemi, LLM yanıtını ele geçirmede yüzde 86 isabet oranına ulaştı, farklı gömme modelleri arasında aktarılabildi ve bir finans ajanı örneğinde ajanı zararlı davranışa yönlendirdi.

Önbellek çoğu zaman performans ekibinin eklediği bir ara katman olarak "güvenlik kapsamı dışı" sayılır. Oysa kullanıcıya giden her yanıtın yolunda durur ve birçok LLM gateway ürününde hazır bir özellik olarak sunulur. Gateway katmanındaki diğer kontroller için LLM gateway nedir yazısına bakabilirsiniz.

Semantik önbellek güvenliğinde dört temel risk nedir?

RiskNasıl oluşurEtkiAna önlem
Yanlış eşleşmeGevşek eşik, olumsuzluk ya da sayı farkını kaçıran benzerlikBaşka sorunun yanıtı dönerEşiği etiketli örneklerle ayarlama
ZehirlenmeSaldırgan hedef soruya yakın sorguyla kayıt yerleştirirZararlı yanıt herkese dağıtılırYazma denetimi, doğrulama katmanı
Kullanıcılar ve kiracılar arası sızıntıAnahtar yalnız anlama dayanırBaşkasının verisi dönerKiracı ve rol filtresi
Zamanlama yan kanalıÖnbellekten dönen yanıt belirgin biçimde hızlıdırBaşkasının sorgusu tahmin edilirPaylaşımsız önbellek, kapsam ayrımı

Dördüncü risk yalnız semantik önbelleğe özgü değildir. Stanford araştırmacılarının ICML 2025'te yayımlanan "Auditing Prompt Caching in Language Model APIs" çalışması, aralarında OpenAI'ın da bulunduğu yedi API sağlayıcısında istem önbelleğinin kullanıcılar arasında küresel olarak paylaşıldığını istatistiksel denetimle tespit etti. Önbellekten dönen istemler daha hızlı işlendiği için bu hız farkı, başka kullanıcıların istemleri hakkında bilgi sızdırabilecek bir yan kanaldır. Kendi önbelleğinizi kurarken aynı ilkeyi uygulayın: kapsamı paylaşmayın.

Önbellek zehirlenmesi nasıl gerçekleşir?

Zehirlenme, önbelleğe yanlış ya da zararlı bir yanıtın kaydedilip sonraki kullanıcılara sunulmasıdır. NDSS 2026'da yayımlanan "Cache Me, Catch You" çalışması, LLM sunum çatılarındaki önbellek risklerini sistematik olarak inceledi ve altı saldırı vektörü tanımladı. Semantik önbellek için öne çıkan bulgular şunlardır:

  • Bulanık semantik zehirleme: Saldırgan, hedef soruya anlamca yakın kötü niyetli sorgular gönderir ve oluşan yanıtı önbelleğe yerleştirir. GPTCache üzerinde 0,8 benzerlik eşiğinde yüzde 75 zehirli isabet oranı ölçüldü.
  • RAG üzerinden zehirleme: RAG hattı, saldırganın bulanık sorgu üretmesini kolaylaştırarak saldırı yüzeyini genişletir.
  • Düşük maliyet: Yazarlar başarılı her saldırı örneğinin maliyetini 1 doların çok altında hesapladı.
  • Sorumlu bildirim: Bulgular vLLM, SGLang, GPTCache ve diğer projelere bildirildi. GPTCache, vLLM ve AIBrix önerilen düzeltmeleri uyguladı.

Kasıtlı saldırı olmadan da zehirlenme olur. Zehirli bir belgeden etkilenen tek bir yanıt önbelleğe girerse model hiç çağrılmadan aynı hata tekrar tekrar sunulur. Belge zehirlenmesinin eşiği için RAG zehirleme yazısına bakabilirsiniz. Ortak ilke şudur: kalıcı hale getirilen her model çıktısı, kalıcı bir veri yazması gibi denetlenmelidir.

Kullanıcılar ve kiracılar arası sızıntı nasıl önlenir?

RedisVL belgelerindeki örnek riski açıkça gösterir: "hesabıma bağlı telefon numarası nedir" sorusu iki farklı kullanıcı tarafından neredeyse aynı cümleyle sorulur ve yanıtlar farklıdır. Önbellek kullanıcı filtresi olmadan çalışırsa ikinci kullanıcı birincinin numarasını alır. Temel çözüm, kiracı ve yetki bilgisini eşleşmenin zorunlu filtresi yapmaktır. Filtreyi tutmayan kayıt, ne kadar benzer olursa olsun döndürülmez.

from redisvl.extensions.cache.llm import SemanticCache
from redisvl.query.filter import Tag

cache = SemanticCache(
    name="destek_asistani",
    distance_threshold=0.1,   # kosinüs mesafesi, düşük değer daha sıkı
    ttl=3600,                 # saniye
    filterable_fields=[
        {"name": "kiraci", "type": "tag"},
        {"name": "rol", "type": "tag"},
        {"name": "politika_surumu", "type": "tag"},
    ],
)

filtre = ((Tag("kiraci") == oturum.kiraci)
          & (Tag("rol") == oturum.rol)
          & (Tag("politika_surumu") == AKTIF_POLITIKA))
eslesme = cache.check(prompt=soru, filter_expression=filtre)

Filtre değerleri istemciden değil, doğrulanmış oturumdan gelmelidir. Önbellek anahtarına ya da filtresine bağlanması gerekenler:

  • Kiracı kimliği
  • Kullanıcı rolü ya da yetki grubu
  • Erişilen veri kaynaklarının sürümü
  • Sistem istemi ve politika sürümü
  • Model sürümü

Bu bileşenlerden biri değiştiğinde ilgili kayıtlar geçersiz sayılmalıdır. Aynı sorunun vektör veritabanı tarafındaki karşılığı için RAG tenant izolasyonu ve multi-tenant RAG sızıntısı yazılarına bakın.

Hangi yanıtlar önbelleğe hiç yazılmamalı?

Her yanıt önbelleğe uygun değildir. Karar soru türüne göre ve kodla verilmelidir.

Yanıt türüÖnbellek kararıGerekçe
Genel bilgi, sabit tanım, ürün belgeleriYazılabilirKişiye özel değil, yavaş değişir
Politika, fiyat, kampanya bilgisiKısa süreyle, kaynak değişiminde silinirHızla eskir
Kişisel veri içeren yanıtYazılmazSızıntı riski
Yetkiye göre değişen yanıtYazılmaz ya da rol filtresiyle yazılırYetki aşımı
Araç çağrısının canlı sonucuYazılmazAnlık durumu yansıtır
Güvenlik filtresinden geçmemiş ya da reddedilmiş yanıtYazılmazZehirlenme kapısı

Bu ayrım önbellek katmanının girişinde bir sınıflandırma adımı gerektirir. Hangi soru türünün önbelleğe girebileceği modelin kararına bırakılmamalıdır.

Eşik, süre ve geçersiz kılma nasıl ayarlanır?

Benzerlik anlam yakınlığını ölçer, aynılığı değil. "İade yapabilir miyim" ile "iade yapamaz mıyım" sorusu yakın vektörler üretebilir ama yanıtları terstir. Eşiği tahminle değil, kendi trafiğinizden çıkarılmış ve "aynı yanıtı hak eder" ya da "etmez" diye etiketlenmiş soru çiftleriyle ayarlayın. Türkçe olumsuzluk ve çekim ekleri bu ayarı ayrıca hassas kılar.

Geçerlilik süresi hatalı yanıtın ömrünü sınırlar. Dikkat edilmesi gereken bir ayrıntı vardır: RedisVL belgelerine göre check() çağrısı eşleşen kayıtların süresini kayan pencere mantığıyla yeniler. Bu, sık eşleşen bir kaydın kendiliğinden hiç sona ermeyebileceği anlamına gelir. Zehirli bir kayıt en çok eşleşen kayıtlardan biriyse yalnız süreye güvenmek yetmez.

Süre dışında olay temelli geçersiz kılma gerekir. Kaynak belge güncellendiğinde, politika değiştiğinde ya da bir yanıtın yanlış olduğu anlaşıldığında ilgili kayıtlar dakikalar içinde silinebilmelidir. Yönetim aracında kayıt arama, inceleme ve toplu silme bulunmalıdır. Aksi halde tek bir yanlış yanıtı düzeltmenin yolu bütün önbelleği temizlemek olur.

Zehirlenme nasıl tespit edilir ve müdahale edilir?

Önleme, yazma anında başlar. Yanıtı önbelleğe yazmadan önce güvenlik filtresinden geçirin, kaydın kaynağını, yazan kullanıcıyı ve zamanı saklayın. NDSS 2026 çalışmasında, eşleşen önbellek kaydının yeni soruyla anlam bütünlüğünü küçük bir dil modeliyle doğrulayan ek katman, bulanık çakışma saldırısının ortalama isabet oranını yüzde 66'dan yüzde 27'ye indirdi. Katman ilk token süresine gecikme ekler, ama yüksek riskli alanlarda makul bir bedeldir.

İzlenecek ölçütler:

ÖlçütNe gösterirUyarı işareti
İsabet oranıMaliyet tasarrufuAni artış
Yanlış isabet oranıÖrnek kümede taze yanıtla karşılaştırmaEşik değişikliğinden sonra yükseliş
Kayıt başına farklı sorgu sayısıBir kaydın ne kadar geniş eşleştiğiTek kaydın çok sayıda farklı sorguyla eşleşmesi
Kiracı dışı eşleşmeFiltre hatasıSıfırdan farklı herhangi bir değer

Zehirli kayıt bulunduğunda izlenecek adımlar:

  1. Kaydı ve benzer kayıtları silin, gerekirse önbelleği geçici olarak kapatın.
  2. Kaydı yazan isteği, kullanıcıyı ve zamanı kayıtlardan bulun.
  3. Aynı kullanıcı ya da kaynaktan yazılmış diğer kayıtları tarayın.
  4. Zehirli bir belge söz konusuysa onu bilgi tabanından çıkarın.
  5. Yazma denetimini sıkılaştırın ve olayı kayda geçirin.

Sık Sorulan Sorular

Semantik önbellek normal önbellekten nasıl ayrılır?

Normal önbellek yalnız birebir aynı isteği eşleştirir. Semantik önbellek soruyu gömme vektörüne çevirir ve yeterince benzer bir önceki soru bulursa onun yanıtını döndürür. Maliyeti ve gecikmeyi azaltır, ama benzerlik eşiği gevşekse farklı sorulara aynı yanıtı verir. Aynı özellik, saldırganın hedef soruya benzeyen bir sorguyla önbelleğe kayıt yerleştirmesini de mümkün kılar.

Önbellek kullanıcılar arasında nasıl veri sızdırır?

Önbellek anahtarı yalnız sorunun anlamına dayanıyorsa bir kullanıcının sorusuna üretilen yanıt, benzer soru soran başka bir kullanıcıya dönebilir. Yanıt ilk kullanıcının hesap bilgisini içeriyorsa bu doğrudan sızıntıdır. Çözüm, kiracı ve rol bilgisini eşleşmenin zorunlu filtresi yapmak, kişiye özel yanıtları hiç önbelleğe yazmamak ve yetki değiştiğinde ilgili kayıtları silmektir.

Önbellek zehirlenmesi nasıl gerçekleşir?

Saldırgan, kurbanların soracağı soruya anlamca yakın bir sorgu gönderir ve modelin bu sorguya verdiği yanıtın önbelleğe yazılmasını sağlar. Sonraki kullanıcılar benzer soruyu sorduğunda model çağrılmadan bu yanıt döner. NDSS 2026'da yayımlanan bir çalışma, GPTCache üzerinde 0,8 benzerlik eşiğinde yüzde 75 zehirli isabet oranı ölçtü. Etki kalıcıdır, çünkü yanıt her eşleşmede yeniden dağıtılır.

Semantik önbellekte hangi yanıtlar saklanmamalı?

Kişisel veri içeren, kullanıcının yetkisine göre değişen, bir araç çağrısının canlı sonucuna dayanan, fiyat ve stok gibi hızla değişen ve güvenlik filtresinden geçmemiş yanıtlar saklanmamalıdır. Bu ayrımı modele bırakmayın. Önbellek katmanının girişinde soru türünü ve yanıtın kaynağını sınıflandıran kod tabanlı bir kural, hangi yanıtın yazılabileceğine karar vermelidir.

Kaynaklar

İlgili Yazılar