在模型加载和合并管道中,通过不受限制的 `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)

zzterm7zz
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_sd

2. Model Merging GUI (scripts/merge.py:48-49)

zzterm8zz
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)

zzterm9zz
def load_learned_embed_in_clip(learned_embeds_path, text_encoder, tokenizer, token=None):
    # Vulnerable: Deserializes learned token embedding
…

内容来源: Sygil-Dev/sygil-webui