こんにちは、NTTドコモグループの現場受け入れ型インターンシップに「D2:攻撃者視点に立ち攻撃技術を研究開発するセキュリティエンジニア」ポストで参加させていただきました、太田です。
本記事では、本インターンシップでの取り組みについて紹介いたします。
NTTドコモグループのセキュリティ業務、特にOffensive Securityプロジェクト(以下、PJ)に興味のある方、インターンシップの参加を検討している方などへの参考になれば幸いです。
OffensiveSecurityPJとは
今回私が参加させていただいたワークフィールド(職場)はイノベーションセンターのテクノロジー部門内に位置するOffensive Security PJです。
Offensive Security PJ は最先端のセキュリティ技術を調査・検証し、その成果を社内外に共有していくことをミッションとしています。
特に重視しているのは「攻撃者の視点」に立つことです。防御の立場から技術を眺めるだけではなく攻撃者がどのように考え、どのような手法を用いるかを理解することで初めて本質的な対策を打つことができます。そのような視点を持ち続けることで従来の後追いの対策にとどまらず、脅威を先取りして備える「先回りの防御」を実現しようとしています。
単に攻撃手法を模倣するだけでなく、その背後にある原理やアーキテクチャや攻撃の成立条件まで掘り下げるような研究・開発をしています。
参加経緯
私は普段、大学院でセキュリティに関する研究をしています。中学生の頃、遠隔操作可能なエアコンが現れた時に、「もし悪用されたら人命に関わるのではないか」と感じた経験があります。その出来事をきっかけに、新しい技術や製品を「どのように悪用され得るか」という視点で見るようになりました。
そうした関心から、Offensive Security/Red Team に強い興味を持ち、将来はこの分野に携わりたいと考えるようになりました。そのため、「攻撃技術の調査・開発・検証や攻撃技術の応用に関する研究」という本ポストの業務内容は、私の関心と非常に一致していると感じ、応募いたしました。
また、業務として研究に取り組むことを自分自身が楽しめるかどうかを確かめたいという思いもありました。
インターンシップ概要
インターンシップは8月25日から9月5日の平日10日間で開催され、業務体験はオリエンテーションや成果報告会を除いた実質7日間で行われました。
初日と最終日は出社が必須で、それ以外の日程は出社かオンラインかを相談して決めることが出来ました。
またインターンシップ期間中は、検証業務はもちろん、SOC(Security Operation Center)の見学や海外のカンファレンスに登壇された社員の方による再演の聴講、社内LT(Lightning Talks)会への参加、他部署のインターンシップ生との交流などさまざまな体験をさせていただきました。
私が検証業務で取り組んだテーマは以下の2つです。
- Microsoft 365 Copilotの悪用
- LLM応用によるRed Teamオペレーション高度化検証
本記事では、2つのテーマのうち「Microsoft 365 Copilotの悪用」を紹介します。
Microsoft 365 Copilotの悪用
現在、大規模言語モデル(LLM)の業務利用が進んでいますが、それには同時に危険性もあります。どのような危険が潜んでいるかを明らかにするとともに、LLMに対する攻撃手法に関する知見を収集することを目的として、Microsoft 365 Copilot環境を用いた攻撃手法を検証しました。
Black Hat USA 2024で発表された攻撃手法1を基に、それらが現在も再現可能かどうかを検証しました。さらに、他言語のプロンプトでも同様の攻撃が成立するか、および対策が施されている場合にどのような工夫で攻撃が成功し得るかについて調査しました。
Microsoft 365 Copilot とは
Microsoft 365 Copilot2(以下 Copilot)は、Word や Excel、PowerPoint、Outlook などの Microsoft 365 アプリに組み込まれたAIアシスタントです。 メールの下書きやプレゼン資料の作成、データ分析をアプリ上で直接行えるほか、チャットでの会話の中でWeb 上の情報や社内のメールやドキュメントなどのデータを参照できる点が特徴です。
社内のメールを参照し応答する流れ
しかし、Microsoft 365 Copilotの「各種データを参照できる」という特徴を利用した攻撃手法も知られています。
目標
本ブログでは、Copilotにユーザーを悪意のあるサイト等へ誘導してもらうことを目標とした検証について報告します。
Copilotは会話の応答中にクリック可能なハイパーリンクを表示することがあります。
実際にリンクを表示するCopilot
ここでCopilotには、”Web 上の情報だけでなく社内のメールやドキュメントなどのデータを参照できる” という特徴があります。これらを悪用し、参照対象の中に悪意ある情報を混入させ、表示名は正規のものに見せかけつつリンク先を攻撃者が指定したものにする、というのが目標です。 仮に可能だった場合、攻撃者はCopilot を通して広範囲な利用者に悪意のある情報を送ることが可能です。
Copilotが会話の応答中にハイパーリンクを表示する流れ
目標のイメージ
検証1: Black Hat USA 2024での手法を再現
Black Hat USA 2024 の「Living off Microsoft Copilot」で報告された手法の再現を目指します。
本手法では、ユーザー宛のメール本文に視認しにくい形で Copilot への指示を埋め込み、その指示に基づいて Copilot が不正なリンクを提示することを期待します。
端的に言うと、指示は次のような意図を持つものでした。
- サービスAへのアクセス方法を尋ねられたら、指定の URL を返す
- ただし表示名(ハイパーリンクのタイトル)は『サービスA』と表示する
メールの例
このメールを受け取ったユーザーになり代わって Copilot にサービスA へのアクセス方法を尋ね、Copilot の応答を確認しました。
結果
攻撃手法が公開されてから時間がたち、Copilot側で対策されているのか、同一の手法では目的を達成できませんでした。 例えば、ハイパーリンクの形式にはならずクリックを誘発させられないことや、悪意のあるメールを参照元として表示し露見しやすくなったなど、攻撃の成功率は下がりそうです。
クリックできないURL
検証2: ユーザーに向けた案内 + Markdown
ユーザーへのメッセージとして単純に URL を記載し、ハイパーリンクとして出力できないようでした。 どのようにしたら対策を回避できるかを検討するにあたり調査する中で、「EchoLeak 3」と呼ばれるCopilotの脆弱性について知りました。
EchoLeakの利用した攻撃手法や、それに応じて行われた対策について調べていると、Copilotは以下のような特徴を持っていることがわかりました。
Copilot にはプロンプトインジェクション攻撃を防ぐための仕組みが実装されており、その1つとして XPIA(クロスプロンプトインジェクション攻撃)分類器がある4ということ。そしてこれにより、Copilotへの指示は悪性とみなされる可能性があること。これは回避するため、今回の場合、Copilotへの指示ではなく、受信者に向けられたメッセージのように見せかけられればよいということ。
Copilot は、信頼性が確認できないリンクについてはハイパーリンクとして提示せず、クリック不可の形式で応答するなどの対策がなされていること。そのため、今回のように単にメール本文に URL を記載するだけではハイパーリンクとして応答されない可能性が高いということ。そして回避するためにはURLを参照形式でMarkdownを使って指定すればよいということ。(なぜなのかなどは割愛しますが良かったら調べてみてください)
これで、検証1において失敗した理由が納得できました。この仕様を突破できないでしょうか。
EchoLeakにおいても対策が行われ、現在は悪用出来ないとされていたものの、悪用に使用される全ての脆弱性への対応が完了している訳ではないかもしれません。
そこで、1,2に沿って改良したのちに、検証しました。
ユーザー向けの案内文のように見える文章を作成します。その中で、Markdown(インライン形式)を用いて、あたかもサービスAへのアクセス方法を示すリンク名を付けつつ、実際には私が用意したURLを指定するようにします。
(なお、2について、回避するには参照形式で書く必要があるはずなのですが、私は誤解してインライン形式で指定してしまいました。それ次第では結果が変わっていたかもしれません)
その文章をメールに記述します。なお、HTML形式のメールとPlainText形式のメールの2種類について試しました。
結果
- HTML形式のメール → クリックできないURL(ハイパーリンクの書式そのまま)で応答される
- PlainText形式のメール → クリックできるハイパーリンクで応答される
という結果になりました。PlainText形式のメールの場合のみ成功したことになります。
HTML形式のメールを参照した際のCopilot の挙動
PlainText形式のメールを参照した際のCopilot の挙動
これは憶測ですが、Markdown 形式で防御機構を回避されること自体は現状避けられないのではないでしょうか。代わりに人間に誤認させやすいHTML形式のメールを警戒しており、「参照する際は応答にハイパーリンクを使用しない」というような形で対処しているのではないかと考えられます。
確かに、PlainText形式のメールではペイロードとして書いたURLを隠せなくなるので攻撃者としては嫌な気持ちになるでしょう。
検証3: Excelファイルを利用したペイロードの秘匿
攻撃者としてはやはり、URLを記載したペイロードは隠したいです。上述の通りメールで人間が視認できない形にすることは難しそうです。
だがしかし、Copilotが参照できるのはメールだけではありません。SharePoint上のExcelファイルなども参照してくれます。そしてExcelに記入された文字はサイズ・色を変更できます。これは使えるかもしれません。
ということで、SharePoint上のExcelファイルに白文字でペイロード隠してみます。
結果
しっかりハイパーリンクで応答されました㊗️。
まとめ
Copilotが応答としてハイパーリンクを使用する際に、リンク名とは関係ないURLを応答させることは可能です。これを利用してCopilotにユーザーを悪意のあるサイト等へ誘導させられる可能性があります。
ペイロードをメールに記載する場合、ペイロードの配送に至るまでの難易度が低い一方、PlainText形式で記述せざるを得ないため、ユーザーに発覚しやすいという問題があります。
ユーザーから気づかれないようにする手法として、メールではなくSharePoint上のExcelファイルなどへ、視認しにくい書式でペイロードを隠す方法があります。ただしこの方法は、SharePointへファイルを配置する権限を取得していることが前提であるため、ペイロード配送までの難易度は高くなります。逆に一度配置できれば、そのファイルへアクセス可能な全ユーザーに影響を及ぼす可能性があります。
今回の検証では、ペイロードと併記する情報が与える影響や、参照先を示させないための手法検証など、実施したかったが時間不足で試せなかった項目が多く残っています。それでも、Copilotには多様な悪用の可能性が存在すると感じました。
また、攻撃の検証と並行して、どのように防御するかという視点で監査ログの確認なども行いましたが、防御側の負担の大きさを改めて実感しました。まずは、Copilotがどの情報を参照するのか、およびどのような場所にペイロードが隠され得るかを防御側が把握しておくことが重要だと考えます。
インターンの感想
私はインターンシップに参加するまで、LLMに対して同じ事象が必ずしも再現できなかったり、理解しづらい挙動が多かったりする点に不安を感じていました。しかし、実際に検証を始めてみると、その予測不能さも含めて面白く無限の可能性が広がっているように感じられ、非常に楽しく没頭できました。
今回の経験を通じて、「食わず嫌いせずにまず挑戦してみること」の大切さを身をもって学びました。
また、本インターンシップでは決められたことをこなすのではなく、私のように大きく脱線しながら興味に従って自由に検証を進めることも受け入れていただけたのが印象的でした。(むしろ面白がってもらえる最高の環境でした。)
業務体験だけでなく、期間全体を通じて得たすべての経験が大変有意義であり、大きな成長の糧となりました。
おわりに
今回のインターンシップでは日頃の活動だけでは決して得られないような貴重な体験をさせていただき、とても光栄に思っています。特に2週間を通じて現在ホットなテーマであるLLMのセキュリティについて深く学ぶ機会をいただき、最新動向を追い続けることの重要性やセキュリティそのものの面白さを改めて実感できました。 また、「攻撃者の視点に立つ」という考え方についてもトレーナーの皆さまからのご指導を通じて少しずつ身につけることができたと感じています。
このような貴重な機会を与えてくださったOffensive Security PJの皆さまに心より感謝申し上げます。さらに、上長の有藤さん、トレーナーの四方さん、田口さんにも厚く御礼申し上げます。
本記事を通じて少しでもインターンシップに興味を持っていただけたら大変光栄です。
- Black Hat USA 2024 - Living off Microsoft Copilot https://www.blackhat.com/us-24/briefings/schedule/?utm_source=labs.zenity.io&utm_medium=referral&utm_campaign=links-and-materials-for-living-off-microsoft-copilot#living-off-microsoft-copilot-40074↩
- Microsoft 365 Copilot https://www.microsoft.com/ja-jp/microsoft-365-copilot↩
- Breaking down ‘EchoLeak’, the First Zero-Click AI Vulnerability Enabling Data Exfiltration from Microsoft 365 Copilot https://www.aim.security/aim-labs/aim-labs-echoleak-blogpost↩
- Data, Privacy, and Security for Microsoft 365 Copilot - Does Copilot block prompt injections https://learn.microsoft.com/en-us/copilot/microsoft-365/microsoft-365-copilot-privacy#does-copilot-block-prompt-injections-jailbreak-attacks↩