Pickle Seri Dışılaştırma Kuralları
Güvensiz Python pickle akışlarını, joblib dosyalarını ve ML model dosyalarının içine gömülü pickle yük’larını tespit eder.
Pickle kural ailesi; bu yüzeydeki bulguları kural kimliği, öncelik, CWE, OWASP LLM, sorumlu, yayın kararı ve yeniden test komutuyla kapatılabilir aksiyona çevirir.
Pickle yapısı gereği çalıştırılabilir bir formattır. Registry, notebook veya tedarikçiden gelen bir model dosyası yükleme sırasında Python sembolleri içe aktarabilir ve saldırgan kontrollü kod çalıştırabilir.
Desteklenen girdiler
.pkl.pickle.joblib.pt.pthNumPy object arrays with pickle payloads
Tipik saldırı senaryoları
- Zararlı bir model deserialization sırasında os.system çağırır.
- Zehirlenmiş bir notebook çıktısı, sıkıştırılmış proje paketinin içine pickle yük’ı saklar.
- Bir bağımlılık, beklenmeyen Python modülleri içe aktaran model checkpoint dosyası indirir.
Algılama mantığı
Sentinel Pickle kurallarında kanıt alanını dosya yolu, üst veri, opcode, AST düğümü, manifest alanı, bağımlılık veya arşiv girdisi gibi yeniden üretilebilir sinyale bağlar. Bulgu kapatılırken aynı sinyal ortadan kalkmalıdır.
İnceleme ve önceliklendirme
Pickle bulgularını tek başına "tarayıcı gürültüsü" gibi okumayın. Önce kanıtı doğrulayın, sonra yayın kararını önceliğe bağlayın, en sonunda aynı Sentinel komutuyla kapanış kanıtı üretin.
- Kaynak: dosya, manifest, istem, arşiv veya bağımlılık nereden geldi?
- Etki: kod çalıştırma, veri sızıntısı, tedarik zinciri veya kaynak tüketimi mi?
- Kontrol: izin listesi, hash doğrulaması, yalıtım, ağ çıkış politikası veya gizli bilgi döndürme gerekiyor mu?
- Kanıt: düzeltmeden sonra aynı kural kategorisi temiz dönüyor mu?
Düzeltme
Düzeltme, yalnızca bulguyu susturmak değil risk sınırını değiştirmek anlamına gelmelidir: çalıştırılabilir biçimi kaldırın, kaynak veya hash değerini sabitleyin, araç iznini daraltın, gizli bilgiyi döndürün ya da çalışma zamanı yalıtımı ekleyin.
CI politikası
category: PICKLE
fail_on:
- CRITICAL
- HIGH
ticket_on:
- MEDIUM
retest: "sentinel artifact ./models/ --rule PICKLE"Kural dizini
| Kural kimliği | Öncelik | Başlık | CWE | Düzeltme ipucu |
|---|---|---|---|---|
| PICKLE-EXEC | CRITICAL | Tehlikeli Pickle Çalıştırması | CWE-502 | Güvenilmeyen pickle dosyalarını yüklemeyin. Dosyayı kod çalıştırmayan bir biçime dönüştürün. |
| PICKLE-GLOBAL-IMPORT | HIGH | Beklenmeyen Global İçe Aktarma | CWE-502CWE-829 | İzin verilen global nesneleri kısıtlayın ve imzalı model dosyası şartı koyun. |
| PICKLE-STRUCT | HIGH | Pickle Opcode Yapısal Oynama | CWE-915 | Yapısal olarak olağandışı pickle dosyalarını kabul aşamasında reddedin. |
PICKLE-EXEC — Tehlikeli Pickle Çalıştırması
CRITICAL| Kural kimliği | PICKLE-EXEC |
|---|---|
| Kategori | PICKLE |
| Öncelik | CRITICAL |
| CWE | CWE-502 |
| OWASP LLM | LLM03 — Supply Chain |
| Yanlış pozitif riski | LOW |
| Sorumlu | AI/ML platform veya model yayın sahibi |
| Yayın kararı | Yayını durdurun; model dosyası veya kod yolu izole edilmeden üretime alınmamalı. |
Açıklama
os.system, subprocess.run, eval, exec veya kod çalıştıran yükleyici işlevleri gibi tehlikeli Python çağrılarına çözümlenen pickle opcode akışlarını işaretler.
Neden önemli?
Pickle yapısı gereği çalıştırılabilir bir formattır. Registry, notebook veya tedarikçiden gelen bir model dosyası yükleme sırasında Python sembolleri içe aktarabilir ve saldırgan kontrollü kod çalıştırabilir.
Ne zaman tetiklenir?
Sentinel bu kuralı Pickle kategorisinde şu kanıtı gördüğünde tetikler: GLOBAL veya STACK_GLOBAL opcode sonrasında yüksek riskli modül/işlev eşleşmesi görülür. Bulgu; dosya adı, üst veri, opcode, AST düğümü veya manifest alanı gibi yeniden üretilebilir kanıtla raporlanmalıdır.
Kanıt biçimi
GLOBAL veya STACK_GLOBAL opcode sonrasında yüksek riskli modül/işlev eşleşmesi görülür.
Beklenen kanıt
Rapor; etkilenen dosya veya manifest yolunu, yakalanan sinyali, kural kimliğini, önceliği, sorumluyu ve kapanışta çalıştırılacak yeniden test komutunu içermelidir.
Yanlış pozitif notu
Yanlış pozitif olasılığı düşüktür. Kanıt doğrudan dosya, opcode, gizli bilgi örüntüsü, yol veya manifest alanına bağlanıyorsa bulguyu gerçek kabul edip kapanış kanıtı isteyin.
İnceleme ve önceliklendirme
- Sorumlu: AI/ML platform veya model yayın sahibi.
- Karar: Yayını durdurun; model dosyası veya kod yolu izole edilmeden üretime alınmamalı.
- Kanıt: GLOBAL veya STACK_GLOBAL opcode sonrasında yüksek riskli modül/işlev eşleşmesi görülür.
- Kapanış: sentinel artifact ./models/ --rule PICKLE komutu temiz dönmeli.
Nasıl düzeltilir?
Pickle yerine safetensors veya ONNX kullanın. Pickle zorunluysa yalnızca açık izin listesi olan kısıtlı bir unpickler kullanın ve sadece güvenilir dosya yükleyin.
CLI
sentinel artifact ./models/ --rule PICKLEPolitika örneği
rules:
PICKLE-EXEC:
owner: "AI/ML platform or model release owner"
fail_on: ["CRITICAL", "HIGH"]
retest: "sentinel artifact ./models/ --rule PICKLE"Beklenen çıktı
PICKLE-EXEC CRITICAL
Tehlikeli Pickle Çalıştırması
Güvenilmeyen pickle dosyalarını yüklemeyin. Dosyayı kod çalıştırmayan bir biçime dönüştürün.Örnek
import pickle
with open("model.pkl", "rb") as file:
model = pickle.load(file)from safetensors.torch import load_file
weights = load_file("model.safetensors")İlgili kurallar
- PICKLE-GLOBAL-IMPORT: Beklenmeyen Global İçe Aktarma
- PICKLE-STRUCT: Pickle Opcode Yapısal Oynama
PICKLE-GLOBAL-IMPORT — Beklenmeyen Global İçe Aktarma
HIGH| Kural kimliği | PICKLE-GLOBAL-IMPORT |
|---|---|
| Kategori | PICKLE |
| Öncelik | HIGH |
| CWE | CWE-502CWE-829 |
| OWASP LLM | LLM03 — Supply Chain |
| Yanlış pozitif riski | MEDIUM |
| Sorumlu | AI/ML platform veya model yayın sahibi |
| Yayın kararı | Yayın kapısı olarak değerlendirin; düzeltme veya açık risk kabulü gerekir. |
Açıklama
Dosya yüklenirken güvenilir ML izin listesinin dışındaki modülleri içe aktaran pickle akışlarını tespit eder.
Neden önemli?
Pickle yapısı gereği çalıştırılabilir bir formattır. Registry, notebook veya tedarikçiden gelen bir model dosyası yükleme sırasında Python sembolleri içe aktarabilir ve saldırgan kontrollü kod çalıştırabilir.
Ne zaman tetiklenir?
Sentinel bu kuralı Pickle kategorisinde şu kanıtı gördüğünde tetikler: GLOBAL opcode içinde posix, nt, subprocess, socket, urllib, importlib veya sitecustomize gibi beklenmeyen modüller geçer. Bulgu; dosya adı, üst veri, opcode, AST düğümü veya manifest alanı gibi yeniden üretilebilir kanıtla raporlanmalıdır.
Kanıt biçimi
GLOBAL opcode içinde posix, nt, subprocess, socket, urllib, importlib veya sitecustomize gibi beklenmeyen modüller geçer.
Beklenen kanıt
Rapor; etkilenen dosya veya manifest yolunu, yakalanan sinyali, kural kimliğini, önceliği, sorumluyu ve kapanışta çalıştırılacak yeniden test komutunu içermelidir.
Yanlış pozitif notu
Yanlış pozitif olasılığı orta seviyededir. Önce kaynak, beklenen kullanım ve sahip bilgisini doğrulayın; gerekirse izin listesi ekleyin ama kanıtı rapordan silmeyin.
İnceleme ve önceliklendirme
- Sorumlu: AI/ML platform veya model yayın sahibi.
- Karar: Yayın kapısı olarak değerlendirin; düzeltme veya açık risk kabulü gerekir.
- Kanıt: GLOBAL opcode içinde posix, nt, subprocess, socket, urllib, importlib veya sitecustomize gibi beklenmeyen modüller geçer.
- Kapanış: sentinel artifact ./models/ --rule PICKLE komutu temiz dönmeli.
Nasıl düzeltilir?
Dosya kaynağını inceleyin, kaynak sağlama toplamı değerlerini sabitleyin ve yalnızca beklenen model sınıflarına ve tensor taşıyıcılarına izin verin.
CLI
sentinel artifact ./models/ --rule PICKLEPolitika örneği
rules:
PICKLE-GLOBAL-IMPORT:
owner: "AI/ML platform or model release owner"
fail_on: ["CRITICAL", "HIGH"]
retest: "sentinel artifact ./models/ --rule PICKLE"Beklenen çıktı
PICKLE-GLOBAL-IMPORT HIGH
Beklenmeyen Global İçe Aktarma
İzin verilen global nesneleri kısıtlayın ve imzalı model dosyası şartı koyun.Örnek
import pickle
with open("model.pkl", "rb") as file:
model = pickle.load(file)from safetensors.torch import load_file
weights = load_file("model.safetensors")İlgili kurallar
- PICKLE-EXEC: Tehlikeli Pickle Çalıştırması
- PICKLE-STRUCT: Pickle Opcode Yapısal Oynama
PICKLE-STRUCT — Pickle Opcode Yapısal Oynama
HIGH| Kural kimliği | PICKLE-STRUCT |
|---|---|
| Kategori | PICKLE |
| Öncelik | HIGH |
| CWE | CWE-915 |
| OWASP LLM | LLM03 — Supply Chain |
| Yanlış pozitif riski | MEDIUM |
| Sorumlu | AI/ML platform veya model yayın sahibi |
| Yayın kararı | Yayın kapısı olarak değerlendirin; düzeltme veya açık risk kabulü gerekir. |
Açıklama
Yüzeysel tarayıcılardan kaçmak için yürütme yolunu gizleyebilen bozuk stack davranışı, beklenmeyen reducer zincirleri veya olağandışı kalıcı kimlikler bulur.
Neden önemli?
Pickle yapısı gereği çalıştırılabilir bir formattır. Registry, notebook veya tedarikçiden gelen bir model dosyası yükleme sırasında Python sembolleri içe aktarabilir ve saldırgan kontrollü kod çalıştırabilir.
Ne zaman tetiklenir?
Sentinel bu kuralı Pickle kategorisinde şu kanıtı gördüğünde tetikler: Nesne oluşturma çevresinde reducer opcode zinciri, persistent_load işareti veya stack dengesizliği görülür. Bulgu; dosya adı, üst veri, opcode, AST düğümü veya manifest alanı gibi yeniden üretilebilir kanıtla raporlanmalıdır.
Kanıt biçimi
Nesne oluşturma çevresinde reducer opcode zinciri, persistent_load işareti veya stack dengesizliği görülür.
Beklenen kanıt
Rapor; etkilenen dosya veya manifest yolunu, yakalanan sinyali, kural kimliğini, önceliği, sorumluyu ve kapanışta çalıştırılacak yeniden test komutunu içermelidir.
Yanlış pozitif notu
Yanlış pozitif olasılığı orta seviyededir. Önce kaynak, beklenen kullanım ve sahip bilgisini doğrulayın; gerekirse izin listesi ekleyin ama kanıtı rapordan silmeyin.
İnceleme ve önceliklendirme
- Sorumlu: AI/ML platform veya model yayın sahibi.
- Karar: Yayın kapısı olarak değerlendirin; düzeltme veya açık risk kabulü gerekir.
- Kanıt: Nesne oluşturma çevresinde reducer opcode zinciri, persistent_load işareti veya stack dengesizliği görülür.
- Kapanış: sentinel artifact ./models/ --rule PICKLE komutu temiz dönmeli.
Nasıl düzeltilir?
Modeli güvenilir derleme hattından yeniden dışa aktarın ve dosya hash değerini imzalı yayın manifestiyle karşılaştırın.
CLI
sentinel artifact ./models/ --rule PICKLEPolitika örneği
rules:
PICKLE-STRUCT:
owner: "AI/ML platform or model release owner"
fail_on: ["CRITICAL", "HIGH"]
retest: "sentinel artifact ./models/ --rule PICKLE"Beklenen çıktı
PICKLE-STRUCT HIGH
Pickle Opcode Yapısal Oynama
Yapısal olarak olağandışı pickle dosyalarını kabul aşamasında reddedin.Örnek
import pickle
with open("model.pkl", "rb") as file:
model = pickle.load(file)from safetensors.torch import load_file
weights = load_file("model.safetensors")İlgili kurallar
- PICKLE-EXEC: Tehlikeli Pickle Çalıştırması
- PICKLE-GLOBAL-IMPORT: Beklenmeyen Global İçe Aktarma