EresusSecurity

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.

Kısa tanım

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.

Kural yardım URL’i

Desteklenen girdiler

  • .pkl
  • .pickle
  • .joblib
  • .pt
  • .pth
  • NumPy 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.

Operasyonel kontrol listesi
  • 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ı

sentinel-policy.yml
category: PICKLE
fail_on:
  - CRITICAL
  - HIGH
ticket_on:
  - MEDIUM
retest: "sentinel artifact ./models/ --rule PICKLE"

Kural dizini

Kural kimliğiÖncelikBaşlıkCWEDüzeltme ipucu
PICKLE-EXECCRITICALTehlikeli Pickle ÇalıştırmasıCWE-502Güvenilmeyen pickle dosyalarını yüklemeyin. Dosyayı kod çalıştırmayan bir biçime dönüştürün.
PICKLE-GLOBAL-IMPORTHIGHBeklenmeyen Global İçe AktarmaCWE-502CWE-829İzin verilen global nesneleri kısıtlayın ve imzalı model dosyası şartı koyun.
PICKLE-STRUCTHIGHPickle Opcode Yapısal OynamaCWE-915Yapısal olarak olağandışı pickle dosyalarını kabul aşamasında reddedin.

PICKLE-EXECTehlikeli Pickle Çalıştırması

CRITICAL
Kural kimliğiPICKLE-EXEC
KategoriPICKLE
ÖncelikCRITICAL
CWECWE-502
OWASP LLMLLM03 — Supply Chain
Yanlış pozitif riskiLOW
SorumluAI/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

Operasyonel kontrol listesi
  • 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 PICKLE

Politika örneği

sentinel-policy.yml
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

Riskli
import pickle

with open("model.pkl", "rb") as file:
    model = pickle.load(file)
Daha güvenli
from safetensors.torch import load_file

weights = load_file("model.safetensors")

İlgili kurallar

PICKLE-GLOBAL-IMPORTBeklenmeyen Global İçe Aktarma

HIGH
Kural kimliğiPICKLE-GLOBAL-IMPORT
KategoriPICKLE
ÖncelikHIGH
CWECWE-502CWE-829
OWASP LLMLLM03 — Supply Chain
Yanlış pozitif riskiMEDIUM
SorumluAI/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

Operasyonel kontrol listesi
  • 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 PICKLE

Politika örneği

sentinel-policy.yml
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

Riskli
import pickle

with open("model.pkl", "rb") as file:
    model = pickle.load(file)
Daha güvenli
from safetensors.torch import load_file

weights = load_file("model.safetensors")

İlgili kurallar

PICKLE-STRUCTPickle Opcode Yapısal Oynama

HIGH
Kural kimliğiPICKLE-STRUCT
KategoriPICKLE
ÖncelikHIGH
CWECWE-915
OWASP LLMLLM03 — Supply Chain
Yanlış pozitif riskiMEDIUM
SorumluAI/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

Operasyonel kontrol listesi
  • 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 PICKLE

Politika örneği

sentinel-policy.yml
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

Riskli
import pickle

with open("model.pkl", "rb") as file:
    model = pickle.load(file)
Daha güvenli
from safetensors.torch import load_file

weights = load_file("model.safetensors")

İlgili kurallar

Kaynaklar