Araştırmalara Dön
Research

Yapay Zeka Modellerinde Gözden Kaçan Tehlike: Keras ve Pickle Dosya Zafiyetleri

Yiğit İbrahim SağlamYazar
31 Mart 2026
5 dk okuma

Yapay Zeka Modellerinde Gözden Kaçan Tehlike: Keras ve Pickle Dosya Zafiyetleri

Yapay zeka (AI) ve makine öğrenimi (ML) güvenliği denildiğinde, siber güvenlik dünyası genellikle veri zehirlenmesine (data poisoning), API zafiyetlerine veya LLM (Büyük Dil Modeli) Prompt Injection saldırılarına odaklanır. Ancak tüm bu popüler konuların gölgesinde çok daha kritik, doğrudan sunucu ele geçirilmesine yol açabilecek bir tehlike yatıyor: Model Dosyası Zafiyetleri (MFV - Model File Vulnerabilities).

Kısa Cevap: Geliştiriciler tarafından yaygın olarak internetten indirilen ve projelerde kullanılan .keras, .h5, .pkl ve hatta yeni nesil .llamafile gibi makine öğrenimi model dosyaları, aslında içlerinde sisteminizde doğrudan kod çalıştırabilen (Remote Code Execution - RCE) zararlı yazılımlar barındırabilir. Bir yapay zeka modelini sisteminize "yüklemek" (deserialize etmek), o modelin içindeki kodlara tüm yetkilerinizle çalışma izni vermek anlamına gelir. Tam siber güvenlik sağlamak için, dış kaynaklı her AI modelinin güvenilmeyen kod gibi izole ortamlarda (sandbox) çalıştırılması veya manuel güvenlik denetiminden geçmesi şarttır.

Bu makalede, Keras ve Pickle formatlarında model dosyalarının nasıl çalıştığını, neden siber saldırganlar için eşsiz bir hedef haline geldiklerini ve kurumunuzu bu görünmez tehlikeden nasıl koruyacağınızı detaylıca inceleyeceğiz.


1. Keras Model Dosyaları Neden Tehlikeli Olabilir?

Bir sinir ağını eğitmek ciddi bir GPU gücü ve zaman (günler, haftalar) gerektirir. Bu nedenle framework'ler (PyTorch, TensorFlow, Keras), eğitilmiş modelleri dışa aktarmak (serialize) ve başka projelerde hemen kullanmak üzere içe aktarmak (deserialize) zorundadır.

Keras 3.0 ile birlikte gelen yeni .keras dosya formatı, eski .h5 (HDF5) formatından daha güvenli olsa da yapısal olarak hala ciddi bir saldırı yüzeyi sunar.

Bir .keras Dosyasının İçinde Ne Var?

Çoğu yazılımcı .keras uzantılı bir dosyayı basit bir veri tabanı veya rakamlar bütünü olarak düşünür. Halbuki bu dosya aslında bir ZIP arşividir. Terminalinizde unzip -l model.keras komutunu çalıştırırsanız şunları görürsünüz:

  • metadata.json: Model versiyonu ve kayıt tarihi.
  • model.weights.h5: Modelin öğrendiği matematiksel ağırlıklar (binary veri).
  • config.json: Modelin mimari yapısını (katmanları) belirleyen ve doğrudan çalıştırılabilir kod olarak yüklenen configürasyon verisi.

Saldırganlar, ağırlıklarla ilgilenmezler. Hedefleri config.json dosyasıdır. Çünkü bu dosya, model yüklendiğinde (load) bellekte hangi fonksiyonların çalıştırılacağını belirler.


2. Keras Lambda Layer Exploit'i (Kod Yürütme Zafiyeti)

Keras içerisindeki en popüler güvenlik krizlerinden biri Lambda katmanı kullanımıdır. Lambda katmanları, geliştiricilerin sisteme özel (custom) Python kodları eklemesine olanak tanır.

Bir siber korsan (threat actor), tamamen meşru ve masum görünen bir hesaplama modelinin içine şu şekilde zararlı bir kod satırı yerleştirebilir:

from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Lambda

# Modeli yükleyen kişide doğrudan kod çalıştıracak zararlı mimari:
model = Sequential([
    Lambda(lambda x: eval("__import__('os').system('touch /tmp/hacked')" or x)),
])

# Bu dosyayı GitHub'da veya Hugging Face platformunda yayınlar
model.save("zararli_model.keras")

Bu model başka bir yazılımcı veya MLOps boru hattı (pipeline) tarafından keras.models.load_model('zararli_model.keras') komutuyla yüklendiği an, içindeki kod satırı tetiklenir ve sunucuda (veya bilgisayarda) işletim sistemi seviyesinde bir sızma gerçekleşir.

Uzman Görüşü: "Bir Python kütüphanesini pip install yaparken nasıl dikkatli oluyorsak, dış dünyadan bir yapay zeka modelini projemize dahil ederken de aynı şüpheci yaklaşımı sergilemeliyiz. O modelin sadece bir 'dosya' değil, çalıştırılabilir bir 'script' olduğunu unutmamalıyız."


3. Deserialization Zafiyetleri Neden Tam Olarak Engellenemiyor?

Keras ekibi (ve diğer framework sağlayıcıları) bu tarz Lambda katmanı zafiyetlerini çözmek için "Güvenli Mod" (safe_mode=True) gibi önlemler geliştirdiler. Yeni güncellemelerle birlikte artık Keras, açıkça izin verilmedikçe rastgele Python çalıştırılmasına engel oluyor ve içeri alınacak modülleri keras, keras_hub gibi belli bir çerçevede (allowlist) tutuyor.

Ancak siber güvenlikte sadece bir kapıyı kapatmak yetmez:

  • Eski Format Desteği: Birçok kurum yıllar önce üretilmiş eski model dosyalarına dayanmaya devam ediyor. Bu eski yapılar yeni güvenlik yamalarına sahip değil.
  • İzin Verilen Listede (Allowlist) Bulunan Özelliklerin Kötüye Kullanımı (Abuse): keras.utils modülü gibi güvenli kabul edilen modüllerin içindeki bazı standart fonksiyonlar (get_file gibi), saldırganlar tarafından manipüle edilebilir.

Yaratıcı Bir Atlatma (Bypass) Senaryosu: Saldırgan, Keras'ın kendi izinli sistemi içinden get_file metodunu çağırarak model yüklendiği sırada sistemden dışarıya kritik verilerinizi aktaran (Data Exfiltration) veya sisteme uzak sunucudan asıl zararlıyı kuran (Dropper) bir konfigürasyon tasarlayabilir. Sisteminize göre bu son derece yasal ve izinli bir işlem gibi görünür, dolayısıyla güvenlik Duvarlarına (Firewall) takılmaz.


4. Gerçek Dünya Tehdidi: Sadece Keras mı? (.llamafile ve Diğerleri)

Problemin sadece Keras veya PyTorch'un eski pickle yaklaşımı ile sınırlı olduğunu düşünmeyin.

Büyük Dil Modellerini (LLM) kolay dağıtmak için geliştirilen .llamafile gibi çapraz platformda çalışabilen formatlar (APE - Actually Portable Executable) da hacker'ların ilgisini çekiyor.

Bu dosyalar hem modelin veri bloğunu hem de onu çalıştıracak platform kodlarını aynı yapıda barındırdıkları için, saldırganlar modelin ELF (Çalıştırılabilir Dosya) yapısını bozmayacak alanlara çok sinsi komut seti enjeksiyonları yapabilirler. Yani siz çok popüler açık kaynaklı bir LLM modelini sisteminize test etmek için kurduğunuzu zannederken, arka planda C2 (Komuta Kontrol) sunucusuna çoktan bir arka kapı (Backdoor) açılıp iletişim başlatılmış olabilir.


5. Güvende Kalmak İçin Ne Yapmalıyım?

Sistem kurucuları, CTO'lar ve MLOps uzmanları olarak makine öğrenimi güvenlik zafiyetlerinden korunmak için atmanız gereken temel adımlar:

  1. Katı Kısıtlamalar (Sandboxing): Hiçbir dış bağlantılı yapay zeka/ML modelini, sunucunun ana terminal yetkileriyle çalıştırmayın. Her modeli kısıtlı ağ erişimi olan bir konteynerde (Docker/Sandbox) test edin.
  2. Düzenli Kayıt Cihazı Denetimi (Auditing): Yapay zeka ağırlıklarını veya dosyalarını işleme alan sistemlerin (pipeline) hangi yetkilere sahip olduğunu sürekli gözden geçirin.
  3. Manuel İnceleme (Uzman İhtiyacı): Sadece otomatik tarayıcı araçlarına (SAST/DAST) güvenmeyin. Çoğu otomatik tarayıcı, bir .keras dosyasının içindeki mantıksal bir sömürüyü (Exploit) tespit edecek zekaya sahip değildir.

Bu zafiyetler geleneksel antivirüs loglarında görünmezler ve çok daha sinsiiler. Eğer şirketinizin yazılımları veya sunucuları açık kaynak modelleri entegre ediyorsa; Eresus Security'nin uzman ekibi tarafından yapılacak manuel ve yapay zeka destekli Gelişmiş Sızma Testleri, sisteminizin arka kapılara karşı test edilmesi için en kesin yoldur.