Vektör Güvenliği · OWASP LLM08

Embedding Inversion: Vektörden Metni Geri Kazanma Saldırısının Anatomisi
Gömme vektörü geri döndürülemez değildir

Bir vektör veritabanında sakladığınız gömmeler, "içinden metin çıkarılamaz" diye kabul edilen sayı dizileri değildir. vec2text ailesi saldırılar, yalnızca vektöre erişerek özgün cümleyi kelime kelime geri üretebilir — ve bu, vektörü KVKK anlamında kişisel veri hâline getirir.

Embedding inversion nedir?

Embedding inversion (gömme tersine çevirme), bir metnin gömme vektöründen özgün metnin kendisini — ya da içindeki hassas parçaları — geri üreten saldırı sınıfıdır. Klasik varsayım şuydu: bir cümleyi embedding modeline verirsiniz, geriye 384, 768 ya da 1536 boyutlu bir kayan-nokta dizisi döner; bu dizi "tek yönlü" bir özettir, yani vektörden metne geri dönülemez. Embedding inversion tam olarak bu varsayımı çürütür. Saldırgan cümleye değil, yalnızca vektöre erişir; bir çözücü model bu vektörü "koordinat" olarak alıp onu üretebilecek metni arar.

Bu ayrımı netleştirmek önemli: bu yazı, bir RAG boru hattının nasıl kurulduğunu değil, o boru hattında saklanan vektörün kendisini bir saldırı yüzeyi olarak ele alır. RAG mimarisine genel bakış için RAG güvenliği nedir ve izleme tarafı için RAG güvenlik izleme yazılarımız gömme inversiyonunu genel düzeyde anıyor; burada odak, saldırının mekaniği ve "vektör kişisel veri midir" tartışmasıdır.

vec2text nedir? Vektörden metne geri üretim mekaniği

vec2text, gömme inversiyonunu somut bir tehdide çeviren yöntemdir. Temel fikir, doğrudan "vektörden metin" üreten tek atışlık bir çözümleme değil, yinelemeli düzeltme (iterative refinement) döngüsüdür:

  1. Model, hedef vektöre karşılık gelebilecek bir taslak metin tahmin eder.
  2. Bu taslağı aynı embedding modeliyle yeniden gömer.
  3. Elde ettiği vektörü hedef vektörle karşılaştırır; aradaki farkı geri besleyerek taslağı düzeltir.
  4. Vektör hedefe yeterince yaklaşana kadar bu döngü tekrarlanır.

Yani saldırı, "bu vektörü hangi metin üretir?" sorusunu bir arama problemine dönüştürür. Yayımlanan çalışma (arXiv 2310.06816, Text Embeddings Reveal (Almost) As Much As Text), 32 token uzunluğundaki metinlerde bu döngünün özgün metni yaklaşık %92 oranında birebir geri kazandığını ve metin benzerliğinde ~97 BLEU'ya ulaştığını raporladı. Kritik nokta şudur: saldırgan modelin ağırlıklarına değil, yalnızca çıktı vektörlerine ve bir sorgu erişimine ihtiyaç duyar. Sızan bir vektör veritabanı yedeği, yanlış yapılandırılmış bir koleksiyon, ya da vektörleri döndüren bir API uç noktası bu saldırı için yeterli hammaddeyi verir.

KatmanKlasik varsayımEmbedding inversion gerçeği
Vektörün geri döndürülebilirliğiTek yönlü, geri dönülemezYinelemeli çözücü ile metin geri üretilebilir
Saldırgana gerekenModel + orijinal metinYalnızca vektör + sorgu erişimi
En kırılgan senaryoKısa metinler (isim, TCKN cümlesi, tek satır PII)

Uzun paragraflarda kurtarma başarısı düşer; ama RAG parçaları (chunk'lar) çoğunlukla kısa olduğu ve tam da bu kısa metinler ad, kimlik numarası, adres gibi yoğun kişisel veri taşıdığı için pratik risk yüksektir.

Türkçe ve çok dilli gömmeler neden daha kırılgan olabilir?

vec2text literatürünün büyük kısmı İngilizce metinler ve İngilizce-tek modeller üzerinde ölçülmüştür. Çok dilli tarafa bakan çalışma (arXiv 2401.12192 / ACL 2024, Text Embedding Inversion Security for Multilingual Language Models) önemli bir uyarı veriyor: çok dilli modeller inversiyona İngilizce-tek modellerden daha açık olabilir. Sezgisel açıklama, çok dilli gömme uzayının aynı anlamı birçok dilde hizalamak için daha yapılı ve daha "okunabilir" bir geometri taşıması; bu düzenlilik, tersine çevirmeyi kolaylaştırıyor.

Türkçe için bunun pratik anlamı şu: bir kurumsal RAG sistemi çoğunlukla çok dilli bir gömme modeli (örneğin multilingual-e5), Türkçe'ye uyarlanmış bir BERTurk tabanlı model ya da OpenAI text-embedding-3 ile beslenir. Bunların hepsi gerçek, yaygın kullanılan modellerdir ve hiçbiri gömdüğü metni kriptografik olarak gizlemek üzere tasarlanmamıştır. Türkçe'nin sondan eklemeli (aglütinatif) morfolojisi — bir kök üzerine sıralanan ekler — inversiyon çözücüsü için hem zorluk hem ipucu olabilir; ancak İngilizce vec2text literatüründe Türkçe morfolojisi üzerine nicel bir ölçüm henüz yok. Bu yüzden burada Türkçe için spesifik bir kurtarma oranı iddia etmiyoruz; söylenebilecek savunulabilir şey, çok dilli inversiyon bulgularının Türkçe gömmeleri de kapsayan bir risk sınıfına işaret ettiğidir.

Vektör kişisel veri midir? KVKK açısından tartışma

Buraya kadarki teknik zincir tek bir hukuki sonuca varır: eğer bir vektörden özgün metin geri kazanılabiliyorsa, o vektör "anonim" değildir. KVKK'nın (6698 sayılı Kanun) anonim veri tanımı, verinin kimliği belirli/belirlenebilir bir gerçek kişiyle ilişkilendirilememesini gerektirir. Embedding inversion, tam da bu "ilişkilendirilemezlik" varsayımını bozar. Dolayısıyla içinde TCKN, IBAN, telefon, sağlık ya da bir bireyi işaret eden ifade geçen bir cümlenin gömmesi, en güvenli yaklaşımla takma adlı (pseudonymized) veri değil, doğrudan kişisel veri gibi işlenmelidir.

Bunun kurumsal karşılıkları somuttur: vektör veritabanı bir "teknik altyapı" değil, kişisel veri işleyen bir varlıktır; erişim kaydı, şifreleme, saklama süresi ve silme (unutulma hakkı) yükümlülükleri vektör koleksiyonlarını da kapsar. Özel nitelikli veri (sağlık, biyometrik vb.) söz konusuysa KVKK madde 6'nın ek koşulları devreye girer — bu sızıntı yüzeyini ayrıca KVKK madde 6 ve LLM sızıntı vektörleri yazısında ele aldık. OWASP tarafında da bu risk artık kataloğa girmiştir: LLM08:2025 Vector and Embedding Weaknesses, gömme tersine çevirmeyi açıkça bir gömme zafiyeti olarak sayar.

Savunma: metni gömmeden önce maskele

Çok dilli inversiyon çalışması pratik bir müjde de verir: maskeleme temelli savunmalar saldırıların çoğunu etkisiz kılar. Mantık basittir — çözücü ancak vektörün içinde kodlanmış olanı geri getirebilir. TCKN hiç gömülmediyse, mükemmel bir inversiyon bile onu geri getiremez. Dolayısıyla doğru katman, vektör veritabanı değil, metnin gömülmeden önceki hâlidir: hassas alanları embedding çağrısından önce maskele.

AltaySec tarafında bu adımı açık kaynak iki varlıkla destekliyoruz. turkish-pii-redactor, Türkiye'ye özgü kimlikleri — TCKN, IBAN-TR, VKN, plaka, telefon, e-posta, kredi kartı — sağlama basamağı (checksum) doğrulamasıyla tespit edip maskeler; böylece rastgele bir sipariş numarası yanlışlıkla TCKN sanılmaz, gerçek bir TCKN de sıyrılıp geçmez. Metin, gömme modeline gitmeden önce redact()'ten geçirildiğinde, vektöre giren şey ham kişisel veri değil [TCKN] yer tutucusu olur.

from trpii.core import redact

# Gömmeden ÖNCE maskele:
ham = "TCKN'm 12345678950, IBAN TR33 0006 1005 1978 6457 8413 26"
guvenli = redact(ham)
# -> "TCKN'm [TCKN], IBAN [IBAN]"

vektor = embed(guvenli)   # artık vektörde ham PII yok

AltaySec'in kendi ölçümü (dürüst çerçeve): sentetik, sağlama-geçerli bir Türkçe PII korpusu üzerinde (her varlık tipinden 20 örnek), turkish-pii-redactor tüm tiplerde bu örnekleri yakaladı; kutu-dışı Microsoft Presidio ise TCKN, VKN ve plakayı yapısal olarak %0 oranında tespit etti — çünkü Presidio'nun bu Türkiye'ye özgü kimlikler için tanıyıcısı yok. Buradaki anlamlı sonuç "%100 recall" değil (bu kısmen korpusun kendi sağlamalarıyla üretilmiş olmasından kaynaklanan bir kurgu); anlamlı olan yapısal 0 boşluğudur: genel bir PII aracı Türk kimliklerini görmez, o boşluğu bu araç kapatır. Bu bir gerçek-dünya kıyaslaması değil, doğrulayıcıların çalıştığını gösteren bir birim ölçümdür.

Ne yapmalı: pratik kontrol listesi

Embedding inversion riskini yönetmek için katmanlı bir yaklaşım:

  • Gömmeden önce maskele. PII tespiti embedding çağrısının önüne konur; ham kişisel veri hiç vektörleşmez. Maskeleme reçeteleri için KVKK PII maskeleme yazısı ve kvkk-ai-compliance-kit başlangıç noktasıdır.
  • Vektörü kişisel veri gibi koru. Vektör veritabanına erişim denetimi, dinlenme hâlinde şifreleme, saklama süresi ve silme akışı uygula; koleksiyonları herkese açık uçlarda döndürme.
  • Kısa/yoğun-PII parçalara dikkat. İnversiyon kısa metinlerde en başarılı; ad, kimlik, adres içeren küçük chunk'ları öncelikli maskeleme alanı say.
  • Çalışma zamanında izle. Vektör döndüren uç noktalar, olağandışı toplu vektör çekme (harvesting) desenleri ve tenant sınırı ihlalleri için gözetim kur; çok kiracılı ortamlarda tenant izolasyonu ayrı bir savunma katmanıdır.
  • Girdi/çıktı katmanına güvenlik duvarı koy. Guardian (LLM güvenlik duvarı) gibi bir katman, hem sızıntı denemelerini hem de maskelenmemiş PII'nin boru hattına girmesini yakalamak için son savunma hattı işlevi görür.

Özetle: gömme vektörü "güvenli sayı" değildir. Onu üreten metni geri kazanabilen bir saldırı sınıfı var, çok dilli ve Türkçe gömmeler bu sınıfın kapsamındadır ve doğru mühendislik cevabı — hukuki cevapla aynı — metni gömmeden önce temizlemektir.

Kaynaklar

İlgili Yazılar