基于对代码的分析,我发现了以下几个潜在的安全漏洞:
- trust_remote_code=True - 远程代码执行风险 (高危)
位置: auto_model.py:37-42
config = AutoConfig.from_pretrained(pretrained_model_name_or_path, trust_remote_code=True,
token=kwargs['hf_token'])
问题: trust_remote_code=True 允许从 Hugging Face 仓库下载并执行任意远程代码。攻击者可以:
- 上传恶意模型到托管平台
- 在 model.py 或配置文件里植入恶意代码
- 在你的服务器上执行任意命令
建议: 默认设为 False,只在完全信任模型来源时启用
- 反序列化漏洞 - torch.load 未设置安全标志 (高危)
位置: utils.py:438, 446, 457, 463
state_dict.update(torch.load(to_load, map_location='cpu'))
问题: PyTorch 的 torch.load 默认使用 pickle 反序列化,可执行任意代码。应该添加:
torch.load(to_load, map_location='cpu', weights_only=True)
- 路径遍历风险 (中危)
位置: utils.py:251-262
问题: link_or_copy_file 函数使用 os.path.realpath 处理后仍无法完全防止恶意构造的路径攻击,可能导致创建文件到预期外目录。
- 敏感信息泄露风险 (低危)
位置: utils.py:371-378
huggingface_hub.snapshot_download(repo_id, allow_patterns=os.path.basename(to_load),
token=hf_token)
问题: Hugging Face 的 API token 作为参数明文传递,如果打印日志可能会泄露凭证。
基于对代码的分析,我发现了以下几个潜在的安全漏洞:
位置: auto_model.py:37-42
config = AutoConfig.from_pretrained(pretrained_model_name_or_path, trust_remote_code=True,
token=kwargs['hf_token'])
问题: trust_remote_code=True 允许从 Hugging Face 仓库下载并执行任意远程代码。攻击者可以:
建议: 默认设为 False,只在完全信任模型来源时启用
位置: utils.py:438, 446, 457, 463
state_dict.update(torch.load(to_load, map_location='cpu'))
问题: PyTorch 的 torch.load 默认使用 pickle 反序列化,可执行任意代码。应该添加:
torch.load(to_load, map_location='cpu', weights_only=True)
位置: utils.py:251-262
问题: link_or_copy_file 函数使用 os.path.realpath 处理后仍无法完全防止恶意构造的路径攻击,可能导致创建文件到预期外目录。
位置: utils.py:371-378
huggingface_hub.snapshot_download(repo_id, allow_patterns=os.path.basename(to_load),
token=hf_token)
问题: Hugging Face 的 API token 作为参数明文传递,如果打印日志可能会泄露凭证。