LangflowのMCP Stdio接続に、認証済みの一般ユーザーがサーバー上で任意のOSコマンドを実行できる脆弱性が公表されました。GitHub Security Advisoryの識別子はGHSA-7w94-79vh-5mr2、深刻度はCritical、CVSS v3.1は9.9です。

影響を受けると明示されたバージョンは1.8.3、修正版は1.9.0です。2026年9月16日時点の最新公開版は1.12.1のため、対象環境は互換性を検証したうえで最新安定版への更新を優先してください。

LANGFLOW SECURITY ALERT

MCPの接続設定が、OSコマンド実行経路になる

9.9CVSS v3.1
1.8.3影響対象版
1.9.0+修正版
低権限一般ユーザーでも悪用可能

3行で分かる影響

  • 通常ユーザーがMCPサーバー設定のcommandへ任意の内容を保存でき、検証や許可リストなしでシェルへ渡されます。
  • envも操作でき、PATHの上書きやLinuxのLD_PRELOADなどを通じた追加攻撃が可能です。
  • MCP設定一覧を取得するだけで接続処理が走るため、管理者が画面を開いたことを契機にコマンドが再実行される恐れがあります。

以前の記事からの更新点

当サイトではLangflowの導入・運用を一般的に解説してきました。今回の続報は製品比較ではなく、2026年9月10日に公開された特定のMCP Stdio脆弱性への緊急対応です。

「ログインが必要だから安全」という前提が崩れる点が重要です。共同利用環境では、フローを作成できる一般ユーザーと、Langflowプロセスが持つOS権限・秘密情報の境界が突破されます。

技術的な原因

アドバイザリによると、LangflowのMCP v2 APIは通常ユーザーからcommandargsenvを含む設定を受け付けます。Stdioは、標準入力・標準出力を使ってローカルプロセスとしてMCPサーバーを起動する方式です。

問題の版では、利用者が指定したコマンド文字列が実質的に次の形でシェルへ渡されました。

bash -c "exec {user_supplied_command}"

危険なコマンドの許可リスト、パス制限、文字列の無害化、サンドボックスがなく、Node.jsの存在確認以外に有効な検証がありませんでした。

1. 一般ユーザーでログイン 2. 悪意あるMCP設定 3. 一覧取得で起動 4. Langflow権限で実行

なぜMCP設定画面を開くだけで危険なのか

登録済みMCPサーバーをaction_count=true付きで一覧取得すると、利用できるツール数を数えるために接続が開始されます。Langflow UIでMCP設定ページへ移動した場合にもこの取得が発生します。

その結果、攻撃者が登録したコマンドはフローの明示実行を待たず起動し、一覧を再表示するたびに繰り返され得ます。通常のフロー編集画面にカスタムコードが見えないため、レビューでも気づきにくいと報告されています。

想定される被害

攻撃影響確認対象
任意コマンド実行ファイル読取・改変、バックドアプロセス、永続化設定、実行ログ
環境変数窃取LLM APIキー、DB資格情報の流出秘密情報の利用履歴とローテーション
内部ネットワーク探索他サービスへの横展開DNS、プロキシ、FW、クラウド監査ログ
設定の永続化画面表示のたびに再実行MCP Stdio設定の全件

コンテナで動かしていても安全とは限りません。ホストのDockerソケット、クラウドのインスタンスロール、共有ボリューム、内部ネットワークへアクセスできれば、コンテナ外へ影響が広がります。

すぐ行う確認と更新

1. バージョンを確認する

python -m pip show langflow | grep -E '^(Name|Version):'

# コンテナイメージと実行中コンテナも確認
docker ps --format '{{.Image}}\t{{.Names}}'
docker inspect YOUR_LANGFLOW_CONTAINER --format '{{.Config.Image}}'

1.8.3なら影響対象です。タグがlatestでも、実行中コンテナが自動的に新しくなるわけではありません。実体のイメージダイジェストとアプリ表示版を確認します。

2. 1.9.0以降へ更新する

現在の最新版は1.12.1ですが、プラグインやフローの互換性を検証して更新してください。

python -m pip install --upgrade 'langflow>=1.9.0'

# 更新後
python -m pip show langflow | grep '^Version:'

コンテナ運用では新しい固定タグまたはダイジェストを取得し、既存コンテナを再作成します。更新前にDBとフロー定義をバックアップし、検証環境で起動・主要フロー・MCP接続を確認します。

3. 更新まで隔離する

  • インターネットからLangflowのUIとAPIを遮断する
  • 信頼できない一般ユーザーのアクセスを停止する
  • MCP Stdio設定の作成・利用を止める
  • Langflowコンテナから外部・内部ネットワークへの通信を最小化する
  • クラウドメタデータ、Dockerソケット、ホストパスを公開しない

これは暫定措置です。アドバイザリが示す根本対応は修正版への更新です。

侵害調査チェックリスト

対象版を複数ユーザーで運用していた場合、更新だけで完了とせず、既に悪用されていないか確認します。

  • 登録済みMCPサーバーを全件エクスポートし、Stdioのcommandargsenvをレビュー
  • 作成者、作成時刻、最終更新時刻をアカウント台帳と照合
  • 不審な子プロセス、シェル、ダウンローダー、定期実行を確認
  • LangflowのAPIアクセスログでMCP v2の作成・一覧取得を検索
  • コンテナやホストからの不審な外向き通信を確認
  • LLM、DB、クラウド、Git、Webhookの資格情報をローテーション
  • 改変の疑いがあれば、クリーンイメージから再構築

ログが不足して「侵害なし」を証明できない場合は、Langflowプロセスから参照可能だった秘密情報を漏えいしたものとして扱う方が安全です。

修正版と最新版を混同しない

アドバイザリ上の最小修正版は1.9.0です。ただしLangflowにはその後も複数のセキュリティ更新が公開されています。最小修正版へ上げるだけで、別の既知脆弱性まで解消するとは限りません。

推奨判断
緊急遮断後は、対象フローの互換性を検証し、サポート可能な最新安定版へ更新してください。1.9.0は今回の脆弱性に対する最低線であり、長期運用の推奨固定版という意味ではありません。

今後の安全設計

MCP Stdioはローカルプロセス起動を前提とするため、Webアプリの一般ユーザーに設定権限を渡すと、設計上の危険が大きくなります。

  • Stdio設定は管理者専用にする
  • 実行可能バイナリと引数を厳格に許可リスト化する
  • 任意の環境変数上書きを禁止する
  • MCPプロセスを別コンテナ・別ユーザー・読み取り専用FSで隔離する
  • UI表示など読み取り操作でプロセスを起動しない
  • 設定変更と実行を別の監査イベントとして記録する

AIワークフロー製品は、LLMのAPIキーや社内データベースへ接続することが多く、一般的な社内ツールより侵害時の到達範囲が広くなります。「認証済みだから信頼する」のではなく、ユーザー、フロー、ツール、OSの境界ごとに最小権限を設計してください。

リスクと限界

  • 公開アドバイザリは影響版を1.8.3と明示しており、他の版を独自に影響対象とは断定できません。
  • CVE番号は2026年9月16日時点で付与されておらず、GHSA識別子で追跡します。
  • 認証が必要ですが、一般ユーザー権限で悪用できるため、共同利用環境では重大です。
  • 本記事は防御と復旧を目的とし、侵害有無の判断には環境固有のログ調査が必要です。

参照元

最終確認日:2026年9月16日

Previous Post Next Post