TR | Adversarial Risk in Modern NLP Systems: LLM-Focused Threat and Attack Tactics — Part 1
Yapay Zeka sistemleri günümüzde her alanda ve iş kolunda kullanılmaya başlandı. Otomotiv, sağlık, finans, askeri alanlarda kullanılan karar-destek temelli modellerle çalışan otonom araçlar dünya sahnesine girdi bile. Ancak bu modellerin bazı taktik ve tekniklerle tehlikeli çıktılar verebileceği, özellikle sağlık, otomotiv, finans alanındaki karar-destek sistemlerinin ölümcül sayılabilecek çıktılar ve kararlar alabilceğini sıkça dile getiriyoruz. Bu makalemde dile getirmenin yanı sıra teknik derinliğine bakacak, NIST ve MITRE’nin yaptığı çalışmalara göz atacak ve son yayınlanan Akademik makaleleri inceleyeceğiz.
Makalemin İngilizce versiyonuna buradan ulaşabilirsiniz (The English version of this article is available at the following link) :
Yapay zeka sistemleri, özellikle de makine öğrenmesi modelleri bu alana özgü geliştirilen saldırı teknik ve taktikleriyle dizayn edilen siber güvenlik tehditlerine karşı oldukça hassastır. Adversarial saldırılar, modellerin girdilerini kasıtlı olarak manipüle ederek yanlış kararlar vermesine neden olan saldırı tipleridir. Bu saldırılar, AI’nin istatistiksel ve korelasyon temelli düşünme doğasını sömürür ve görüntü tanıma, doğal dil işleme veya otonom sistemler gibi alanlarda kritik riskli ve hatalı kararlar almasına neden olur. NIST’in Adversarial Machine Learning (AML) taxonomy’sine göre, saldırılar AI yaşam döngüsünün eğitim ve çıkarım aşamalarında gerçekleşebilir ve white-box, black-box ve gray-box bilgi seviyelerine göre sınıflandırılır.
Birazdan adversarial saldırıları detaylı analiz ederek, matematiksel temellerini açıklayacağım. Ayrıca PoC’ler ile çalışma yapılarını inceleyeceğiz. Analizlerimizle, predictive AI (PredAI, örneğin sınıflandırma) ve generative AI (GenAI, örneğin LLM’ler) üzerinde olacak.
Adversarial attacks, 2013'te Szegedy et al. tarafından tanıtılan adversarial examples kavramıyla popülerleşmiştir. NIST AI 100–2e2025 raporu, saldırıları evasion, poisoning, privacy ve prompt injection gibi kategorilere ayırır.
Makine öğrenmesi modellerine yönelik adversaryal tehditler birkaç kategoriye ayrılabilir. Evasion (atlatma)saldırılarında saldırgan, bir modelin girdi verisini ufak gürültülerle değiştirerek yanlış sınıflandırma yapmasına yol açar. Zehirleme (poisoning) saldırılarında ise eğitim verisine kasıtlı hatalı örnekler yerleştirilerek modelin bütünlüğü bozulur. Ayrıca model çıkarma (model extraction), üye çıkarımı (membership inference) gibi saldırılar modelin gizli bilgilerini sızdırmayı hedefler.
2025 yılında Japan AI Safety Institute tarafından yayınlanan bir kapsamlı çalışma, tahminleyici ve üretici Yapay Zeka sistemlerini hedef alan on bir ana saldırı türünü tanımlamıştır.
Bu saldırılara ilk olarak kısaca bakalım;
- Model Extraction: Saldırgan, yalnızca API / sorgu erişimi olan bir kapalı‑kaynak modeli benzer doğrulukta ters‑mühendislik yöntemleri ile çıkarmaya çalışır.
- Training Data-related: Saldırgan, modelin eğitildiği veri hakkındaki gizli bilgileri elde etmeye çalışır.
- Model Poisoning: Eğitim sonrası, ağırlıkların doğrudan bozmaya çalışılır, RHLF gibi feedback ile öğrenme metodlarıda kullanılıp bu saldırıda model manipüle edilebilir.
- Data Poisoning: Eğitim setine eklenen hatalı ve model karar-idrak sistemini bozacak kayıtlar modelin genel davranışını veya belirli girdiler üzerindeki çıktısını değiştirir.
- Evasion: Eğitilmiş modele, insan gözüne benzer ama ufak pertürbe edilmiş örnekler verip hatalı çıktı aldırmaya çalışılır.
- Energy-latency: Bu saldırı DoS temellerine benzer. Amaç, model servisinin maliyetini/yanıt süresini patlatmak ve kaynakları yetersiz hale getirmektir.
- Prompt Stealing: Kapalı system yada developer prompt’unu ifşa ederek modelin korunma politikasını çalmayı ya da başka yerde yeniden kullanmayı sağlamak hedeflenir.
- Prompt Injection: Kullanıcı girdisi içine gömülen talimatlarla, modelin üst düzey talimatları yani kısıtlamalarını gölgeleyip yetkisiz eylem veya bilgi sızıntısı oluşturma sağlanır.
- Code Injection: Model, kod üretirken saldırganın modele enjekte ettiği komutlarını çalıştırır. Örneğin nihai uygulamaya RCE veya XSS yerleştirir.
- Adversarial Fine-tuning: Saldırgan, baser modeli alıp minik veri ile kötücül davranışlara sahip varyantlar üretir.
- Rowhammer: Donanıma yönelik: DRAM hücrelerini hızlı vur‑kaç yani hammer ile bit‑flip; ağırlıklarda tek‑bit hatalar yaparak çıktı bozulması sağlanır veya arka kapı tetikletilir.
Detaylıca incelemeye başlayalım.
Model Extraction — Saldırı Stratejileri
Model Extraction saldırısının arkasındaki temel fikir, kapalı kaynak bir modelin davranışını gözlemleyerek, bu modelin bir kopyasını veya yakın bir benzerini oluşturmaktır. Biliyorsunuz ki, birçok şirket, büyük miktarda veri ve hesaplama kaynağına sahip değildir. O nedenle kendi başarılı bir modelini yapmak yada ücretsiz kullanmak için hazır olan bir modeli kullanarak üstün yeteneklere sahip modelleri kısa yoldan geliştirir. Ai alanında dev şirketlerin modelleri yani dünyanın en iyi ai modelleri genellikle API’ler aracılığıyla sunulur. Kullanırken modelden girdi ve çıktı alınır, ancak modelin kendisine doğrudan erişilemez. Model Extraction saldırısı, bu kara kutu erişimini kullanarak modelin içsel yapısını ve davranışını çözmeyi, modelin fikrî mülkiyetini çalmayı, eğitim verisine dair gizli bilgileri dolaylı olarak sızdırmayı hedefler.
Bu, yeterli sayıda girdi-çıktı çifti toplayarak, hedef modelin karar sınırlarını ve davranış kalıplarını öğrenerek yapılır. Aynı bir öğrencinin öğretmeninin sorularına verdiği cevapları gözlemleyerek öğretmenin düşünce yapısını anlamaya çalışması gibidir.
Akış şu şekilde yapılır;
Adım 1: Hedef Modelin Keşfi ve Analizi
İlk adım, hedef modelin özelliklerini anlamak üzerinedir. Saldırgan şunları belirlemeye çalışır;
- Girdi formatı: İlk olarak model hangi tür veri alıyor, öğrenilir. (görüntü, metin veya sayısal değerler mi?)
- Çıktı formatı: Ardından modelin ne tür sonuçlar ürettiğine bakılır. (Sınıflandırma mı, Regresyon mu, Olasılık dağılımları ile mi sonuç veriyor?)
- API limitleri: Sorgu sayısı sınırlaması veya çıktı engellemeleri var mı diye bakılır.
- Maliyet yapısı: Her sorgunun maliyeti nedir, API kullanım limit sınırlamaları nelerdir, bunlar öğrenilir.
Adım 2: Sorgu Stratejisinin Belirlenmesi
Bu adımda saldırgan, en verimli şekilde bilgi toplamak için hangi sorguları göndereceğini belirler. Saldırganın ilerleyeceği üç ana strateji şöyledir:
- Rastgele Örnekleme: Hedef modelin girdi uzayından rastgele örnekler seçilir. Bu basit ama verimsiz olabilir.
- Aktif Öğrenme Tabanlı Örnekleme: Saldırgan, en fazla bilgi sağlayacak örnekleri seçer. Örneğin, bu stratejide karar sınırlarına yakın noktalar daha değerlidir.
- Sentetik Veri Üretimi: Saldırgan, bu stratejide hedef modelin davranışını keşfetmek için özel olarak tasarlanmış girdiler oluşturur.
Adım 3: Veri Toplama Süreci
Bu adımda saldırgan sistematik olarak sorguları göndermeye başlar. Bu adımı bir kredi skorlama modeli örneği üzerinden daha net anlayalım;
# Örnek saldırı kodu - sadece eğitim amaçlı
def collect_training_data(target_api, num_queries):
training_data = []
for i in range(num_queries):
# Sentetik finansal profil oluştur
synthetic_profile = {
'age': random.randint(18, 80),
'income': random.randint(20000, 200000),
'credit_history': random.randint(300, 850),
'debt_ratio': random.uniform(0, 1),
'employment_years': random.randint(0, 40)
}
# Hedef modelden tahmin al
prediction = target_api.predict(synthetic_profile)
# Eğitim verisi olarak kaydet
training_data.append((synthetic_profile, prediction))
return training_dataAdım 4: Lokal’de yeni Modelin Eğitimi
Toplanan verilerle saldırgan artık kendi modelini eğitmeye başlayacaktır. Burada kritik nokta, hedef modelin mimarisini tam olarak bilmemize gerek olmamasıdır. Sadece girdi-çıktı ilişkisini öğrenmek yeterlidir. Bunuda şu tarz bir script ile çağlayabilir;
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
def train_surrogate_model(training_data):
X = [list(sample[0].values()) for sample in training_data]
y = [sample[1] for sample in training_data]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# Simple surrogate model
surrogate_model = RandomForestClassifier(n_estimators=100, random_state=42)
surrogate_model.fit(X_train, y_train)
# Evaluate performance
y_pred = surrogate_model.predict(X_test)
acc = accuracy_score(y_test, y_pred)
print(f"Surrogate model accuracy: {acc:.4f}")
return surrogate_modelAdım 5: Model Doğrulama ve İyileştirme
Saldırgan son olarak çıkarılan modelin performansını test eder ve gerekirse daha fazla sorgu göndererek modeli iyileştirir. Özellikle modelin hatalı tahmin yaptığı parametre bölgelerinde daha fazla örnek toplanır.
Model Extraction — Savunma Stratejileri
Model sahipleri bu saldırı stratejilerine karşı çeşitli savunma teknikleri uygulayabilir. Bunlar;
- Çıktı Pertürbasyonu: Model çıktılarına küçük rastgele gürültü eklenerek çıkarma zorlaştırılır.
- Sorgu Bütçeleme: Her kullanıcıya sınırlı sayıda sorgu hakkı verilir. Bu günümüzde çoğu Ai API Provider’larında geçerlidir.
- Filigran Ekleme: Modele, çıkarılan kopyalarda tespit edilebilecek gizli işaretler eklenir. Bu sayede büyük çaplı kopyalamalar tespit edilip hukuksal haklar kullanılabilir.
Training Data-related Attacks — Saldırı Stratejileri
Bu başlıkta eğitim verisiyle ilgili adversarial ataklara odaklandığımız için, bu kapsamda veri zehirleme ataklarını detaylıca ele alalım. Veri zehirleme, adversarial atakların eğitim verisini hedefleyen bir alt türüdür ve modelin bütünlüğünü bozmak için eğitim verisetine kasıtlı olarak müdahale etmeyi içerir.
Veri zehirleme atakları, bir saldırganın eğitim verisini kasıtlı olarak bozarak eğitilen modelin test verileri üzerindeki tahminlerini değiştirmesini amaçlar. Bu sayede, modelin belirli test örnekleri üzerinde istenmeyen davranışlar sergilemesi sağlatılır. NIST’in raporunda da tanımlandığı üzere, veri zehirleme atakları eğitim fazını hedefler ve modelin güvenilirliğini tehlikeye atmaktadır. Bu, özellikle büyük ölçekli veri setlerinin kullanıldığı senaryolarda etkili olur, çünkü saldırgan eğitim verilerine erişim sağlayarak veya veri kaynaklarını etkileyerek gerçekleştirebilir. Amaç, modelin test zamanında belirli hatalar yapmasını sağlamaktır. Bu arada karıştırılacak diğer kavram olan Model zehirleme ise, eğitim sürecinin doğrudan kontrolüyle model parametrelerini etkilemeyi içerir.
Saldırganın bilgi düzeyini de belirli tanımlamalarla ayırırız;
- White-box: Eğitim verisi ve model parametrelerine tam erişim olduğu durumdur. Saldırgan, gradient tabanlı optimizasyonlarla zehirli verileri hesaplayabilir.
- Black-box: Model hakkında bilgi olmadığı; yalnızca model çıktılarının sorgulandığı durumdur.
- Gray-box: Kısmi bilgi olduğu durumdur, örneğin model mimarisi bilinir ama parametreler bilinmez.
Yeni zehirli veriler ekleme, mevcut verilerin özelliklerini veya etiketlerini değiştirme. Gerçekçi senaryolarda clean-label ataklar yaygındır; burada etiketler değiştirilmez, yalnızca özellikler manipüle edilir.
Veri Zehirleme Ataklarının Türleri
Bu ataklar, saldırganın amacına ve etki kapsamına göre sınıflandırılır. NIST taxonomisine göre , ana türleri şunlardır:
- Availability Attacks: Modelin genel performansını bozar, çoğu test örneğinde yanlış sınıflandırma yapar. Örneğin label flipping ile bir sınıftan örnekleri başka sınıf etiketiyle ekleme yapılır. Optimizasyon tabanlı örnekte SVM veya lineer regresyon için kayıp fonksiyonunu maksimize etmek üzere zehirli veriler hesaplanır. gerçek hayat örneği olarak, spam filtrelerinde zehirli e-postalar ekleyerek modelin doğruluğunu %50'nin altına düşürme sağlanabilir.
- Targeted Attacks: Bu saldırılar belirli veya az sayıda test örneğini etkiler yani diğerlerinde model normal çalışır. Eğitim zamanında hedef örnekler bilinmelidir.
- Backdoor Attacks: Eğitim verilerine trigger eklenir yani, test zamanında trigger içeren örnekler yanlış sınıflandırılır. Trigger sabit (piksel), dinamik veya semantik olabilir.
- Subpopulation Attacks: Belirli bir alt grup test örneklerini etkiler yani, grup boyutu targeted ile availability arasında değişir.
Label Flipping
En basit yöntem, etiketleri değiştirmedir. Örneğin:
def label_flipping_attack(dataset, poison_rate=0.1):
poisoned_dataset = []
for data, label in dataset:
if random.random() < poison_rate:
# Etiketi ters çevir
new_label = "spam" if label == "normal" else "normal"
poisoned_dataset.append((data, new_label))
else:
poisoned_dataset.append((data, label))
return poisoned_datasetFeature Manipulation
Veri özelliklerini stratejik olarak değiştirmedir. Örneğin;
def feature_poisoning_attack(image_data, target_class):
# Görüntüye gizli bir pattern ekle
poisoned_image = image_data.copy()
# Köşeye küçük bir işaret ekle
poisoned_image[0:5, 0:5] = specific_pattern
return poisoned_image, target_classGradient-Based Poisoning
Model gradyanlarını kullanarak optimize edilmiş zehirli örnekler oluşturulur. Örneğin:
def gradient_based_poisoning(model, clean_data, target_misclassification):
# Model üzerinde maksimum etkiyi yaratacak
# zehirli örneği gradyan yöntemlerle bul
poison_example = clean_data.copy()
for iteration in range(max_iterations):
gradient = compute_influence_gradient(model, poison_example)
poison_example += learning_rate * gradient
return poison_exampleTraining Data-related Attacks — Savunma Stratejileri
Veri zehirleme ataklarına karşı savunmaları üç kategoride toplayabiliriz;
- Data Sanitization: Zehirli noktalar tespit edilir, outlier detection (k-means, anomaly detection) veya provenance analizi kullanılır. Zorluları olarak; Genel verileri atmamak sayılabilir.
- Robust Optimization: Kayıp fonksiyonu değiştirilmelidir, örneğin robust loss ile zehirli örneklerin etkisi sınırlanmalıdır. Sertifikalı savunmalar da tercih edilebilir. Örneğin, Label-flipping için randomization, belirli % zehirli veriye karşı garanti verir.
- Model İnceleme ve Onarım (Model Inspection and Repair): Backdoor’lar için nöron aktivasyon farklarını analiz edilmelidir. Trigger’ları reverse-engineer edilir.
Böylece ilk part’ımızı tamamladık. Bu saldırıların oldukça güzel ve ilgi çekici bir alan olduğunu düşünüyorum. Umarım sizinde hoşunuza gitmiştir. Bir sonraki bölümde görüşmek üzere :)
