本文へ移動
English version →
高 9.0 急ぎ度: 早めに

Flowise 3.1.4以前にコマンド実行の脆弱性

Flowise 3.1.4以前で、ログイン済みの利用者がサンドボックスを抜けてOSコマンドを実行できる脆弱性が公表されました。修正版はまだ無いので、版とALLOW_BUILTIN_DEPの設定を確認し、この設定を外すなどの回避策を進めてください。

CVE-2026-119978 公開 更新 生成 AI で作成
画像は生成 AI で作成したイメージです

急ぎ度: 早めに

CVSS v3は8.5、v4は9.0と高く、ネットワーク越しに悪用できますが、悪用にはログインとALLOW_BUILTIN_DEP=trueの設定が必要で、KEVへの掲載は確認できていません。

関係があるか

Flowiseを自社のサーバーやコンテナーで動かし、複数人にログインを許している組織が対象です。とくにCustom Functionの中でビルトインの依存モジュールを使うためにALLOW_BUILTIN_DEP=trueにしている環境は、そのまま当てはまります。

製品影響を受ける版修正版
Flowise(FlowiseAI/Flowise) 3.1.4以前 なし(2026年10月31日時点。最新の3.1.4も対象)

確かめ方

  1. 1Flowiseの稼働している版を確認します。管理画面の表示か、npmで入れた場合は npm list -g flowise、コンテナーの場合は利用しているイメージのタグで調べます。
  2. 2環境変数ALLOW_BUILTIN_DEPがtrueになっていないかを、起動スクリプト、.envファイル、docker-composeの設定、Kubernetesのマニフェストで確認します。
  3. 3Flowiseにログインできるアカウントの一覧を洗い出します。退職者や使っていないアカウントが残っていないかも見てください。

何が起きたか

Flowiseに、ログイン済みの利用者がサーバー上で任意のOSコマンドを実行できてしまう脆弱性が見つかり、2026年10月30日に公表されました。Flowiseの3.1.4以前が対象です。

FlowiseにはJavaScriptを書いて処理に組み込めるCustom Function機能があり、書かれたコードはvm2というサンドボックスの中で動きます。ALLOW_BUILTIN_DEP=trueのとき、langchainとmammothという許可済みモジュールの機能を組み合わせると、このサンドボックスの外に出られることが分かりました。

抜け出した先でのコマンドは、Flowiseのプロセスを動かしているユーザーの権限で実行されます。分類はCWE-749です。

攻撃の流れ

  1. 1

    ログイン

    Flowiseの正規アカウント、または奪われたアカウントで認証を通します。

  2. 2

    コードを送信

    Custom Function用のAPIに、細工したJavaScriptを渡します。

  3. 3

    許可済み機能を悪用

    許可されたモジュールの機能を使い、サンドボックスの外で読み込まれる場所に細工を仕込みます。

  4. 4

    サンドボックス脱出

    vm2の隔離を越え、Flowiseのプロセスとして任意のOSコマンドが動きます。

公開されている情報をもとにした流れの例です。

どう悪用されるか

悪用には、Flowiseにログインできる権限が要ります。認証なしで外から直接狙える脆弱性ではありません。利用者の操作は不要で、ネットワーク越しにAPIへ到達できれば試みられます。さらに、環境変数ALLOW_BUILTIN_DEP=trueが設定されていることが前提です。CVSS v3で攻撃の複雑さが高いと評価されているのは、この前提があるためと考えられます。

成功すると、Flowiseを動かしているユーザーの権限でOSコマンドを実行されます。そのユーザーが読める設定ファイルや環境変数が盗まれ、LLMのAPIキー、データベースの接続情報、連携先サービスの認証情報にまで影響が広がる恐れがあります。CVSSでも、影響範囲が脆弱なコンポーネントの外へ及ぶと評価されています。

今すぐやること

  1. 1

    使っている版とALLOW_BUILTIN_DEPの設定を確認する

    3.1.4以前で、かつALLOW_BUILTIN_DEP=trueなら、優先して対処します。コンテナーで動かしている場合は、稼働中のコンテナー内の値を確認します。<コンテナー名>は自社の名前に置き換えてください。

    docker exec <コンテナー名> printenv ALLOW_BUILTIN_DEP
  2. 2

    ベンダーの告知で修正版を確認し、更新する

    GitHubのリリースとアドバイザリ(GHSA-7pc2-8w3w-pqfg)で、3.1.4より新しい修正版が出ていないかを確認します。2026年10月31日時点の最新は3.1.4で、修正版はまだありません。出たら、まずテスト環境で既存のフローが動くことを確かめてから本番に当てます。なお、3.1.3で直ったGHSA-9gvv-qjj3-2p6gは別の脆弱性(CVE-2026-73483)の告知で、今回の件は直っていません。

  3. 3

    ログインできるアカウントを絞る

    使っていないアカウントを削除し、パスワードの使い回しがないかを見直します。この脆弱性の悪用にはログインが必要なので、入口を減らすことがそのまま対策になります。

  4. 4

    外部への公開範囲を見直す

    Flowiseの管理画面とAPIが、インターネットから直接届く状態になっていないか確認します。VPNや社内ネットワーク、IP制限の内側に置けるなら、そうします。

  5. 5

    不審な実行の跡を調べる

    Custom Function用のAPIへのアクセスログや、Flowiseを動かすサーバーで見覚えのないプロセス、ファイルの変更がないかを確認します。心当たりがあれば、LLMのAPIキーやデータベースのパスワードを入れ替えます。

修正版がないあいだのつなぎ

すぐに更新できない場合は、環境変数ALLOW_BUILTIN_DEPをfalseにして再起動します。今回の悪用はこの設定がtrueのときに成立するためです。ただし、Custom Functionでビルトインの依存モジュールを使っているフローは動かなくなる可能性があるので、先に利用状況を確認してください。あわせて、ログインできる人を最小限にし、Flowiseを専用の低い権限のユーザーやコンテナーで動かして、万一のときに触れる範囲を狭めます。

背景

Flowiseは、LLMを使ったチャットボットや社内向けの自動化の流れを、画面上でつなぎ合わせて作れるオープンソースのツールです。作ったフローはAPIとして公開されることが多く、LLMのAPIキーやデータベースへの接続情報も、このサーバーにまとめて置かれがちです。Custom Functionは、利用者が書いたJavaScriptをサーバー側で動かす機能です。つまり、ログインできる人が書いたコードを実行する前提で作られており、そのコードを閉じ込めておく仕組みが破られると、被害はサーバー全体に及びます。

閉じ込めに使われるvm2は、信頼できないJavaScriptを隔離して動かすためのライブラリーで、隔離を越える手口はこれまでも報告されてきました。今回は、ビルトイン依存を許可する設定のもとで、許可済みモジュールの機能そのものが抜け道になった点が特徴です。外部のモジュールを許可すると、その機能も隔離の内側から使えるため、許可の範囲がそのまま攻撃面になります。

よくある質問

Q.ALLOW_BUILTIN_DEPを設定していなければ、更新しなくてもよいですか。
A.今回の悪用はこの設定がtrueであることが前提なので、設定していなければ緊急度は下がります。ただ、3.1.4以前の版を使い続けると、ほかの脆弱性にも備えられません。修正版が出ているかを確認し、通常の更新の計画に載せておくと安心です。
Q.Flowiseのクラウド版を使っていますが、影響はありますか。
A.今回の記録にはオープンソース版のパッケージの版だけが挙がっており、クラウド版の扱いは分かりません。ベンダーの告知とサポート窓口で、自社の契約が対象かどうかを確認してください。

まだ分かっていないこと

  • 修正版がいつ出るかは公表されていません。
  • 実際の攻撃で悪用された事例があるかは、分かっていません。

2026年10月31日 訂正:修正版の確認先に挙げていたGHSA-9gvv-qjj3-2p6gは、3.1.3で直った別の脆弱性(CVE-2026-73483)の告知でした。この件の告知はGHSA-7pc2-8w3w-pqfgで、3.1.4以前が対象、修正版はまだ出ていません。影響パッケージの表にあった「3.1.3で修正」も、同じ取り違えだったので外しました。

この記事は、取得元の公開情報をもとに生成 AI で作成しています。誤りを含むことがあります。対応を決める前に、下の原文と参照先を確認してください。

影響パッケージ

種類パッケージ影響を受ける版修正版
FlowiseAI Flowise
3.1.4 以前
—
原文の説明 取得元が公開している説明をそのまま載せています (多くは英語)。

Flowise (packages flowise and flowise-components) in versions <= 3.1.2 contain a sandbox escape in the vm2/@flowiseai/nodevm JavaScript sandbox. An authenticated user with access to the /api/v1/node-custom-function endpoint can escape the sandbox by supplying attacker-controlled executablePath and args parameters to puppeteer.launch(), which internally invokes child_process.spawn() outside the sandbox boundary. This allows execution of arbitrary OS commands as the Flowise process user (root in the official Docker image) and arbitrary host file disclosure via Chromium's file:// URL handling. In versions 3.0.8–3.1.2 exploitation requires ALLOW_BUILTIN_DEP=true; earlier versions are exploitable by default. Fixed in 3.1.3.

出典: CVE.org (CVE Program・cvelistV5) NVD GitHub Advisory

参照URL

当サイトでは、アクセス解析と広告の効果測定のために Cookie を使います。株式会社Game のサイト共通の設定です。 詳しく