在模型加载和合并管道中,通过不受限制的 `torch.load()` 调用进行不安全的反序列化
作者: sudu787创建于 2026年8月24日更新于 2026年8月24日
In Sygil-Dev/sygil-webui, several user-facing entry points load model checkpoints directly from paths or downloads without weights_only=True:
1. Model Loading Routine (scripts/sd_utils/__init__.py:577)
def load_model_from_config(config, ckpt, verbose=False):
logger.info(f"Loading model from {ckpt}")
try:
# Vulnerable: Deserializes the file using unrestricted pickle unpickling
pl_sd = torch.load(ckpt, map_location="cpu")
sd = pl_sd["state_dict"] if "state_dict" in pl_sd else pl_sd2. Model Merging GUI (scripts/merge.py:48-49)
def merge(file1, file2, out, a):
# Vulnerable: Accepts arbitrary user file paths from GUI entry fields
model_0 = torch.load(file1)
model_1 = torch.load(file2)3. Textual Inversion Embeddings (scripts/sd_utils/__init__.py:2251)
def load_learned_embed_in_clip(learned_embeds_path, text_encoder, tokenizer, token=None):
# Vulnerable: Deserializes learned token embedding
…内容来源: Sygil-Dev/sygil-webui