
CVE-2026-9198 の概念実証 - IBM Langflow 自動ログインバイパスによる未認証RCE
このリポジトリは、IBM Langflow OSS に影響する CVE-2026-9198 のための 教育用 proof of concept を提供します。
PoC(poc.py)は、未認証の攻撃者が以下を連鎖させてリモートコード実行を達成する方法を示しています:
GET/POST /api/v1/auto_login(自動ログインが有効な場合にスーパーユーザートークンを返す)、およびPOST /api/v1/validate/code(攻撃者が制御する Python コードを実行する)このコードと提供される Docker スタックは、ローカルでのセキュリティテストおよび教育のみを目的としています。
所有していないシステム、または明示的にテスト許可を得ていないシステムに対して実行しないでください。
.
├── poc.py
├── vulnerable/docker-compose.yaml
└── patched/docker-compose.yaml
poc.py: エクスプロイト PoC。vulnerable/docker-compose.yaml: langflowai/langflow:1.10.0(脆弱なバージョン)を使用したラボスタック。patched/docker-compose.yaml: langflowai/langflow:1.10.1(パッチ適用後の動作対象)を使用したラボスタック。両方の compose ファイルは、http://127.0.0.1:9999 上で poc.py をテストするための ラボとして意図的にセットアップ されています。
pip install requests
脆弱な環境を起動します:
docker compose -f vulnerable/docker-compose.yaml up -d
PoC を実行します:
python3 poc.py
脆弱な場合の期待される結果には、赤い [!] 行と、次のようなコマンド出力が含まれます:
[!] /api/v1/auto_login is vulnerable: uid=... gid=...
まず脆弱なスタックを停止します(実行中の場合):
docker compose -f vulnerable/docker-compose.yaml down -v
パッチ適用済みの環境を起動します:
docker compose -f patched/docker-compose.yaml up -d
同じ PoC を実行します:
python3 poc.py
パッチ適用後の期待される結果は、エクスプロイトチェーンがもはや成功しないことを示す緑色の [-] 行です。
poc.py 内:
URL はデフォルトで http://127.0.0.1:9999CMD はデフォルトで id別のローカルターゲットやコマンドをテストする必要がある場合は、これらの定数を調整してください。