悪意のあるMCPサーバーがCursorの組み込みブラウザを乗っ取る可能性

新たな概念実証攻撃により、悪意のあるModel Context ProtocolサーバーがCursorのブラウザにJavaScriptを注入し、IDEの権限を利用してシステムタスクを実行できる可能性が示されました。

AIエージェントやコーディングコパイロットは、開発者のコーディング方法や内容を大きく変えています。しかし同時に、開発者マシンの攻撃対象領域も急速に拡大しています。

最新の例として、セキュリティ研究者は、人気のAI搭載コードエディタCursorの組み込みブラウザ機能に、悪意のあるModel Context Protocol(MCP)サーバーが悪質なコードを注入できることを示しました。

「私たちは、単一の悪意あるMCPサーバーがCursorの内部ブラウザ内のログインページを攻撃者が制御するページに置き換え、資格情報を収集してリモートの攻撃者に送信できることを実証しました」とAIサイバーセキュリティ企業Knostic.aiの研究者は、新しい研究でCSOに共有しました。「また、同じ機能により攻撃者が被害者のワークステーションを完全に侵害できることも示しています。」

もともとAnthropicによって、大規模言語モデル(LLM)と外部データソースやアプリケーション間の通信を容易にし、ワークフローのコンテキストを向上させるために開発されたMCPは、外部ツールを活用してタスクを自動化するAIエージェントの開発における重要なコンポーネントとなっています。

このプロトコルはクライアント・サーバーアーキテクチャを使用しており、アプリケーションがMCPサーバーを通じてLLMに機能を公開し、AIエージェントやアプリケーションがMCPクライアントを通じてそれらのサービスに接続します。MicrosoftのVisual Studio Codeや、CursorやWindsurfのようなそれをベースにしたIDEは、MCPサーバーとの統合をネイティブでサポートしています。

セキュリティ強化のため、ほとんどのIDEベンダーは審査済みのMCPサーバーをリポジトリで管理していますが、IDEユーザーはカスタムサーバーを手動でデプロイすることもできます。こうしたサーバーはインターネット上、特にGitHubなどで広く見つかります。今年初め、研究者はパブリックなGitHubリポジトリで数百のMCPサーバーが危険な設定ミス(信頼できないネットワークへのデフォルト公開やOSコマンドインジェクション経路など)を含んでいることを発見しました。

Cursorやその他VS CodeベースのIDEへの攻撃

Cursorは本質的にVS Codeのフォークであり、AI支援コーディングツールにするためのコードが追加されています。一方、VS Codeは拡張機能を通じてAI機能を得ています。CursorへのMCP攻撃を開発したKnosticの研究者Dor Munisによると、VS Codeは自身のファイルの整合性チェックを行いますが、Cursorは行いません。そのため、Cursorのコードが改変されてもユーザーに警告が表示されません。

VS Code、そして拡張的にCursorや他のVS Codeフォークは、Node.jsとChromeのBlinkブラウザエンジンを用いたクロスプラットフォームアプリケーション開発フレームワークであるElectron上に構築されています。このため、これらのアプリケーションはJavaScriptインタプリタを使用しています。IDEとして、ファイルシステムへのアクセスやタスク実行のための高い権限も持っています。

Knosticの研究者は最近、悪意のある拡張機能を通じてCursorに対して実装された概念実証攻撃を公開しました。これは、実行中のIDEに悪意のあるJavaScriptを注入してアクションを実行し、ユーザーインターフェースを操作するものでした。悪意のある拡張機能は、VSCode MarketplaceやOpenVSXレジストリ(Cursorも利用)でも発見されており、開発者マシンから資格情報を収集する自己増殖型ワームも含まれています。

Knosticが新たに明らかにした攻撃は概念的には類似していますが、悪意のあるMCPサーバー経由で配信されることで、拡張機能以外にも攻撃対象領域が広がります。

「MCPサーバーは、セキュリティの観点からVS Code拡張機能と全く同じように扱うべきです」とMunis氏は述べています。なぜなら、MCPサーバーは基本的に自分のコンピュータで実行するためにダウンロードされ、使用するIDEの権限を引き継ぐからです。

Munis氏の概念実証攻撃では、MCPサーバーがCursorが最近追加した組み込みブラウザにJavaScriptコードを注入できることを示しています。これにより、開発者はアプリケーションコードの変更を視覚的にテストでき、CursorのAIエージェントがブラウジングを必要とするタスクを自動的に実行できます。この手法を用いて、Munis氏はブラウザで表示中のページをログインプロンプト(フィッシングのようなシナリオ)に置き換えましたが、URLは変わりません。つまり、注入されたコードによる変更はリアルタイムで発生します。

もちろん、このような攻撃の影響は、被害者がブラウザで何をしているかによって異なります。開発者は作業中のウェブアプリから機密データを表示している場合もあれば、サービスにログインしている場合もあります。内部ブラウザはセッションの認証クッキーを保存するため、それらも標的になる可能性がある点に注意が必要です。

この攻撃は、MCPサーバー経由でのJavaScriptコード注入が成功することを証明するために開発されましたが、拡張機能攻撃と同様に、Cursor IDE内で他の悪意のあるアクションを実行するように拡張することも可能です。

防御策

組織は、ポリシーとアクセス制御の両面から、開発者が使用するIDE拡張機能やMCPサーバーを確認・管理する必要があります。これは、npmやPyPIなどのパッケージレジストリからアプリケーション依存関係を審査して、開発者マシンの侵害やコードへの脆弱性の継承を防ぐのと同じように行うべきです。

攻撃者はVS Code拡張機能を攻撃経路として開発者を狙うケースが増えており、MCPサーバーの悪用も時間の問題でしょう。

「プロジェクトのGitHubリポジトリを探してコードを確認してください」とKnosticチームは助言しています。「これはあなたのコンピュータにインストールして何でもできるプログラムです。その信頼性に疑いがある場合は、絶対に使用しないでください。」

エージェントがIDE内で人間の承認なしに自動的にタスクを実行できる自動実行モード(いわゆるYOLOモード)の使用も避けるべきです。

「何かを盲目的に有効化しないでください。特にMCP機能は注意が必要です」とチームは警告しています。「AIエージェントが生成したものがすべて期待通りだと決めつけないでください。埋め込みブラウザでアクションを実行する前に、コードをよく読んでください。」

MCPのドキュメントでも、Cursor自身が開発者に次のように警告しています。

  • MCPサーバーの出所を確認し、信頼できる開発者やリポジトリからのみインストールする
  • サーバーがアクセスする予定のデータやAPIを確認する
  • 権限を制限したAPIキーを使用する
  • 重要な統合についてはサーバーのコードを監査する

翻訳元: https://www.csoonline.com/article/4089046/rogue-mcp-servers-can-take-over-cursors-built-in-browser.html

ソース: csoonline.com