Google CloudのDialogflow CXサービスに存在した脆弱性により、攻撃者がエージェントを密かに制御し、会話を操作し、機密情報を窃取できた可能性があると、Varonisが報告しています。
Dialogflow CXは、企業がカスタマーサポート、金融サービス、ヘルスケア支援、そして企業環境内での機密データ処理ワークフロー向けに、高度な仮想エージェントやチャットボットを構築できるエンタープライズ向け対話型AIプラットフォームです。
ユーザーとの会話ワークフローにおいて、Dialogflow CXはPlaybooksという機能を利用しており、Code Blocksを通じてカスタムPythonロジックを会話フローに組み込むことができます。これにより、エージェントはユーザー入力の処理、API呼び出し、データ操作を行えるようになります。
Code Blocksは、Googleが管理する環境、すなわちCloud Runサービス内で実行されます。Cloud Runインスタンスはインターネットへのアウトバウンド接続を開始でき、データ境界をまたいで通信することも可能です。
「ここに重要な設計上の詳細があります。同一のGCPプロジェクト内でCode Blocksを使用するすべてのDialogflowエージェントは、実質的に同じCloud Run実行環境を共有しており、この環境はGoogleによって管理され、被害者の管理範囲外にあります」と、この脆弱性をRogue Agentと命名したVaronisは述べています。
Varonisは、パブリックアクセス可能で書き込み権限のあるファイルシステムを持ち、システムファイルを変更できるユーザー権限で動作しているCloud Runインスタンス内で、Code Blocksの設定権限が有効になっている場合、Pythonのexec()関数を使ってCode Blocksを実行する役割を担う重要なファイルを改変できることを発見しました。
任意のPythonコードの実行を制限する仕組みが存在しなかったため、この重要なファイルを上書きして悪意のあるコードを実装することが可能でした。これにより、ユーザーの会話へのアクセスや、Code Blocksパイプラインへの干渉、ワークフローの操作が行えてしまいます。
「注入されたCode Blockはexec()内の同一スコープで実行されるため、攻撃者はこれらの変数に直接アクセスできます。つまり、進行中の会話を完全に把握できるだけでなく、セッションを乗っ取ったり、正規のフローになりすましたりすることも可能になります」とVaronisは説明しています。
攻撃者はまた、内部関数を呼び出してエージェントに特定の文字列を返させることも可能で、これにより会話を操作してフィッシングやソーシャルエンジニアリング攻撃につなげることができます。
この重要ファイルを改変することで、攻撃者はユーザーの会話を窃取したり、正規の再認証要求を装ったフィッシングプロンプトを注入したり、すべてのユーザーに対してファイルを改変し続ける永続的なロジックを展開したりすることが可能でした。しかもこの改変はログに一切記録されず、攻撃は完全に検知不能な状態でした。
「結果として何が起きるのか。攻撃者は同一GCPプロジェクト内のすべてのエージェントを検知されることなく密かに掌握し、会話を操作し、機密データを窃取できてしまいます。カスタマー対応をDialogflow CXに依存している組織にとって、この不具合は信頼の壊滅的な崩壊を意味し、しかもその原因は単一のエージェントにおける、見過ごされがちなたった一つの権限設定にありました」とVaronisは指摘しています。
同社はさらに、外部サーバーとの双方向通信チャネルを確立し、データ境界を強制するVPC Service Controlsを回避できること、そしてCloud Run環境内のInstance Metadata Service(IMDS)を標的にすることで、Googleが管理するサービスアカウントのアクセストークンを取得できることも発見しました。
Varonisは2025年11月にこの脆弱性をGoogle Cloudに報告しました。初期パッチは4月に展開され、完全な修正は6月に適用されました。
翻訳元: https://www.securityweek.com/google-dialogflow-cx-bug-allowed-attackers-to-hijack-ai-conversations/