OWN NEWS GATHER
← 戻る
The Hacker News

Googleの「Dialogflow CX」にチャットボット乗っ取りの脆弱性 Varonisが「Rogue Agent」を発見

要点

  • Googleの対話AI開発プラットフォーム「Dialogflow CX」において、同一プロジェクト内の別のチャットボットを乗っ取ることができる脆弱性が判明した。

  • 脆弱性は「Rogue Agent(ローグ・エージェント)」と命名され、カスタムPythonコードを実行できる「Code Blocks」機能に存在していた。

  • 攻撃の実行には対象チャットボットの編集権限が必要なため、悪意ある内部関係者や開発者アカウントの乗っ取りによる悪用が想定される。

  • 脆弱性を悪用されると、ユーザーとのリアルタイムな会話の盗聴やデータの窃取、パスワード再入力を促すフィッシング詐欺メッセージの送信が可能だった。

  • Googleはすでにこの脆弱性を修正しており、VaronisとGoogleの双方ともに、実際の攻撃で悪用された形跡はないとしている。

  • セキュリティ企業のVaronisは2026年7月7日、Googleの対話型AI構築プラットフォーム「Dialogflow CX」において、チャットボットを乗っ取ることができる重大な脆弱性「Rogue Agent(ローグ・エージェント)」を発見したと発表した。この脆弱性を悪用された場合、同一のGoogle Cloudプロジェクト内で、カスタムコード機能が有効化されたボットが侵害され、ユーザー情報の窃取や偽のメッセージ送信が行われる危険性があった。Googleはすでにこの脆弱性を修正しており、現時点で実際に悪用された形跡はないと報告されている。

脆弱性の概要と影響範囲

今回明らかになった脆弱性「Rogue Agent」は、Dialogflow CXで構築されたチャットボットのうち、「Playbooks(プレイブック)」およびカスタム「Code Blocks(コード・ブロック)」機能を使用している組織に影響を及ぼす。Code Blocksは、チャットボットの対話フローに開発者が独自のPython(広く使われているプログラミング言語)コードを組み込んで、入力の検証や動作の制御、特定のツールとの連携などを実現するための機能である。

この脆弱性は、インターネット上の不特定多数からリモートで直接攻撃を実行できるようなものではない。攻撃を成立させるためには、対象となるエージェント(ボット)に対する編集権限である dialogflow.playbooks.update 権限が必要となる。そのため、現実的な脅威となるのは、悪意を持った組織内部の人物であるインサイダー(組織内の関係者)や、開発者アカウントが乗っ取られた場合である。しかし、一度この権限を利用してシステム内部に足がかりを得てしまうと、その影響範囲は同じGoogle Cloudプロジェクト内に存在するすべてのボットにまで波及する性質を持っていた。

攻撃が成功した場合、攻撃者はボットとユーザーの間で交わされているリアルタイムな会話の内容を傍受し、会話の中でユーザーが共有した個人情報や機密データを盗み出すことが可能になる。さらに、ボットに対して攻撃者が作成した任意のメッセージを発言させることもでき、たとえば「セキュリティのためにパスワードを再入力してください」といったメッセージを表示させてユーザーの資格情報を盗み出す、高度なフィッシング詐欺に悪用される恐れがあった。

共有実行環境と設定ファイルの書き込み権限

Varonisの調査によると、この脆弱性の根本的な原因は、DialogflowにおけるCode Blocksの実行環境の分離設計に問題があったことである。Code Blocksで追加されたカスタムコードは、Googleが管理するCloud Run(サーバーレスでプログラムを実行するクラウドサービス)上で動作するが、同一のGoogle Cloudプロジェクト内でCode Blocksを使用するすべてのボットは、この実行環境の同一インスタンス(実際に稼働している仮想的な実行環境の実体)を共有していた。

Googleがこの実行環境を管理・運用しており、顧客側からは中身の制御や可視化ができない状態であったが、Varonisは共有環境内の異なるボットの間に実質的な隔離(アイソレーション)が施されていないことを発見した。

さらに、カスタムコードをラップしてPythonのexec()関数(文字列をプログラムとして動的に実行するPythonの機能)に引き渡す役割を持つ、環境内部のセットアップファイル code_execution_env.py が、書き込み可能な状態で共有環境内に残されていた。このファイルは、チャットボットの会話履歴(history)や、セッションIDなどのセッション状態(state)、およびボットに特定のテキストを返答させるための respond() 関数などの変数や関数を定義する役割を持っている。

攻撃者は、ある1つのエージェントのCode Blockを実行する際、この code_execution_env.py ファイルを上書きすることが可能だった。具体的には、攻撃者が制御する外部サーバーから改ざんされたスクリプトをダウンロードし、実行中のコンテナ(アプリとその実行に必要なシステム環境をパッケージ化した仮想的な領域)内にあるオリジナルのファイルを書き換える。一度ファイルが書き換えられると、同じ環境を共有する他のすべてのエージェントでCode Blockが実行されるたびに、攻撃者の仕込んだ改ざん版コードが実行されることになる。これにより、正規のコードと同じスコープで会話履歴やセッション状態にアクセスし、それらを外部サーバーへ送信したり、ボットから不正な応答を送信させたりすることが可能となっていた。

攻撃者はさらに、Dialogflowの管理コンソール上で悪意あるCode Blockの設定を元に戻すことで、コンソール上に表示される変更履歴の痕跡を消し去ることができた。しかし、コンテナ内部ではすでに上書きされたファイルが稼働し続けているため、コンソール上の表示を元に戻しても攻撃の実行は継続されたという。

検出の困難さとその他のサンドボックス回避ルート

このファイルの上書きはGoogleが管理する環境の内部で行われるため、顧客側からそのプロセスを視認することはできない。さらに、Googleのログ管理サービスであるCloud Logging(Google Cloud上でシステムの動作履歴を記録するサービス)には、実行環境内でのファイルの変更や、注入された不正なコード自体の動作に関するログが記録されない仕様となっていた。このため、顧客側がこの攻撃の発生をログから検知することは極めて困難であった。

また、Varonisはファイルの上書き以外にも、Code Blocksのサンドボックス環境からデータが漏洩する2つの問題を報告している。

1つ目は、Code Blocksの実行環境から外部のインターネットへ、制限なしに接続できていた点である。Pythonの標準ライブラリである urllib を用いることで、外部のサーバーへ直接データを送信し、そこからコマンドを受け取ることができた。これは、保護されたクラウドサービスからデータが外部に流出するのを防ぐセキュリティ境界VPC Service Controls(保護されたクラウド内のデータが外部に流出するのを防ぐセキュリティ境界)をバイパスするものであり、データの窃取や外部からの遠隔操作のチャネルとして機能する恐れがあった。

2つ目は、クラウドの認証情報を発行するInstance Metadata Service (IMDS)(クラウド内の仮想マシンなどが自身の情報や一時的な認証情報を取得するための仕組み)に対して、実行環境からアクセス可能であった点である。クエリを送信することで、Google管理のサービスアカウントのアクセストークンを取得できた。このサービスアカウント自体の権限は低く、直接的な被害リスクは限定的であったが、本来であれば分離されているべきコード実行のサンドボックス環境からIMDSに到達できること自体がセキュリティ上の不備であると指摘されている。

現在、Googleはこれらの報告を受けて脆弱性の修正を完了しており、VaronisとGoogleの双方が、この脆弱性を突いた実際の被害報告や攻撃の形跡は確認されていないと説明している。

元URL