🦠

MCPに潜むリスク:「致命的な三要素

に公開

以下のmizchiさんのポストを見ました。
記事を読んでもピンとこなかったので、DeepResearchにかけて、理解を進めたので記事にまとめておく。

https://x.com/mizchi/status/1936004228700684444

先に結論

AIエージェント(MCPを含む)が、以下の3つの要素を持つと、セキュリティの重大な脆弱性が生じると言われている。

  1. プライベートデータへのアクセス:企業内部の機密情報へのアクセス
  2. 信頼できないコンテンツへの露出:悪意ある攻撃者が制御できるテキストや画像がAIに利用可能になる状態
  3. 外部との通信能力:データを盗み出すために使用できる通信手段

これを 「致命的な三要素」 と呼び、JiraのMCPが当てはまってしまうことが上の記事で書かれていること。
※実際に、攻撃可能かを検証し、ハック可能だったことが元元記事では、語られている

自分の感想

  • Jiraプロジェクトを一人、もしくは信頼できる少数と共有する場合は問題なさそうだと感じた
  • 一方で、会社全体でJiraプロジェクトを共有している場合は、注意が必要だと感じた
  • 多くの人が利用していると、チケットの量が膨大になり、全てを確認することが不可能であるし、悪意を持った操作が行われる可能性が上がる

外伝

  • JiraのMCPを使ってみたが、とても便利だったのでおすすめです
  • チケット作成時のポチポチが無くなり、自然言語でタスク作成をお願いできるので、とても楽

本題

Simon Willisonの「致命的な三要素」

Simon Willisonは、AIエージェントが以下の3つの要素を持つと、セキュリティ上の重大な脆弱性が生じると警告している

1. プライベートデータへのアクセス:

  • AIツールの主要な目的の一つ

2. 信頼できないコンテンツへの露出:

  • 悪意ある攻撃者が制御できるテキストや画像がAIに利用可能になる状態

3. 外部との通信能力:

  • データを盗み出すために使用できる通信手段

これら3つの要素が組み合わさると、攻撃者は簡単にAIを騙してプライベートデータを盗み出すことができるようになります

Jira MCPが持つ「致命的な三要素」とは

致命的な三要素をJiraに当てはめると以下のようになる。

1. プライベートデータへのアクセス:

  • Jiraはプロジェクト管理ツールとして、企業の内部情報、プロジェクト詳細、ユーザー情報など多くのプライベートデータを保持している
  • Jira MCPサーバーは、プライベートデータにアクセスして処理するように設計されており、「プライベートデータへのアクセス」という要素を明確に満たしている

2. 信頼できないコンテンツへの露出:

  • Jiraサービス管理は、外部ユーザーがサポートチケットを提出できる機能を提供している
  • 外部から提出されたチケットやコメントには、悪意のあるプロンプトインジェクションペイロードが含まれる可能性がある
  • 上記の外部入力は、MCPに処理されるときに「信頼できないコンテンツへの露出」という要素を満たす

3. 外部との通信能力:

  • Jiraは、チケットの返信、コメント、ステータス更新などを通じて外部ユーザーと通信する機能を持っている
  • Jira MCPは、AIアクションの結果を外部ユーザーに見えるチケットに書き込むことができ、これが「外部との通信能力」という要素を満たす

実際の攻撃の流れ:「Living off AI」

  1. 攻撃者(外部ユーザーとして)が悪意のあるサポートチケットを提出する
  2. 内部ユーザー(テナントにリンクされている)がMCP接続のAIアクションを呼び出す
  3. 悪意のあるサポートチケット内のプロンプトインジェクションペイロードが内部権限で実行される
  4. データが攻撃者のチケットに漏洩するか、内部システム内で変更される

上記の攻撃は、Living off AI 攻撃と呼ばれ、プロンプト分離やコンテキスト制御なしに信頼できない入力を実行するAI環境では、このリスクにさらされる

「まあそうなるわな」という感想が生まれる理由

1. プロンプトインジェクション攻撃の既知の問題

  • プロンプトインジェクション攻撃は、LLMを使用するシステムでは既知の問題であり、多くの専門家がこの脆弱性について警告してきた
  • Copilot、GitHubの公式MCPサーバー、GitLabのDuo Chatbotなど、多くの本番システムでこの種の攻撃が報告されている

2. AIエージェントの設計上の問題

  • LLMは、コンテンツ内の指示に従うという便利さがある一方で、オペレーターからの指示だけでなく、他のソースからの指示にも従ってしまう
  • LLMは、指示の重要性を信頼性高く区別することができない

3. MCPの設計上の欠陥

  • MCPは、異なるソースからのツールを組み合わせることを奨励している
  • これらのツールの多くはプライベートデータへのアクセスを提供し、同時に悪意ある指示をホストする可能性のある場所へのアクセスも提供してしまう

4. セキュリティ対策の不足

  • 現在、この種の攻撃を100%確実に防ぐ方法はまだ見つかっていない
  • 多くのガードレール製品を販売されており、「攻撃の95%を捕捉する」などと主張されているが、Webアプリケーションセキュリティでは95%は不合格である

5. 「Wild West」状態のAIセキュリティ

  • Andrej Karpathyは、現在のAIセキュリティ状況を「初期コンピューティングの未開の西部」と表現している
  • コンピュータウイルス(現在はWebデータ/ツールに隠れた悪意あるプロンプト)があり、十分に発達した防御がない状態だ

参考

Discussion