Microsoft 365 Copilot の悪用:間接プロンプト・インジェクションと情報漏洩

Microsoft 365 Copilot Flaw Lets Hackers Steal Sensitive Data via Indirect Prompt Injection

2025/10/21 gbhackers — Microsoft 365 Copilot の脆弱性を悪用する攻撃者は AI アシスタントを騙して、ドキュメント内に隠し持った指示を実行させ、テナントの機密データを取得/抽出できる状態にあった。その後に、この AI はデータを悪意の Mermaid ダイアグラムにエンコードし、それがクリックされると、盗んだ情報を攻撃者のサーバに送信する仕組みを構築していた。

研究者たちのレポートによると、特別に細工された Office ドキュメントの要約を、Microsoft 365 Copilot が要求された際に、間接プロンプト・インジェクション・ペイロードにより隠された手順が実行されたという。

Copilot は通常の要約を作成する代わりに、最近の社内メールを取得し、16 進数で Mermaid ダイアグラムにエンコードし、以下のようなログイン・ボタンを作成した。

Embedded Diagram
Embedded Diagram

このダイアグラムには CSS と、攻撃者のサーバを指すハイパーリンクが含まれており、エンコードされたデータは URL に埋め込まれていた。

何も知らないユーザーがボタンをクリックすると、機密情報が攻撃者のログに送信され、後で解読される可能性がある。

攻撃の仕組み

Mermaid は、シンプルなテキスト定義からダイアグラムを生成するツールであり、Markdown 形式の構文を用いて、フローチャート/シーケンス図/ガントチャートなどをサポートする。

Copilot は Mermaid ダイアグラムを生成する際に、CSS スタイルの使用も可能にするため、悪意のリンクを埋め込む攻撃ベクターを生み出すことになる。

このケースの攻撃者は、Copilot の組み込み検索ツールを使用して被害者の最近のメールを取得する。そのリストに対して、AI は 16 進数でエンコードされた単一の文字列に変換し、Mermaid レンダラーがエラーを出さないように 30 文字の行に分割する。

最後に、AI は 16 進数データをクリック可能な “ログイン” ノードに挿入した。ノードの CSS スタイルは、プライベート Burp Collaborator サーバーを指すハイパーリンクを定義している。そのコードの概要は次である。


graph LR

    A[Malicious Document] -->|User asks to summarize| B[Indirect Prompt Injection]

    B --> C[Fetch & Encode Emails]

    C --> D[Generate Fake Login Button]

    D -->|User clicks| E[Exfiltrate Data]

このボタンをクリックすると、隠し iframe が表示され、攻撃者のサーバからの HTTP レスポンスが短時間表示されてから消えるため、このトリックの信憑性は高まる。攻撃者はレスポンスの内容を Microsoft 365 のログイン画面の模擬画像に置き換え、概要を見るためにはログインが必要だとユーザーに思わせる。

この間接プロンプト・インジェクションは、攻撃者がドキュメントやメールなどの外部コンテンツに命令を埋め込むことで発生する。そのコンテンツを AI が処理すると、隠されたコマンドが実行され、攻撃者は意図した動作を上書きできる。

攻撃者がモデル自体を操作する直接インジェクションとは異なり、間接インジェクションは、AI から見て信頼できる無害なデータ・ソースを悪用する点に特徴がある。

攻撃者は命令を隠すために、Excel シートの白フォントで書き込まれたテキストを使用する。最初のページには含まれるのは、Copilot に対してログイン・プロンプトに集中するよう指示するネストされた命令である、2つ目の隠しページでは、Copilot に対し、メールを取得してエンコードし、悪意の図をレンダリングするよう指示している。

責任ある情報開示を受けた Microsoft は、Copilot に対してパッチを適用し、Mermaid 図内のハイパーリンクなどのインタラクティブ要素を無効化した。それにより、AI 生成の図にクリック可能なリンクが含まれなくなり、情報流出経路が遮断された。

パッチが適用されるまでの間、ユーザーにとって必要なことは、Copilot 統合を更新し、信頼できないドキュメントの要約を行わないことだ。