間違ったリンクを一度クリックしただけで、パスワードが盗まれたりマルウェアがインストールされたりする時代は終わりました。それは、組織内に永続的なAIエージェントを生み出し、あなたの代わりにメールを読み、ファイルを漁り、同僚とチャットを行う可能性があります。Zenity Labsのセキュリティ研究者は、「AgentForger」と名付けた手法を用いて、まさにこのシナリオを実証しました。その仕組みは、自律型AIツールをどのように保護すべきかという点において、深刻な欠陥があることを明らかにしています。

CSRFからAgentForgerへ:新たな攻撃クラス

多くのセキュリティ専門家は、古典的なWeb脆弱性としてCross-Site Request Forgery(CSRF)を知っています。従来の形式では、攻撃者は認証済みのユーザーのブラウザを欺き、単一の不正なリクエストを送信させます。アカウントのメールアドレスを変更したり、二要素認証を無効にしたりするかもしれません。被害は通常、一つのアクションに限定されます。

AgentForgerはこのモデルを根底から覆します。単一のリクエストを偽造するのではなく、OpenAIのChatGPT Workspace Agents内に、自律型エージェントそのものを偽造します。攻撃は、chatgpt.com/agents/studio/newにあるChatGPT Agent Builderから始まります。通常、エージェントの構築は手動で行われるプロセスです。テンプレートを選択し、エージェントがアクセスできるツールを確認し、受信トレイを読み取ったりドライブに書き込んだりする前にマシンが確認を求めるようガードレールを設定します。このワークフローは、各ステップで人間が注意を払っていることを前提としています。

Zenity Labsは、攻撃者がURLを制御できる場合、これらの保護策が霧散してしまうことを発見しました。特定のクエリパラメータ、すなわち template_nameinitial_assistant_prompt を埋め込むことで、悪意のあるリンクは作成フォーム全体に事前に値を入力させることができます。被害者がクリックすると、initial_assistant_prompt が自動的に送信・実行されます。テンプレートの選択、ツールの確認、権限のダイアログは一切表示されません。被害者は、普通のChatGPTのページが読み込まれた後にタブを閉じたように見えるかもしれませんが、その裏で、攻撃者が意図した通りの設定でエージェントが生成されます。

これは従来のマルウェア感染ではありません。ノートPCに何かがダウンロードされるわけではありません。脅威は被害者のSaaSセッション内に完全に存在し、その背後にあるプラットフォームの完全な正当性を持って動作します。

認証情報の代わりに信頼を乗っ取る

AgentForgerの真の残酷さは、権限の扱い方にあります。ChatGPT Workspaceのエンタープライズユーザーは、通常、OAuthを通じてAIエージェントをビジネスアプリケーションにリンクさせています。Gmail、Outlook、Slack、Google Drive、またはMicrosoft Teamsを接続するために一度認証を行えば、それ以降、エージェントはユーザーに代わってそれらのサービスにクエリを実行できます。

AgentForgerは、これらのアクセス権をすべて自動的に継承します。被害者はすでにChatGPTにログインしており、それらのOAuth接続を確立しているため、偽造されたエージェントはそれらを再利用します。被害者の画面には、この新しいエージェントにメールへのアクセスを許可するかどうかを尋ねる新しい同意画面は表示されません。システムは、そのエージェントをユーザーの拡張機能として扱います。

Zenityのデモンストレーションでは、攻撃者はさらに攻撃的な動作を行うように悪意のあるURLを作成しました。それはAgent Builderに対して、読み取り、書き込み、削除に関するすべての権限トグルを「Never ask」に切り替えるよう指示しました。通常、プラットフォームは、スプレッドシートを開く、メッセージを送信する、カレンダーの予定を削除するといった機密性の高いアクションを実行する前に、人間に確認を求めます。これらのコントロールをサイレントモードに強制することで、攻撃者は人間による介在(human-in-the-loop)を完全に排除します。エージェントはアカウント内のゴーストとなり、アラートや確認ダイアログを一切発生させることなく、接続されたアプリ間を自由に移動できるようになります。

公然と隠れるコマンドチャネル

永続性は、厄介なエクスプロイトを運用上の悪夢へと変貌させます。AgentForgerは、ChatGPTに組み込まれたスケジューリング機能を通じて永続性を実現します。攻撃者は作成プロセス中に、時間をずらした複数のスケジュールを設定し、5分おきに起動して実行されるようなエージェントを作り出します。

コマンド&コントロール(C2)ループの仕組みは以下の通りです。攻撃者は被害者のOutlookの受信トレイにメールを送信します。件名には、「TASK」などのトリガーワードが含まれています。5分ごとに、不正なエージェントがそのトリガーを探して受信トレイをスキャンします。一致するものが見つかると、エージェントはメールを開いて指示を読み取り、被害者の認証済みアプリケーションを使用して指示を実行し、その結果を攻撃者に送り返します。

被害者の自身の企業用メールが、コマンド&コントロール(C2)インフラへと変貌します。不審なDNSビーコンも、東欧の未知のIPアドレスへの接続も、エンドポイント検知がフラグを立てるようなマルウェアのバイナリも存在しません。トラフィックは、完全に正当な認証情報を使用して、MicrosoftまたはGoogleのAPIを経由して流れます。ネットワークログを監視しているセキュリティ運用チームにとって、これは承認されたSaaSツールを使用している多忙な従業員の動きに見えます。

実世界への影響:組織のマッピングと信頼の武器化

Zenity Labsは、管理された環境下でこの攻撃の実用的な限界をテストしましたが、その結果はあらゆるCISOを不安にさせるものです。

メールをトリガーとした単一の指示を用いることで、研究者たちはエージェントに組織のマッピングを行うよう命じました。エージェントはSlack、Microsoft Teams、およびSharePointに対してクエリを実行しました。その結果、チャンネル名、チーム構造、ファイルリポジトリが返されました。エージェントは、M&Aの条件書や従業員の給与データを含む機密文書を特定しました。すべてのアクセスは被害者の正当なアイデンティティの下でログに記録されるため、フォレンジック調査においては、通常のユーザーによるノイズと悪意のあるユーザーによるノイズを判別するという問題になります。

次に、ソーシャルエンジニアリングの可能性があります。エージェントは被害者の公式なSlackまたはTeamsアカウントを通じてメッセージを送信できるため、外部のメールゲートウェイやDMARCチェックを完全にバイパスする内部フィッシングキャンペーンを実行できます。信頼できる同僚からのダイレクトメッセージで、間近に迫ったSSOの展開を確認するか、リンクをクリックして新しい福利厚生ポータルをテストするよう求められる場面を想像してみてください。そのメッセージには、同僚の名前、プロフィール写真、そしてチャット履歴の文脈が含まれています。それは、昨日ランチの予定について話し合ったのと同じ会話スレッドに届きます。そのレベルの信頼は、偽装されたドメインやスペルミスのある送信者アドレスとは根本的に異なり、AgentForgerはそれを容赦なく悪用します。

真の教訓

AgentForgerは、エンタープライズAIプラットフォームがどのように信頼を継承するかという構造的な問題を露呈させています。私たちは、自律的にスケジュールを組み、コードを書き、機密データにクエリを投げるエージェントを構築していますが、その一方で、人間がすべてのボタンをクリックすることを前提とした静的なWebアプリケーション向けに設計された権限モデルを依然として使用しています。「ユーザーが行うこと」と「ユーザーのエージェントが行うこと」の境界は崩壊しており、攻撃者は今やその崩壊を大規模に悪用できる立場にあります。

ChatGPT Workspaceを使用している組織は、エージェントの作成をカジュアルなワークフローではなく、特権的な操作として扱う必要があります。つまり、エージェントが受信トレイ全体やファイルストアに密かにアクセスできないよう、OAuthスコープを監査することを意味します。また、人間のペースではなく、スケジュールされたループのように見える突発的なアクティビティを監視することも意味します。そして、次の大規模な侵害は、パスワードの漏洩やフィッシングメールから始まるものではないかもしれない、と認識することでもあります。それは、注意散漫な一度のクリックによって、決して眠ることのない機械へと、あなたのアイデンティティが密かに委譲されることから始まるのかもしれません。