jasonmiao0511-hue/modelscan-pickle-bypass-poc

GitHub: jasonmiao0511-hue/modelscan-pickle-bypass-poc

该 PoC 证明了 modelscan <= 0.8.5 因黑名单缺失 marshal 和 types 模块,可被恶意 Pickle 文件绕过检测并实现远程代码执行。

Stars: 0 | Forks: 0

# modelscan Pickle 绕过 PoC ## 摘要 证明了 `modelscan` (<= 0.8.5) 可以被恶意 `.pkl` 文件绕过, 因为它的 `unsafe_globals` 黑名单中缺少 `marshal` 和 `types` 模块。 ## 受影响范围 - modelscan <= 0.8.5 - Python 3.8+(所有使用 pickle 的版本) ## 复现 ``` pip install modelscan # 步骤 1:扫描报告“No issues”(BYPASSED) modelscan scan -p rce_payload.pkl # 步骤 2:加载文件执行任意代码 python -c "import pickle; pickle.load(open('rce_payload.pkl','rb'))" # 检查:cat pwned_p4.txt -> PWNED_P4 ``` ## 攻击链 该 pickle 使用 `types.FunctionType(marshal.loads(base64.b64decode(\"...\")), {})()` 作为其 `__reduce__` 目标。`types`、`marshal` 和 `base64` 模块 不在 modelscan 的 `unsafe_globals` 黑名单中,因此扫描会静默通过。 加载时: 1. `base64.b64decode(\"...\")` 解码预编译的 Python 字节码 2. `marshal.loads(bytecode)` 将其反序列化为代码对象 3. `types.FunctionType(code, {})` 构建一个可调用对象 4. 调用该函数将执行内嵌的 shell 命令 ## 文件 - `rce_payload.pkl` — 恶意 Pickle PoC 文件(约 100 字节) - `rce_payload.py` — 生成脚本(Python) - `README.md` — 本文件 ## 披露信息 - 发现者:jasonmiao0511-hue - 报告途径:huntr.com 模型格式漏洞表单 - 日期:2026-06-15 - 相关:另请参阅 [modelscan-joblib-bypass-poc](https://github.com/jasonmiao0511-hue/modelscan-joblib-bypass-poc) 了解通过 joblib 实现的相同绕过方式
标签:AI安全, Apex, Chat Copilot, Go语言工具, 反序列化, 机器学习, 漏洞复现, 逆向工具