Savunma Mühendisliği · MLSecOps

Semantik Firewall: Gömme Tabanlı Prompt Injection Tespiti
Regex'i ne zaman yeniyor, Türkçe'de ne zaman çöküyor?

Bir güvenlik filtresini anlam düzeyinde çalıştırmak, kelime düzeyinde çalıştırmaktan çok daha dayanıklıdır — ta ki Türkçe'nin eklemeli yapısı ve casefold davranışı gömme mesafesini bozana kadar. Bu yazı üç tespit katmanının nerede kazanıp nerede çöktüğünü aynı saldırı sınıfları üzerinden karşılaştırıyor.

Semantik firewall nedir?

Semantik firewall, bir dil modeline giden istemi (prompt) veya modele geri dönen çıktıyı, sabit anahtar kelime listeleri yerine anlamsal gömme (embedding) uzayında değerlendiren bir güvenlik katmanıdır. Metin bir vektöre dönüştürülür ve bilinen saldırı örnekleriyle arasındaki anlamsal yakınlık (kosinüs benzerliği gibi) ölçülür; eşik aşıldığında istem engellenir, karantinaya alınır veya insana yükseltilir. Böylece filtre, saldırının birebir kelimelerini değil niyetini arar.

Klasik güvenlik duvarından farkı, kararı statik bir kural setiyle değil öğrenilmiş bir temsil üzerinden vermesidir. Bu yüzden aynı talimatın "önceki talimatları yok say", "yukarıdaki kuralları unut" ya da Base64'e kodlanmış hâli, yüzeyde tamamen farklı görünse de anlam uzayında birbirine yakın düşer. Semantik firewall bir üründen çok bir mimari desendir; pratikte tek başına değil, bir imza katmanı ve bir eğitilmiş sınıflandırıcıyla birlikte bir LLM firewall hattının orta halkası olarak konumlanır.

Bu yazıda üç tespit katmanını — regex/imza, gömme-benzerliği ve eğitilmiş sınıflandırıcı — aynı saldırı sınıfları üzerinden karşılaştırıyor; her birinin hangi saldırıyı tek başına yakaladığını ve özellikle Türkçe'de nerede çöktüğünü inceliyoruz.

Üç tespit katmanı ve çalışma mantığı

Prompt injection tespitinde yaygın üç katman, artan maliyet ve artan anlam duyarlılığı sırasıyla dizilir:

  • Regex / imza (keyword blacklist): Metni normalleştirir ve "ignore all previous instructions" gibi bilinen tetikleyici alt dizgileri arar. Deterministik, milisaniyenin altında, açıklanabilir. Zayıflığı: yalnızca gördüğü kalıbı yakalar; parafraz, eş anlamlı, çeviri veya kodlama karşısında kördür. Literatür bu körlüğü açıkça belgeler.
  • Gömme-benzerliği (semantik firewall): Metni vektöre gömer, bilinen saldırı örnekleriyle benzerliğine bakar. Parafraz ve yeniden yazımı yakalar çünkü karar yüzey biçimine değil anlama dayanır. Maliyeti gömme çıkarımı kadardır; eşik ayarı yanlış-pozitif ile kaçırma arasındaki dengeyi belirler.
  • Eğitilmiş sınıflandırıcı: Etiketli "iyi/kötü istem" verisiyle eğitilmiş bir model (çoğu zaman gömmeler üzerine bir sınıflandırıcı) doğrudan olasılık üretir. Literatürde gömme tabanlı sınıflandırıcılar yüksek doğruluğa ulaşabiliyor; MDPI Algorithms çalışmasında yüzde 97,7 doğruluk ve 0,977 F1 raporlanmıştır. Maliyeti en yüksek, kara-kutuluğu en fazla, ama isabeti de en yüksek katmandır.

Bu üç katmanın tamamlayıcı olduğunu peşinen not edelim: hız (regex), esneklik (gömme) ve isabet (sınıflandırıcı) aynı katmanda toplanamaz.

Katmanların nitel karşılaştırması

Aşağıdaki tablo üç katmanı davranışsal özellikleriyle karşılaştırır. Önemli çekince: tabloda yer alan tek sayısal değer (F1 ~0,977) dış literatürden alınmıştır ve gömme tabanlı eğitilmiş sınıflandırıcıya aittir; diğer hücreler nitel karakterizasyondur. AltaySec olarak bu üç katmanı aynı Türkçe saldırı seti üzerinde uçtan uca ölçen kontrollü bir kıyas henüz yayımlamadık; dolayısıyla buradaki regex ve gömme satırlarına kendi ölçtüğümüz bir F1/gecikme sayısı atfetmiyoruz.

ÖzellikRegex / İmzaGömme-benzerliğiEğitilmiş sınıflandırıcı
Karar temeliYüzey biçimi (alt dizge)Anlamsal yakınlıkÖğrenilmiş olasılık
Parafraz/kodlama direnciDüşük (kör)Orta-yüksekYüksek
İsabet (literatür)Kalıp bazlıÖrnek kalitesine bağlıF1 ~0,977 (MDPI)
Yanlış-pozitif eğilimiDüşük (dar kapsam)Eşiğe duyarlıEğitim verisine bağlı
Gecikme mertebesiEn düşükOrta (gömme çıkarımı)En yüksek
AçıklanabilirlikYüksekOrtaDüşük

Tablodan çıkan yön nettir: hiçbir sütun tek başına "kazanan" değildir. Regex hızlı ama esnemez; gömme esnek ama eşik ve örnek havuzuna esir; sınıflandırıcı isabetli ama pahalı ve opak. Gerçek soru "hangisi" değil, "hangi sırayla" sorusudur.

Türkçe'ye özgü çöküş nedenleri

İngilizce ölçütlerde parlak görünen katmanlar Türkçe'de sessizce zayıflar. İki yapısal neden öne çıkar.

1. Casefold kaçınması: "İGNORE".lower() beklediğin şey değil

Regex katmanlarının büyük çoğunluğu metni önce küçük harfe indirger. Ancak Python'un yerelden bağımsız str.lower() çağrısı, Türkçe noktalı büyük İ (U+0130) harfini düz i yerine i + birleşen üstteki nokta (U+0307) olarak eşler:

>>> "İGNORE ALL PREVIOUS INSTRUCTIONS".lower()
'i̇gnore all previous instructions'   # ilk i'de fazladan nokta
>>> "ignore all previous instructions" in "İGNORE ALL PREVIOUS INSTRUCTIONS".lower()
False                                 # filtre kaçırır

Aynı sorun noktasız ı (U+0131) ve Kiril/Yunan/tam-genişlik benzeşikleri için de geçerlidir. Modele metin hâlâ talimat gibi okunur; filtreye görünmez olur. AltaySec'in turkish-casefold-evasion çalışması bu vektörü belgeliyor ve mekanizma dış olarak da doğrulandı: NVIDIA garak red-team aracına gönderilen Türkçe casefold zenginleştirmesi (garak#1997) aynı davranışı üretiyor. Kritik nokta şudur: casefold bozulması yalnızca imza katmanını değil, gömme öncesi normalleştirmeyi de kirletirse benzerlik mesafesini de kaydırır.

2. Eklemeli morfoloji gömme mesafesini seyreltir

Türkçe eklemeli bir dildir; bir kök onlarca çekimli biçime bürünür ("yoksay", "yoksayarak", "yoksaymalısın", "yok saymanı"). Çoğu gömme modeli İngilizce ağırlıklı verilerle eğitildiğinden, bu biçimler anlamca aynı olsa da vektör uzayında beklenenden dağınık düşebilir. Sonuç: bilinen bir saldırı örneğine anlamca yakın olması gereken bir Türkçe varyant, kosinüs benzerliği eşiğinin altında kalıp sızabilir. Bu mekanizmayı Türkçe morfolojik LLM bypass yazımızda ayrıntılandırdık. AltaySec'in kendi guardrail-arena ölçütünde de, İngilizce'de iyi çalışan hazır jailbreak sınıflandırıcılarının Türkçe varyantların önemli bir bölümünü kaçırdığını gözlemledik — bu, dış-genel bir gerçek değil AltaySec'in kendi ölçümüdür ve tam da bu morfoloji/normalleştirme boşluğuna işaret eder.

Kapsama matrisi: hangi katman hangi saldırıyı tek başına yakalar

Katmanları saldırı sınıflarına göre haritalamak, neden hibridin zorunlu olduğunu tek bakışta gösterir. Aşağıdaki matris niteldir ve mekanizmadan türetilmiştir; kesin oran değil, kapsama yönü verir.

Saldırı sınıfıRegexGömmeSınıflandırıcı
Birebir bilinen kalıp ("önceki talimatları yok say")YakalarYakalarYakalar
Parafraz / eş anlamlı yeniden yazımKaçırırYakalarYakalar
Base64 / kodlama ile gizlemeKaçırırKısmi (çözülmezse)Kısmi
Casefold / Unicode benzeşik kaçınmasıKaçırır (normalleştirme yanlışsa)Kısmi (normalleştirmeye bağlı)Kısmi
Türkçe eklemeli çekim varyantıKaçırırKısmi (mesafe seyrelir)Eğitim verisi Türkçe içeriyorsa yakalar
Yeni/görülmemiş sıfırıncı-gün kalıbıKaçırırKısmi (yakın örneğe bağlı)Kısmi (genelleme kadar)

Matrisin okunması sade: hiçbir satırda tek bir katman üç sütunun işini yapmıyor. Regex, casefold doğru yapılırsa bilinen kalıpta ucuz ve kesin; gömme, parafrazda güçlü ama kodlama ve Türkçe çekimde zayıflıyor; sınıflandırıcı en geniş kapsamlı ama sıfırıncı-gün ve dil kapsama boşluklarına açık. Kapsama boşlukları örtüşmediği için katmanlar birbirinin körlüğünü kapatır.

Neden hibrit mimari zorunlu?

Yukarıdaki matris, hibrit mimarinin bir tercih değil bir gereklilik olduğunu gösterir. Pratik bir dizilim şöyledir:

  1. Normalleştirme kapısı: Türkçe-farkında casefold (locale-doğru İ/ı eşleme), Unicode benzeşik katlama ve kodlama çözme. Bu adım atlanırsa alttaki iki katman da kirli girdiyle çalışır.
  2. İmza katmanı: Bilinen kalıpları milisaniyenin altında, deterministik ve açıklanabilir biçimde eler. Ucuz kazanımları buradan toplar.
  3. Semantik firewall: İmzanın kaçırdığı parafraz ve yeniden yazımları anlam uzayında yakalar; eşik, iş yükünün yanlış-pozitif toleransına göre ayarlanır.
  4. Eğitilmiş sınıflandırıcı: Belirsiz kalan girdiler için son ve en isabetli karar. Türkçe etiketli veriyle eğitildiğinde eklemeli varyant kapsaması belirgin biçimde artar.

Bu dizilim, her katmanın güçlü olduğu yerde ucuz, zayıf olduğu yerde bir üst katmana devrettiği bir savunma derinliği kurar. AltaySec'in prompt-injection-detection-rules kural seti bu hattın imza bacağını, Guardian motorunun hibrit yapısı ise normalleştirme + anlamsal + sınıflandırıcı bileşimini örnekler. Türkçe rakamla kapsanan kontrollü uçtan uca kıyaslar bu alanda hâlâ seyrek; bu boşluğu kapatan ölçümlerin çoğalması sahanın geneli için faydalı olacaktır.

Çalışma zamanı guardrail tasarımının daha geniş çerçevesi için çalışma zamanı LLM guardrail'leri ve tehdit modeli için prompt injection tehdit modeli yazılarımıza bakılabilir.

Sonuç ve uygulama önerileri

Semantik firewall, regex'in en zayıf olduğu yerde — parafraz, eş anlamlı, yeniden yazım — devreye giren güçlü bir katmandır ve eğitilmiş sınıflandırıcıyla birlikte literatürde yüksek isabet üretir. Ancak Türkçe iki yerde bu katmanı da yaralar: locale-yanlış casefold girdiyi filtreye görünmez kılar, eklemeli morfoloji ise anlam mesafesini seyrelterek benzerlik eşiğinin altına düşürür. Bu iki mekanizma birbirinden bağımsız olduğu için tek bir katmanla kapatılamaz.

Pratik çıkarım: (1) her şeyden önce Türkçe-farkında normalleştirme kurun; (2) imza, semantik ve sınıflandırıcı katmanlarını sırayla dizin; (3) eşikleri kendi trafiğinizle ölçün, literatür sayısını kopyalamayın; (4) sınıflandırıcıyı Türkçe etiketli veriyle besleyin. Kurumsal bir LLM hattında bu hibrit yapıyı devreye almak için AltaySec Guardian ekibiyle iletişime geçebilirsiniz.

Kaynaklar

İlgili Yazılar