Göz Ardı Edilen Tehdit Yüzeyi: Yapay Zeka (AI) Model Dosyalarında Gizlenen Sıfırıncı Gün (0-Day) Zafiyetleri
Siber güvenlik dünyasında herkes API güvenliğine, web zafiyetlerine veya bulut sızıntılarına odaklanmışken devasa bir tehdit yüzeyi göz ardı ediliyor: Makine Öğrenimi (ML) Model Dosyası Formatları.
Aylarca eğitilen ChatGPT gibi devasa modellerin ağırlıklarını (weights) bir yere kaydetmeniz gerekir. Ancak .pkl, .gguf, .onnx veya .pth gibi uzantılara sahip bu dosyalar sadece "veri yığınlarından" ibaret değildir. Kendi ayrıştırma (parsing) tuhaflıkları ve işletim sistemiyle etkileşime girebilen derin yapıları vardır.
Kritik an neresi mi? Bir kullanıcının (veya geliştiricinin) o model dosyasını belleğe yüklediği andır. Arabellek taşmaları (buffer overflows), uzaktan kod çalıştırma (RCE) ve geleneksel tersine mühendisliğin tüm karanlık sanatları, henüz güvenlik araştırmacıları tarafından yeterince deşilmemiş bu yeni alanda uyanır. Eğer Bug Bounty (ödül avcılığı) yapıyorsanız veya kurumunuzun ML süreçlerini korumak istiyorsanız, siber güvenliğin en bakir alanına hoş geldiniz.
Eresus Security olarak, AI model dosyalarında gizlenen en tehlikeli mimari zafiyetleri (Model File Vulnerabilities - MFV) inceliyoruz.
1. GGUF Dosyalarında Heap Overflow (Arabellek Taşması)
Zafiyetin Doğası
GGUF formatını kullanan kütüphaneler (örn. ggml), modelin anahtar-değer (key-value) çiftlerini okurken parsing (ayrıştırma) mantığını kullanır. Eğer C/C++ kodları dosya başlığındaki n_kv (kaç adet girdi okunacağı) değişkenini doğru doğrulamazsa, heap üzerinde (bellekte) ayrılan alanın dışına yazma (Out-of-Bounds Write) hatası oluşur.
Nasıl Çalışır?
Dosya başlığında n_kv adında, bellek yöneticisine kaç adet değer beklediğini söyleyen bir alan vardır. Yükleyici (Loader) bu sayıya göre bellekte (RAM) bir dizi oluşturur. Eğer saldırgan n_kv değerini devasa veya manipüle edilmiş bir sayı olarak değiştirirse, kod ayrılan belleğin dışına taşarak sistemi çökertebilir veya sistemde yetki yükseltebilir.
Ne Aramalısınız? Bellek tahsisinin (malloc), dosyadan okunan güvenilmeyen sayaçlara (n_kv, count vb.) dayandığı read_weights() veya parse_header() gibi C/C++ fonksiyonları açık hedeftir.
2. Keras Lambda Katmanları: Güvenilmez Kodların Çalıştırılması
Keras modelleri (.h5 vb.), Lambda katmanları içinde "özel kod" (Custom code) barındırabilir. Bu özellik geliştiricilere esneklik sağlasa da, bu modellerin yüklenmesi, o katmanın içindeki kodların sorgusuz sualsiz çalıştırılması anlamına gelir.
Güvenilmeyen bir kaynaktan indirilen bir Keras modelinde saldırgan, modeli yüklediğiniz an (Bkz: model = tf.keras.models.load_model('model.h5')) çalışacak bir Python işletim sistemi komutu (OS command) gizletebilir:
# Zafiyetli Lambda Katmanı Örneği
model = Sequential([
Dense(64, input_shape=(32,)),
# Model yüklendiği an tetiklenip arka kapı açılacak!
Lambda(lambda x: eval("__import__('os').system('echo breach')" or x)),
Dense(10, activation='softmax')
])
Ne Aramalısınız? Dökümanlarda yer alan "custom ops", "istediğiniz Keras modelini yükleyin", "dinamik katman desteği" gibi kavramlar, ortada bir sandbox (korumalı alan) yoksa net bir kırmızı bayraktır.
3. ONNX ve Kontrol Akışı (Control Flow) Manipülasyonları
ONNX (Open Neural Network Exchange), modellerin çeşitli platformlar arasında taşınmasını sağlar. Ancak ONNX mimarisi, derin kontrol akışlarını (If/Loop düğümleri) ve özel operatörleri (Custom ops) destekler.
ONNX içerisinde "Performans" gerekçesiyle yerleşik C++/CUDA dillerinde çalışan özel operatörler tanımlanabilir. Eğer ML yazılımınız, dışarıdan gelen bir ONNX modelindeki karmaşık makine kodu yönergelerini olduğu gibi yürütüyorsa, saldırgan orijinal bir modeli sanki bir C++ zafiyet sömürü aracıymış gibi kullanabilir.
Ne Aramalısınız? Kod tabanlarında register_custom_op(), add_implementation() gibi yerleşik kodların yorumlandığı (native execution) satırlar incelenmeli ve fuzzing (AFL++) teknikleri kullanılmalıdır.
4. PyTorch ve Pickle Birlikteliği: Beklenen Felaket
Güvenilir bir araç olan PyTorch'un nasıl sömürülebildiğini görmek için basit bir MFV (Model File Vulnerability) örneğine inelim.
PyTorch'ta Pickle'ın Rolü:
PyTorch, torch.save() ve torch.load() fonksiyonları için Python'un pickle modülünü kullanır. Pickle protokolünde, bir nesnenin nasıl yeniden inşa edileceğini belirlemek için __reduce__ metodu çağrılır. Eğer bir saldırgan bu metodu ezebilirse (override), deserialization işlemi sırasında ne olacağını kontrol edebilir ve rastgele kod çalıştırma (RCE) elde eder.
Adım Adım Sömürü (PoC)
Zararlı Modeli Üretme:
Saldırgan __reduce__ metodunu ezen özel bir PyTorch modülü tanımlar. Bu PoC model yüklendiği an touch /tmp/poc işletim sistemi komutunu çalıştıracaktır.
import torch
import os
class OverwriteFile(torch.nn.Module):
def __reduce__(self):
# Deserialization anında os.system tetiklenir
return (os.system, ("touch /tmp/poc",))
# Zararlı modeli oluştur ve kaydet.
malicious_model = OverwriteFile()
torch.save(malicious_model, "malicious_model.pth")
Yükün Yürütülmesi (Kurban Aşaması):
Kurban, bir GitHub veya ML forumundan indirdiği bu görünüşte masum PyTorch modelini (.pth) standart yöntemle projesine yükler:
import torch
# Modeli yüklemek __reduce__ payload'unu direkt tetikler.
torch.load("malicious_model.pth")
Ve sistem hacklenir! torch.load() çağrıldığı saniyede kurban makinesinde uzaktan kod çalıştırılmış ve işletim sisteminde komut yürütülmüştür.
Neden Bunu Önemsemelisiniz? (Siber Güvenlik Uzmanları İçin)
Bu zafiyet sadece defterlerde yazan bir senaryo değildir. Günümüzde ML mimarilerinde kolay ve yüksek etkili sömürüler (high-impact exploits) arayanlar için bir altın madenidir. Üstüne düşmeniz için 2 harika neden var:
- Sonsuz Keşif Potansiyeli: PyTorch PoC'mizi bir eğitim tahtası olarak kullanarak sayısız farklı açık kaynak makine öğrenimi uygulamasında, model dönüştürücüsünde ve veri bilim aracında benzer RCE açıkları bulabilirsiniz.
- Kazançlı Ödüller: Bugün HackerOne gibi AI güvenlik platformları, doğrulanan tek bir MFV (Model File Vulnerability) tespiti başına 3.000$'a (Binlerce Dolar) kadar Bug Bounty ödülleri sunuyor. Bir sonraki keşfiniz hem itibarınızı devasa oranda artırabilir hem de ciddi bir maddi kazanç sağlayabilir.
Kurumunuzdaki Data Science ve AI ekipleri tehlikeli model dosyaları mı indiriyor? Eresus Security'nin Ajan Tabanlı (Agentic) Zafiyet Tarama platformlarıyla modern MLOps hattınızı güvenceye alın.