### 关键信息总结 #### 1. 漏洞概述和影响 - **漏洞类型**: ModelScope Ms-Swift ModelFileSystemCache 反序列化未受信任数据导致远程代码执行漏洞。 - **版本影响**: ModelScope/ms-swift 库 2.6.1 及以下版本。 - **攻击方式**: 攻击者通过构造恶意的 `.mdl` 文件,利用 `pickle.load()` 函数反序列化未受信任的数据,从而执行任意代码和命令。 - **隐蔽性**: 攻击载荷文件是隐藏文件,难以被受害者检测到。在模型训练过程中,即使加载并执行了恶意代码,正常的训练流程仍不受影响,用户可能不会察觉。 #### 2. 漏洞产品 - **产品**: ModelScope ms-swift - **模块**: ModelFileSystemCache - **文件**: `swift/hub/utils/caching.py` - **版本**: <=2.6.1 - **GitHub 链接**: [ModelScope ms-swift](https://github.com/modelscope/ms-swift/blob/ab38bff0387a86fd9f068246c526ee7b0d5ed139/swift/hub/utils/caching.py#L141) #### 3. 根因分析 - **漏洞原因**: 由于不安全地反序列化未受信任的数据,使用 `pickle.load()` 加载隐藏的缓存文件,导致代码执行漏洞。 - **注入点**: 在调用 `pickle.load()` 的地方发生漏洞,具体位置见 GitHub 链接。 - **修复建议**: 处理配置文件时,建议采用更安全的文件解析方法,如 `yaml.safe_load(yaml_file)` 或 `json.load()`,以降低任意代码执行的风险。 #### 4. PoC (概念验证) - **步骤**: 1. 运行 `exploit.py` 创建一个恶意的缓存文件 `.mdl`,该文件会在受害者的系统上创建一个目录。 2. 将生成的恶意 `.mdl` 文件替换模型目录中原有的 `.mdl` 文件。 3. 在训练过程中指定 `model_id_or_path` 参数引用本地模型目录时,如果路径中的 `.mdl` 文件被篡改,则会导致远程代码执行(RCE)。这种修改不会中断正常的训练流程,使得 RCE 攻击具有隐蔽性和难以检测的特点。 #### 作者 - Hao Fan (凡浩) 和 Yu Rong (戎蓉)