PyTorch ve TorchScript Kuralları
Güvensiz PyTorch checkpoint yükleme, TorchScript özel operatör ve dinamik hub içe aktarma akışlarını tespit eder.
PyTorch 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.
PyTorch checkpoint dosyaları çoğunlukla pickle verisi taşır. TorchScript ve hub akışları da model grafiği dışında Python veya yerel kod çalıştırabilir.
Desteklenen girdiler
.pt.pth.ckpt.torchscripthubconf.py
Tipik saldırı senaryoları
- Checkpoint dosyası torch.load sırasında Python kodu çalıştırır.
- TorchScript modeli incelenmemiş yerel özel operatöre ihtiyaç duyar.
- hubconf.py dosyası sabitlenmemiş bir depodan kod çeker.
Algılama mantığı
Sentinel PyTorch 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
PyTorch 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: TORCH
fail_on:
- CRITICAL
- HIGH
ticket_on:
- MEDIUM
retest: "sentinel artifact ./models/ --rule TORCH"Kural dizini
| Kural kimliği | Öncelik | Başlık | CWE | Düzeltme ipucu |
|---|---|---|---|---|
| TORCH-LOAD-UNTRUSTED | CRITICAL | Güvenilmeyen torch.load Seri Dışılaştırması | CWE-502 | Çalıştırılabilir Python nesnesi değil, tensor yükleyin. |
| TORCH-SCRIPT-CUSTOM-OP | HIGH | TorchScript Özel Operatörü | CWE-94CWE-829 | Özel operatörleri yayına almadan önce inceleyin ve imzalayın. |
| TORCH-HUB-DYNAMIC-IMPORT | MEDIUM | Dinamik Torch Hub İçe Aktarma | CWE-829CWE-494 | Uzak hub çalıştırmasını sabitlenmiş ve depoya alınmış model koduyla değiştirin. |
TORCH-LOAD-UNTRUSTED — Güvenilmeyen torch.load Seri Dışılaştırması
CRITICAL| Kural kimliği | TORCH-LOAD-UNTRUSTED |
|---|---|
| Kategori | TORCH |
| Öncelik | CRITICAL |
| CWE | CWE-502 |
| OWASP LLM | LLM03 — Supply Chain |
| Yanlış pozitif riski | MEDIUM |
| 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
Güvenilmeyen checkpoint dosyalarında weights_only veya eşdeğer güvenli yükleme yolu olmadan torch.load kullanımını işaretler.
Neden önemli?
PyTorch checkpoint dosyaları çoğunlukla pickle verisi taşır. TorchScript ve hub akışları da model grafiği dışında Python veya yerel kod çalıştırabilir.
Ne zaman tetiklenir?
Sentinel bu kuralı PyTorch kategorisinde şu kanıtı gördüğünde tetikler: weights_only=True kullanılmayan torch.load(...) çağrısı veya pickle tabanlı checkpoint yüklemesini gösteren dosya üst verisi bulunur. Bulgu; dosya adı, üst veri, opcode, AST düğümü veya manifest alanı gibi yeniden üretilebilir kanıtla raporlanmalıdır.
Kanıt biçimi
weights_only=True kullanılmayan torch.load(...) çağrısı veya pickle tabanlı checkpoint yüklemesini gösteren dosya üst verisi bulunur.
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ı durdurun; model dosyası veya kod yolu izole edilmeden üretime alınmamalı.
- Kanıt: weights_only=True kullanılmayan torch.load(...) çağrısı veya pickle tabanlı checkpoint yüklemesini gösteren dosya üst verisi bulunur.
- Kapanış: sentinel artifact ./models/ --rule TORCH komutu temiz dönmeli.
Nasıl düzeltilir?
Desteklenen yerlerde weights_only=True kullanın, imzalı state_dict dosyaları yükleyin ve rastgele Python nesnesi içeren checkpoint yüklemeyi CI’da engelleyin.
CLI
sentinel artifact ./models/ --rule TORCHPolitika örneği
rules:
TORCH-LOAD-UNTRUSTED:
owner: "AI/ML platform or model release owner"
fail_on: ["CRITICAL", "HIGH"]
retest: "sentinel artifact ./models/ --rule TORCH"Beklenen çıktı
TORCH-LOAD-UNTRUSTED CRITICAL
Güvenilmeyen torch.load Seri Dışılaştırması
Çalıştırılabilir Python nesnesi değil, tensor yükleyin.Örnek
import torch
model = torch.load("checkpoint.pt")import torch
state = torch.load("weights.pt", weights_only=True)
model.load_state_dict(state)İlgili kurallar
- TORCH-SCRIPT-CUSTOM-OP: TorchScript Özel Operatörü
- TORCH-HUB-DYNAMIC-IMPORT: Dinamik Torch Hub İçe Aktarma
TORCH-SCRIPT-CUSTOM-OP — TorchScript Özel Operatörü
HIGH| Kural kimliği | TORCH-SCRIPT-CUSTOM-OP |
|---|---|
| Kategori | TORCH |
| Öncelik | HIGH |
| CWE | CWE-94CWE-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
İncelenmemiş yerel çalıştırma davranışı ekleyebilen özel operatörlere referans veren TorchScript grafiği veya model üst verisini tespit eder.
Neden önemli?
PyTorch checkpoint dosyaları çoğunlukla pickle verisi taşır. TorchScript ve hub akışları da model grafiği dışında Python veya yerel kod çalıştırabilir.
Ne zaman tetiklenir?
Sentinel bu kuralı PyTorch kategorisinde şu kanıtı gördüğünde tetikler: aten/özel ad alanı, paylaşımlı kütüphane yükleme ipucu veya beklenen torch izin listesi dışında operatör adı 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
aten/özel ad alanı, paylaşımlı kütüphane yükleme ipucu veya beklenen torch izin listesi dışında operatör adı 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: aten/özel ad alanı, paylaşımlı kütüphane yükleme ipucu veya beklenen torch izin listesi dışında operatör adı görülür.
- Kapanış: sentinel artifact ./models/ --rule TORCH komutu temiz dönmeli.
Nasıl düzeltilir?
Operatör kaynağını envantere alın, imzalı yerel eklenti şartı koyun ve modeli üretimden önce yalıtılmış ortamda yükleyin.
CLI
sentinel artifact ./models/ --rule TORCHPolitika örneği
rules:
TORCH-SCRIPT-CUSTOM-OP:
owner: "AI/ML platform or model release owner"
fail_on: ["CRITICAL", "HIGH"]
retest: "sentinel artifact ./models/ --rule TORCH"Beklenen çıktı
TORCH-SCRIPT-CUSTOM-OP HIGH
TorchScript Özel Operatörü
Özel operatörleri yayına almadan önce inceleyin ve imzalayın.Örnek
import torch
model = torch.load("checkpoint.pt")import torch
state = torch.load("weights.pt", weights_only=True)
model.load_state_dict(state)İlgili kurallar
- TORCH-LOAD-UNTRUSTED: Güvenilmeyen torch.load Seri Dışılaştırması
- TORCH-HUB-DYNAMIC-IMPORT: Dinamik Torch Hub İçe Aktarma
TORCH-HUB-DYNAMIC-IMPORT — Dinamik Torch Hub İçe Aktarma
MEDIUM| Kural kimliği | TORCH-HUB-DYNAMIC-IMPORT |
|---|---|
| Kategori | TORCH |
| Öncelik | MEDIUM |
| CWE | CWE-829CWE-494 |
| OWASP LLM | LLM03 — Supply Chain |
| Yanlış pozitif riski | MEDIUM |
| Sorumlu | AI/ML platform veya model yayın sahibi |
| Yayın kararı | Sahip atayın, sprint içinde düzeltin ve yeniden test komutunu iş kaydına ekleyin. |
Açıklama
Model kodunu değişebilir uzak depolardan indirip içe aktaran hub yükleme akışlarını bulur.
Neden önemli?
PyTorch checkpoint dosyaları çoğunlukla pickle verisi taşır. TorchScript ve hub akışları da model grafiği dışında Python veya yerel kod çalıştırabilir.
Ne zaman tetiklenir?
Sentinel bu kuralı PyTorch kategorisinde şu kanıtı gördüğünde tetikler: torch.hub.load içinde dal adı, sabitlenmemiş referans veya trust_repo atlatması 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
torch.hub.load içinde dal adı, sabitlenmemiş referans veya trust_repo atlatması 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: Sahip atayın, sprint içinde düzeltin ve yeniden test komutunu iş kaydına ekleyin.
- Kanıt: torch.hub.load içinde dal adı, sabitlenmemiş referans veya trust_repo atlatması görülür.
- Kapanış: sentinel artifact ./models/ --rule TORCH komutu temiz dönmeli.
Nasıl düzeltilir?
Commit SHA sabitleyin, güvenilir kodu içeride aynalayın ve hubconf.py dosyasını çalıştırmadan önce inceleyin.
CLI
sentinel artifact ./models/ --rule TORCHPolitika örneği
rules:
TORCH-HUB-DYNAMIC-IMPORT:
owner: "AI/ML platform or model release owner"
fail_on: ["CRITICAL", "HIGH"]
retest: "sentinel artifact ./models/ --rule TORCH"Beklenen çıktı
TORCH-HUB-DYNAMIC-IMPORT MEDIUM
Dinamik Torch Hub İçe Aktarma
Uzak hub çalıştırmasını sabitlenmiş ve depoya alınmış model koduyla değiştirin.Örnek
import torch
model = torch.load("checkpoint.pt")import torch
state = torch.load("weights.pt", weights_only=True)
model.load_state_dict(state)İlgili kurallar
- TORCH-LOAD-UNTRUSTED: Güvenilmeyen torch.load Seri Dışılaştırması
- TORCH-SCRIPT-CUSTOM-OP: TorchScript Özel Operatörü