[緊急] Flowiseの深刻なRCE脆弱性(CVE-2026-70470)をフロントエンドエンジニア視点で徹底解説
はじめに:Flowiseユーザーへ緊急のお知らせ
こんにちは、日本のフロントエンドエンジニアの皆さん。今回は、Low-code/No-codeのLLMアプリケーション開発ツールとして注目を集める「Flowise」に関する深刻な脆弱性について、技術的な側面から詳しく解説します。
この脆弱性は、Flowiseが稼働するNode.jsサーバー上で攻撃者が任意のコードを実行(Remote Code Execution: RCE)できるという極めて危険なもので、CVSSスコア9.8のCriticalと評価されています。もし皆さんのプロジェクトでFlowiseを利用している場合、早急な対策が求められます。
脆弱性の概要:CVE-2026-70470 / GHSA-52fh-8v99-63c2
この脆弱性は、Flowiseの特定のエージェント(「CSV Agent」や「Airtable Agent」)がPythonコードを実行する機能において発生します。具体的には、攻撃者が特殊なUnicode文字を巧みに利用することで、Flowise内部のセキュリティチェックをすり抜け、最終的にFlowiseサーバー上でOSコマンドを自由に実行できてしまうというものです。
これにより、サーバーの乗っ取り、機密情報の窃取、内部ネットワークへの不正アクセスなど、甚大な被害につながる可能性があります。
なぜ起こるのか?技術的なメカニズムを深掘り
この脆弱性は、JavaScriptの正規表現の特性とPythonの文字列処理、そしてUnicodeの複雑さが複合的に絡み合って生じます。フロントエンドエンジニアの皆さんには馴染み深い技術が関わっていますので、詳しく見ていきましょう。
Flowiseは、悪意のあるPythonコードの実行を防ぐため、`import`や`__class__`といった危険なキーワードを正規表現でチェックしています。通常、このようなキーワードを正確に検出するために、正規表現の`\b`(単語の区切り)が使われます。
しかし、JavaScriptの正規表現における`\b`は、ASCII文字(`a-z`, `A-Z`, `0-9`, `_`)以外の文字を単語区切りと認識しないという特性があります。これが今回の脆弱性の第一歩となります。
攻撃者はこの`\b`の盲点を突きます。例えば、通常のアルファベット`a`の代わりに、見た目は非常によく似ているが内部的には異なるUnicode文字(例: 数学的太字の`𝐚`)を使用します。
これら「ホモグリフ」と呼ばれる文字を悪意のあるコードに含めると、例えば`__cl𝐚ss__`のような文字列が生成されます。JavaScriptの正規表現は、`𝐚`を単語の一部と見なさず単語区切りとして扱わないため、`__cl𝐚ss__`全体が安全な文字列としてセキュリティチェックをすり抜けてしまいます。
セキュリティチェックを通過した悪意のあるコードは、Flowiseが内部でPythonコードを実行するために使用しているPyodide(ブラウザ内でPythonを実行する技術、ここではNode.js環境でPythonを実行する役割)に渡されます。
ここで問題となるのが、Python(および多くの言語)の文字列処理です。Pythonは、上記のようなUnicodeのホモグリフを内部的に通常のASCII文字として扱います(Unicode正規化処理)。これにより、`__cl𝐚ss__`はPythonインタープリタによって`__class__`として解釈されてしまいます。
結果として、セキュリティチェックを通過し、Pythonで正しく解釈された悪意のあるコード(例: `__class__`を使った任意のコード実行ロジック)が、Pyodideを通じてFlowiseが動作しているNode.jsサーバー上で実行されてしまうのです。Flowiseプロセスと同じ権限で、OSコマンドを自由に実行できるようになります。
影響を受ける条件と悪用シナリオ
この脆弱性は、Flowiseの「CSV Agent」または「Airtable Agent」を含むチャットフローを使用している場合に影響を受けます。
もしチャットフローが公開されており、認証されていないユーザーがアクセスできる場合、攻撃者はチャットメッセージを通じてLLM(大規模言語モデル)に意図的に悪意のあるPythonコードを生成させることができます。このコードがFlowiseサーバーに渡され実行されることで、RCEが成立します。
チャットフローの編集権限を持つワークスペースユーザーであれば、`customReadCSV`などの設定項目に直接、上記の仕組みを利用した悪意のあるコードを埋め込むことで、攻撃を実行できます。これは内部からの攻撃ですが、設定ミスや悪意のある内部関係者によって引き起こされる可能性があります。
もたらされるリスクと緊急度
この脆弱性が悪用されると、攻撃者はFlowiseが動作しているサーバー上で、ファイルシステムの読み書き、機密情報(APIキー、データベース認証情報など)の窃取、内部ネットワークへの侵入、さらにはサーバー全体の乗っ取りといった深刻な被害をもたらす可能性があります。
これはCVSSスコア9.8という極めて高いリスクであり、Flowiseを利用しているすべてのユーザーは、直ちに対応する必要があります。
推奨される対策:今すぐアップデートを!
最も効果的かつ推奨される対策は、Flowiseを最新の修正済みバージョンにアップデートすることです。開発元は既にこの問題に対応したバージョンをリリースしているはずですので、公式サイトやGitHubリポジトリを確認し、速やかに適用してください。
アップデートが難しい場合でも、少なくとも「CSV Agent」や「Airtable Agent」を含むチャットフローの利用を一時的に停止するか、外部からのアクセスを制限するなどの緊急措置を検討してください。
まとめ
今回のFlowiseのRCE脆弱性は、JavaScriptの正規表現の挙動、Unicodeの複雑さ、そしてPythonの文字列正規化という、複数の技術的要素が組み合わさって発生する非常に巧妙な攻撃でした。特にフロントエンドエンジニアの皆さんにとっては、普段触れる機会の多いJavaScript正規表現の思わぬ落とし穴を再認識する良い機会になったのではないでしょうか。
LLMを利用したアプリケーション開発は急速に進んでいますが、それに伴うセキュリティリスクも高まっています。利用しているライブラリやフレームワークのセキュリティ情報を常にチェックし、迅速な対応を心がけましょう。
皆さんのシステムが安全であることを心から願っています。