Türkçe-Öncelik Araştırma · OWASP LLM10

Türkçe Token Verimsizliği Bir Güvenlik Sorunudur
Bağlam taşması, kesilen guardrail ve maliyet saldırısı

Türkçe metnin İngilizce'ye kıyasla çok daha fazla token'a bölünmesi yalnızca bir maliyet kalemi değildir; sistem promptunu bağlam dışına iten, guardrail girdi sınırını erken dolduran ve OWASP LLM10 sınırsız tüketim saldırısını Türkçe kullanıcı aleyhine ucuzlatan somut bir saldırı yüzeyidir.

Türkçe Token Verimsizliği Nedir?

Türkçe token verimsizliği, İngilizce metin üzerinde ağırlıklı eğitilmiş alt-kelime (subword) tokenizer'ların Türkçe'yi İngilizce'ye kıyasla çok daha fazla parçaya bölmesi durumudur. Bir modelin işlediği temel birim kelime değil token'dır; tokenizer bir cümleyi ne kadar çok token'a bölerse, aynı anlam için o kadar fazla bağlam penceresi tüketilir ve o kadar fazla çıkarım maliyeti oluşur. Türkçe gibi eklemeli (agglutinative) dillerde tek bir kök çok sayıda ek alarak uzun kelimeler üretir; İngilizce sözcük parçalarına göre kalibre edilmiş bir tokenizer bu ekleri tanımadığı için kelimeyi çok sayıda küçük parçaya böler. Literatürde bu “bereket” (fertility) değeriyle ölçülür ve eklemeli dillerde İngilizce'ye göre 2-3 kata kadar yüksek çıkar.

Bu makalenin tezi basittir: token verimsizliği sadece bir bütçe kalemi değil, bir güvenlik değişkenidir. Aynı bağlam penceresine, aynı girdi kesme sınırına ve aynı hız/maliyet limitine tabi bir sistemde Türkçe kullanıcı, İngilizce kullanıcıyla eşit korunmaz. Aşağıda bu farkı önce AltaySec'in kendi ölçümüyle sayısallaştırıyor, ardından verimsizliği güvenlik açığına çeviren üç mekanizmayı ve doğru limit hesabını ele alıyoruz.

Ölçüm: AltayDuel İstemlerinde Gerçek Token Oranları

Genel “2-3x” ifadesi literatürden gelir; ancak somut bir rakam için kendi verimizi ölçtük. AltaySec'in AltayDuel kırmızı takım arenasından dışa aktarılan 3.298 düello kaydındaki gerçek saldırı ve savunma istemlerini, OpenAI'nin cl100k_base (GPT-3.5/GPT-4 ailesi) tokenizer'ıyla token'ladık. Türkçe ağırlıklı 3.990 istem ile İngilizce 2.595 istemi karşılaştırdık.

ÖlçümTürkçeİngilizceOran (TR/EN)
Token / kelime2,821,491,90x
Token / karakter0,390,241,64x
Karakter / token2,544,160,61x
Medyan istem uzunluğu (token)4583241,41x

Kaynak: AltaySec'in kendi ölçümü — AltayDuel v0.2 istem dökümü, tokenizer cl100k_base. Kelime başına düşen token açısından Türkçe istemler İngilizce'ye göre yaklaşık 1,9 kat, karakter başına ise 1,64 kat daha fazla token tüketti. Bu, literatürdeki 2-3x fertility aralığıyla tutarlıdır.

“Aynı içerik” karşılaştırması için kontrollü bir örnek de ölçtük: aynı guardrail talimatının anlamca birebir İngilizce ve Türkçe hâli. İngilizce metin 58 token, aynı anlamı taşıyan Türkçe metin 111 token oldu — oran yine 1,91x. Yani pratikte kural şudur: Türkçe'ye çevrilen aynı talimat, yaklaşık iki katı token yer kaplar.

Mekanizma 1: Sistem Promptunun Bağlam Dışına İtilmesi

Çoğu sohbet ve ajan mimarisinde sistem promptu (kimlik, kısıtlar, guardrail talimatları) bağlam penceresinin başına yerleştirilir; kullanıcı ve model mesajları biriktikçe pencere dolar. Pencere kapasitesi aşıldığında en eski token'lar, ki bunlar çoğu zaman sistem promptu ve erken guardrail talimatlarıdır, ya kırpılır ya da modelin dikkat ağırlığında zayıflar.

Türkçe'de her mesajın yaklaşık iki kat token tüketmesi, pencerenin iki kat daha hızlı dolması anlamına gelir. Sabit uzunlukta bir konuşmada Türkçe oturum, İngilizce oturuma göre çok daha erken kırpma eşiğine ulaşır. Bunu gösterilmiş bir zafiyet olarak değil, bir mekanizma hipotezi olarak sunuyoruz: bağlam penceresini uzun, çok turlu ve yoğun Türkçe girdiyle bilinçli şişirmek, savunma talimatlarını modelin etkin dikkat alanından uzaklaştırabilir. Bu, yalnızca sistem promptuna dayanan savunmanın neden yeterli olmadığını anlatan tezle aynı yöne bakar: token bütçesi bir kaynaktır ve tükendiğinde ilk feda edilen genellikle güvenliktir.

Mekanizma 2: Guardrail Girdi Kesme Sınırının Türkçe'de Erken Dolması

Girdi tabanlı guardrail'ler (istem enjeksiyonu sınıflandırıcıları, PII maskeleyiciler, içerik filtreleri) genellikle bir maksimum girdi uzunluğuna sahiptir. Bu sınır çoğu zaman token cinsinden tanımlanır çünkü model ve sınıflandırıcı token'la çalışır. Sınırı aşan girdi ya kesilir ya reddedilir. Sorun şu: eğer sınır token cinsindeyse ama tehdit değerlendirmesi metnin tamamına bağlıysa, Türkçe metin çok daha az karakterde bu tavana çarpar.

AltayDuel ölçümümüzdeki karakter/token oranlarını (Türkçe 2,54, İngilizce 4,16) sabit bir token kapağına uygularsak, aynı guardrail'in kaç karakterlik metni gördüğünü türetebiliriz:

Guardrail girdi kapağı (token)Türkçe'de sığan (~karakter)İngilizce'de sığan (~karakter)
256~650~1.064
512~1.300~2.129
1024~2.601~4.259

AltaySec'in kendi ölçümünden türetilmiştir. 512 token'lık tipik bir sınıflandırıcı girdi kapağında Türkçe metin yaklaşık 1.300 karakterde kesilirken İngilizce metin 2.129 karaktere kadar değerlendirilir — Türkçe kullanıcı için etkin görünürlük penceresi yaklaşık %61. Saldırı açısından sonuç nettir: zararlı yükü, guardrail'in kesme sınırından sonrasına yerleştirmek Türkçe'de daha az dolgu metni gerektirir. Sınıflandırıcı ilk 512 token'ı görüp temiz bulur, kesilen kısımdaki enjeksiyon ise modele ulaşır.

Mekanizma 3: OWASP LLM10 Sınırsız Tüketim ve Maliyet Saldırısı

OWASP LLM Top 10 (2025) listesinde LLM10 — Sınırsız Tüketim (Unbounded Consumption), bir saldırganın hizmeti aşırı veya kontrolsüz çıkarım talebine zorlayarak maliyet patlatması, hizmet reddi (DoS) ve kaynak tükenmesi yaratması kategorisidir. Çıkarım maliyeti doğrudan işlenen token sayısıyla orantılı olduğundan, token verimsizliği bu saldırının ekonomisini değiştirir.

Türkçe girdi, sağlayıcı faturalandırması token üzerinden yapıldığı için aynı karakter miktarında yaklaşık 1,6-1,9 kat daha fazla ücretlendirilir. Bu iki yönlü bir sorundur:

  • Savunan aleyhine: Türkçe hizmet veren bir kurum, eşdeğer İngilizce iş yüküne göre token başına aynı ama toplam token'da belirgin şekilde daha yüksek çıkarım maliyeti taşır. Saldırgan, uzun Türkçe istemlerle bu maliyeti daha az istekle şişirebilir.
  • Maliyet asimetrisi: Sınırsız tüketim saldırısında saldırganın amacı kurbanın kaynağını tüketmektir. Türkçe'de token/karakter oranının yüksekliği, saldırganın gönderdiği her karakterin kurbanın faturasında daha ağır tartılması demektir — yani saldırı karakter başına daha “verimli” hale gelir.

Bu yüzden hız ve harcama limitlerini yalnızca istek sayısı veya karakter uzunluğu üzerinden kuran sistemler Türkçe iş yükünde yanılır. Doğru muhasebe token cinsinden yapılmalıdır; OWASP LLM10'un tüm ayrıntısı için OWASP LLM Top 10 Türkçe rehberimize bakılabilir.

Doğru Limit Hesabı: Karakter Değil, Dile Kalibre Token

Üç mekanizmanın da ortak kök nedeni aynıdır: güvenlik limitlerinin yanlış birimle, çoğu zaman karakter cinsinden ve İngilizce varsayımıyla tanımlanması. Doğru yaklaşım limitleri token cinsinden ölçmek ve dile göre kalibre etmektir.

Emniyetli karakter sınırı formülü:

guvenli_karakter_siniri = token_butcesi × karakter_per_token(dil)

# AltayDuel ölçümünden (cl100k_base):
#   karakter_per_token(TR) ≈ 2,54
#   karakter_per_token(EN) ≈ 4,16

# 512 token'lık bir guardrail kapağı için:
TR: 512 × 2,54 ≈ 1.300 karakter
EN: 512 × 4,16 ≈ 2.129 karakter

Tersten, bir metnin gerçek token maliyetini tahmin etmek için:

tahmini_token = karakter_sayisi ÷ karakter_per_token(dil)

Uygulamada üç kural yeterlidir: (1) girdi kesme, hız ve harcama limitlerini token cinsinden ölç, karakter değil; (2) sabit token bütçelerini dilin fertility değerine göre kalibre et, İngilizce varsayımıyla değil; (3) mümkünse eşdeğer güvenlik için Türkçe iş yüklerine daha yüksek token tavanı ayır, aksi hâlde Türkçe kullanıcı daha az korunur. Bu üç kural, üç mekanizmayı da aynı anda kapatan tek müdahaledir.

Savunma ve AltaySec Konumu

Token verimsizliğini bir güvenlik değişkeni olarak ele almak, tek başına bir kural eklemekten çok bir ölçüm disiplinidir. AltaySec tarafında bunu iki yerde kurumsallaştırıyoruz. Scanner tarafında, guardrail girdi kesme davranışını Türkçe yüklerle test ederek kesme sınırından sonrasına yerleştirilen enjeksiyonların modele ulaşıp ulaşmadığını denetliyoruz. Guardian (LLM güvenlik duvarı) tarafında girdi ve limit politikalarını token cinsinden ve dile kalibre ederek uyguluyoruz; böylece Türkçe girdi, sabit bir karakter varsayımıyla yanlış kesilmiyor. Guardrail mimarisinin çalışma prensipleri için çalışma zamanı guardrail'leri ve LLM güvenlik duvarı yazılarımıza bakılabilir.

Bu bulgu, morfolojinin ayrı bir saldırı yüzeyi olduğu tezini tamamlıyor: Türkçe morfolojik LLM bypass saldırganın ekleri sınıflandırıcıyı atlatmak için kullanmasını anlatırken, buradaki mekanizma aynı morfolojinin token ekonomisini nasıl kurbanın aleyhine çevirdiğini gösteriyor. Türkçe metni işleyen her ekip için pratik özet tek cümledir: token'ı karakter sanmak, Türkçe kullanıcıyı yarım koruma altına almaktır. Bu ölçümleri kendi sisteminizde tekrarlamak veya bir güvenlik değerlendirmesi için bizimle iletişime geçebilirsiniz.

Kaynaklar

İlgili Yazılar