Langflow のコードインジェクション(CVE-2026-9198)に関する独立した再現、ラボ検証、および露出開示。これは Langflow 1.0.0 から 1.10.0 のデフォルトデプロイメントに対する CVSS 9.8 の未認証リモートコード実行です。1.10.1 で修正され、2026-08-04 に CISA の Known Exploited Vulnerabilities カタログに追加されました。
調査期間: 2026年8月17日〜18日。すべての悪用は、当方が所有するラボインスタンスに対してのみ実施しました。
Web 記事: https://riftweld.github.io/langflow-cve-2026-9198/
これは元の discovery レポートではありません。CVE-2026-9198 は IBM と CISA によって公開開示されました。このリポジトリは、独立した根本原因の再構築、ラボでの再現、およびホスティングプロバイダーへの協調通知キャンペーンを文書化したものです。
| パス | 説明 |
|---|---|
WRITEUP.md | 完全な記事: 根本原因、攻撃チェーン、ラボでの差分、露出、およびプロバイダー経由の開示 |
LAB-VALIDATION.md | ラボログ: 1.10.0 での再現と、パッチ適用済み 1.10.1 との差分 |
poc/poc_takeover.py | エンドツーエンドのラボ PoC(ラボ専用、最初に対象ホストを編集すること) |
poc/poc_transcript.md | 当方のラボコンテナに対して実行した PoC のキャプチャ |
recon/shodan_langflow_recon.py | パッシブな露出列挙(Shodan API、アクティブプロービングなし) |
notifications/ | ホスティングプロバイダーの abuse 窓口に送信した8通の通知メールのコピー(インスタンス別の表は非公開) |
LANGFLOW_AUTO_LOGIN=true)において GET /api/v1/auto_login が、認証情報なしで長期間有効なスーパーユーザー JWT を返しました。POST /api/v1/validate/code が送信された関数定義を実行し、コマンド出力を HTTP レスポンスにそのまま返しました。すなわち、完全な未認証コード実行です。langflowai/langflow:1.10.0 で再現しました。1.10.1 の対照環境では両方の部分が塞がれています(短命トークン、空の exec シンク)。ラボ専用。脆弱な Langflow コンテナを起動し、スクリプトの対象に指定します:
docker run -d --name lf-lab -p 127.0.0.1:7860:7860 \
-e LANGFLOW_AUTO_LOGIN=true langflowai/langflow:1.10.0
python3 poc/poc_takeover.py --url http://127.0.0.1:7860 --cmd "id"
第三者システムに対して絶対に実行しないでください。露出に関する調査結果はホスティングプロバイダーの abuse チャネルを通じて処理され、対象ごとの記録は意図的に公開していません。
| 日付 | イベント |
|---|---|
| 2026-06-23 | Langflow 1.10.1 リリース(修正) |
| 2026-07-02 | IBM の bulletin |
| 2026-07-06 | 初の実環境センサー検知(公開前) |
| 2026-07-17 | CVE 公開 |
| 2026-07-29 | 公開 nuclei テンプレートのマージ |
| 2026-08-04 | CISA KEV への掲載(修復期限 08-07) |
| 2026-08-17/18 | 本独立再構築、ラボ検証、およびプロバイダーへの通知 |
コードは防御および教育目的で現状のまま提供されます。