EN

NRIセキュア ブログ

実例で読み解くAIエージェントの脆弱性|便利さの裏に潜む危機とは?

目次

    実例分析|現実の脆弱性から見える「今そこにある危機」

    前回まではAIエージェントへの攻撃手法について解説をしてきましたが、これまで見てきたAIエージェントへの攻撃は、決して理論上の話ではありません。2025年現在、実際のプロダクトで次々と発見される脆弱性が、その現実味を証明しています。

     

    本稿では、実際に発見された3つの重大な脆弱性を詳しく分析することで、私たちが日常的に使用しているツールに、いかに多くの「見えない穴」が存在するかを明らかにします。

    GitHub MCP脆弱性――17,000スターの人気ツールに潜む問題

    2025年5月、セキュリティ研究機関であるInvariant Labsが、GitHub上で17,000以上のスターを獲得している人気の「GitHub MCP Server」(https://github.com/github/github-mcp-server)というMCPサーバに、重大な脆弱性が存在することを公表しました。このMCPサーバはAIエージェント(MCPクライアント)がGitHub API を通じてリポジトリの操作を行い、Issueやファイルの閲覧・編集、Pull Requestの作成などを可能にします。

    プライベートリポジトリが丸見えに

    この脆弱性の仕組みはシンプルです。攻撃者は、以下の手順でユーザーのプライベートリポジトリにアクセスできてしまいます。

    1. 標的のパブリックリポジトリに悪意あるIssueを作成
      攻撃者は、被害者が管理するパブリックリポジトリに、一見無害に見えるIssueを投稿します。しかし、その中には悪意のあるプロンプトインジェクションが含まれています。(図参照)
    2. AIエージェントが罠にかかる
      ユーザーがClaude DesktopやCursorなどのAIツールで「最近のIssueを確認して」と指示すると、エージェントは自動的にGitHub MCPを使用してIssueを取得します。
    3. プライベートデータの流出
      悪意あるプロンプトに誘導されたAIエージェントは、ユーザーのプライベートリポジトリにアクセスし、機密コードや認証情報を含むデータを攻撃者のパブリックリポジトリにプルリクエストとして投稿してしまいます。
    図 悪意のあるプロンプトを含むIssue悪意のあるプロンプトを含むIssue

    (出典) Marco Milanta, Luca Beurer-Kellner, “GitHub MCP Exploited: Accessing private repositories via MCP”, https://invariantlabs.ai/blog/mcp-github-vulnerability

     

    この攻撃は完全に正規のツールを使用して実行され、AIエージェントが外部データ(GitHub Issue)を「信頼できる指示」として解釈してしまうアーキテクチャの問題に起因しています。企業の機密コード、APIキー、顧客データベースのスキーマ――これらすべてが、一つの悪意あるIssueによって流出する可能性があったのです。

    WhatsApp MCP脆弱性――メッセージを盗み出す「3つの罠」

    2025年4月、Invariant LabsはAIエージェントにまつわる別の脆弱性を実証しました。今度の標的は、世界で20億人以上が使用するWhatsAppというメッセージングアプリです。

    攻撃の前提条件

    この攻撃が成立するには、2つの前提条件があります。

    1. ユーザーが正規のWhatsApp MCPを使用している
      AIエージェント(MCPクライアント)がWhatsAppメッセージを管理できるよう、WhatsApp MCPサーバ(https://github.com/lharries/whatsapp-mcp)に接続している状態
      ※このMCPツールは個人開発のものですが、ここでの「正規」とは、WhatsApp社の公式ツールという意味ではなく、「攻撃者に悪用されることを想定していない、通常の用途で開発されたMCPツール」を指します。
    2. 攻撃者が管理する悪意あるMCPサーバも同時に接続されている
      ユーザーが「便利なツール」と思って追加したMCPサーバが、実は攻撃者によって掌握されている

    つまり、ユーザーのAIエージェントが複数のMCPサーバ(正規のWhatsApp MCPと悪意のあるMCP)に同時接続している状況で、この攻撃は実行されます。

    WhatsAppメッセージ履歴の漏洩

    WhatsAppは強固なエンドツーエンド暗号化で知られています。しかし、この攻撃は暗号化を破るのではなく、メッセージの送信先を操作することでユーザーのメッセージ履歴を盗み出すことを可能にしています。その際、攻撃者は次に示す3つの巧妙なテクニックを組み合わせて実行します。

    攻撃テクニック1:ラグプル(Rug Pull)

    攻撃の第一段階は「ラグプル」と呼ばれる手法です。この用語は「敷物(ラグ)を急に引き抜く」という意味で、最初は安全に見えたものが突然悪意あるものに変貌する詐欺的手法を指します。

     

    攻撃者は、まず雑学を提供するような一見無害に見えるMCPツールを提供します。ユーザーがインストール時に見る画面では、完全に正当で有益なツールに見えるよう偽装されています。

     

    しかし、これが罠なのです。図に示すように、次の起動時にはツールの定義が密かに書き換えられ、WhatsAppメッセージの転送に関する悪意ある指示が追加されます。このような指示はMCPツール記述の説明欄に埋め込まれ、MCPクライアントがツールの情報を取得する際にLLMによって解釈されます。ユーザーは既に承認済みのため、MCPクライアントの実装によっては、この変更について再確認されない場合があります。その場合、この攻撃が成立してしまうのです。

    図 ラグプルによるツール定義の変更02

    攻撃テクニック2:ツールシャドウイング (Tool Shadowing)

    ラグプルで侵入に成功した後、攻撃者は「ツールシャドウイング」を実行します。これは、まるで人の後をつける「影」のように、正規のツールが動作するたびに悪意あるツールが裏でその動作に干渉していく攻撃手法です。

     

    悪意あるMCPサーバは、同じシステムに接続された信頼できるWhatsApp MCPの動作に干渉し、メッセージの送信先を攻撃者の番号に密かに変更してしまいます。さらに、チャット履歴全体を攻撃者に転送するよう指示を追加します。(図参照)

     

    もし最初からこのような悪意ある指示が見えていたら、ユーザーは確実に警戒したでしょう。しかし、ラグプルによって後から追加されたため、ユーザーには気づかれません。

    図 ツールシャドウイングによる正規ツールへの干渉ツールシャドウイングによる正規ツールへの干渉

    攻撃テクニック3:実行コマンドの隠蔽

    ここまでの攻撃をより確実なものにするために、攻撃者はUIを悪用した隠蔽技術を用います。

    図に示した確認ダイアログに表示されるメッセージは一見無害に見えますが、実際には大量の空白文字により、悪意あるコマンドが画面の右側に押し出されています。水平スクロールしない限り見えないため、ユーザーは盗み出されたチャット履歴全体が含まれていることに気づかずツールの実行を承認してしまいます。

    執筆時では、Cursorなどの画面はスクロールバーが非表示になっていることが多く、この隠蔽技術が特に効果的に機能します。

    図 UIを悪用した流出データの隠蔽UIを悪用した流出データの隠蔽

    (出典) Luca Beurer-Kellner, Marc Fischer, “WhatsApp MCP Exploited: Exfiltrating your message history via MCP”, https://invariantlabs.ai/blog/whatsapp-mcp-exploited

     

    研究者たちは、これら3つのテクニックを組み合わせることで、ユーザーの全WhatsAppチャット履歴と連絡先リストを抜き取ることに成功しました。また、この攻撃は悪意あるMCPサーバ経由だけでなく、攻撃者が送った1通のWhatsAppメッセージでもインジェクションが実行可能と言われています。そのため、攻撃者が特定のユーザーや時間帯のみを狙った精密な攻撃をすることも可能になります。

    ブロックチェーンプラットフォームElizaOSの教訓――2500万ドルが危険に晒される

    2025年5月、プリンストン大学とSentient Foundationの研究チームが、Web3エコシステムで広く使用されているElizaOSフレームワークの深刻な脆弱性を発表しました。このプラットフォームで管理される資産は、合計で2500万ドル以上に上ります。

    メモリポイズニング

    ElizaOSは、AIエージェントが自律的に仮想通貨取引を行うことを可能にするフレームワークです。しかし、その自律性が裏目に出ました。

    この攻撃の特徴は、システムログに偽装した悪意ある指示が長期記憶に保存されることです。この攻撃を「メモリポイズニング攻撃」と呼びます。この攻撃の流れを図に示します。

     

    攻撃者はDiscord上で、一見無害な質問の中にシステムの管理者ログのような形式で悪意ある指示を埋め込みます。ElizaOSは表面上、通常の質問にだけ答えているように見えますが、会話履歴全体(偽装ログを含む)が長期記憶に保存されます。

     

    システムは「ADMIN」という権威的な名前に反応し、この指示を重要なものとして記憶してしまいます。後日、別のユーザーがX(旧Twitter)で正当な送金依頼をすると、汚染された記憶が呼び出され、「ADMIN」の指示に従って攻撃者のアドレスに送金されてしまうのです。

    図 メモリポイズニング攻撃による暗号通貨(Ethereum)不正送金メモリポイズニング攻撃による暗号通貨(Ethereum)不正送金

    (参照)Atharv Singh Patlan, et al., ”AI Agents in Cryptoland: Practical Attacks and No Silver Bullet” https://arxiv.org/html/2503.16248v1

    ELIZAOS, https://www.elizaos.ai/

    ブロックチェーンの”不可逆性”の悪用

    従来のシステムなら、不正送金は後から取り消せる場合があります。しかし、ブロックチェーン上の取引は不可逆のため、送られた仮想通貨を取り戻すことはできません。また、ブロックチェーンは匿名性が高いという性質を持つため、このような犯罪行為に利用されやすいという側面もあります。

     

    研究チームは、SepoliaテストネットだけでなくEthereumメインネットでも攻撃を成功させ、実際の資金移動を確認しました。もしこれが大規模に悪用されていたら、多額の被害が出ていた可能性があります。

    まとめ:「便利さ」の代償

    これらの実例から見えてくるのは、AIエージェントがもたらす「便利さ」には、高い代償が伴うということです。

     

    GitHub MCPは、開発者の生産性を大きく向上させましたが、同時にプライベートコードなどの知的財産を含む機微情報を流出するリスクを生み出しました。

    WhatsApp MCPは、メッセージ管理を自動化しましたが、プライバシー性の高い会話を攻撃者に送ってしまう可能性を作り出しました。

    ElizaOSは、仮想通貨取引を民主化しましたが、その自律性が逆に悪用され、取り返しのつかない金銭的損失をもたらす危険性を内包していました。

     

    これらはすべて、正規の機能が悪用された結果です。バグではなく、設計思想そのものに潜む脆弱性。それこそが、AIエージェントの大きな課題なのです。

    果たして、これらの攻撃への対策は可能なのでしょうか?

     

    次回は、AIエージェントのセキュリティを確保するための具体的な対策と、私たちが取るべき行動について探っていきます。「見えない脅威」を「見える化」し、安全なAIエージェント活用への道筋を示します。