jasonmiao0511-hue/modelscan-joblib-bypass-poc
GitHub: jasonmiao0511-hue/modelscan-joblib-bypass-poc
该 PoC 证明 modelscan(<=0.8.5)因黑名单缺少 marshal 和 types 模块而无法检测恶意 joblib 文件中的 RCE 载荷,揭示了 ML 模型扫描工具的检测绕过漏洞。
Stars: 0 | Forks: 0
# modelscan Joblib 绕过 PoC
## 摘要
证明了 `modelscan` (<= 0.8.5) 可以被恶意的 `.joblib` 文件绕过,
因为其 `unsafe_globals` 黑名单中缺少 `marshal` 和 `types` 模块。
## 受影响版本
- modelscan <= 0.8.5
- joblib >= 0.10
## 复现
```
pip install modelscan joblib
# Step 1: 扫描报告 "No issues" (BYPASSED)
modelscan scan -p rce.joblib
# Step 2: 加载文件执行任意代码
python -c "import joblib; joblib.load('rce.joblib')"
# 检查:cat pwned_p4.txt -> PWNED_P4
```
## 文件
- `rce.joblib` — 恶意的 joblib PoC 文件(约 270 字节)
- `rce_joblib.py` — 生成脚本
- `README.md` — 本文件
## 漏洞类别
这与我们之前报告的 pickle 绕过(2026-05-14)的根本原因相同,
将攻击面扩展到了 `.joblib` 格式(广泛用于 scikit-learn、
Dask 和 Ray pipeline 中)。
## 修复建议
将以下内容添加到 modelscan 的 `unsafe_globals` 黑名单中:
- `marshal.loads`
- `types.FunctionType`
- `types.CodeType`
- `builtins.eval`
- `builtins.exec`
长期建议:对于序列化文件中的 global import,从黑名单机制切换为白名单机制。
## 披露
- 发现者:jasonmiao0511-hue
- 报告途径:huntr.com 模型格式漏洞表单
- 日期:2026-06-14
标签:AI安全, Apex, Chat Copilot, Go语言工具, PoC, 反序列化, 暴力破解, 机器学习, 编程工具, 远程代码执行, 逆向工具