Abstract overhead

【AI時代の開発リスク】CursorのMCPディープリンクを悪用した「CursorJack」攻撃

Share with your network!

著者注: 本投稿は、2026年1月19日時点におけるプルーフポイント脅威リサーチの観測結果を、管理されたテスト環境に基づいてまとめたものです。プルーフポイントは、Cursor(Anysphere, Inc.が提供)との間に商業的、顧客、パートナー、またはベンダーとしての関係を有していません。Cursorは本レポートのレビューや承認を行っていません。本件については、Cursorの脆弱性報告チャネルを通じて通知済みですが、同社のポリシーに基づきスコープ外/該当なしとしてクローズされています。本調査結果は、ディープリンクを利用したインストールフローとソーシャルエンジニアリングに関連するリスクパターンとして提示されており、ベンダーの機能更新に伴い変化する可能性があります。設定や結果は、OS、ユーザー権限、エンタープライズ制御、製品バージョンによって異なる場合があるため、読者は多層的な対策を講じ、各ベンダーのガイダンスに従う必要があります。
 

概要 

Cursorは、Model Context Protocol(MCP)のディープリンクを実装しており、Cursor IDE内でMCPサーバーをインストールするための仕組みを提供しています。本ブログでは、特定の条件下においてコード実行を可能にしたり、悪意のあるリモートMCPサーバーのインストールを許してしまう可能性がある、CursorのMCPディープリンクを悪用する手法「CursorJack」について説明します。以下で説明する挙動は、記載されたテスト環境に特有のものであり、デフォルトでサイレントまたはゼロクリックによる悪用が可能であることを意味するものではありません。しかしながら、エージェント型AI環境を保護する必要性が急務であることを浮き彫りにしています。 
 

主なポイント 

  • 特定の構成において、cursor:// プロトコルハンドラーはソーシャルエンジニアリングによって悪用される可能性があります。
  • 当社のテストでは、1回のクリックと、その後のユーザーによるインストールプロンプトの承認により、任意のコマンド実行が発生する可能性がありました。
  • この手法は、commandパラメータを通じたローカルでのコード実行、またはURLパラメータを通じた悪意のあるリモートMCPサーバーのインストールのいずれにも悪用される可能性があります。
  • 当社が確認したデフォルトのUIフローでは、悪意のあるMCPインストール用ディープリンクと正当なものを視覚的に区別する手段は現時点で存在しません。
  • 開発者は、特権アカウントを保有している可能性や、認証情報、APIキー、ソースコード、その他の機密データを含む可能性があるため、特に価値の高い標的となり得ます。
  • 当社のPOCコードは、GitHubで公開しています。
     

Cursor MCPディープリンク 

ディープリンクとは、アプリ内の特定のページにユーザーを直接誘導するためのカスタムURLスキームです。Cursor IDEは、以下の構造でMCPサーバーを迅速にインストールするためのMCPディープリンクを実装しています。

cursor://anysphere.cursor-deeplink/mcp/install?name=<name>&config=<base64>

Figure 1

図1. ディープリンクスキーマ(出典:https://cursor.com/docs/context/mcp/install-links)
 

MCPサーバーの設定は、ディープリンクURL内でbase64エンコードされています。

Cursorがインストールされると、アプリケーションはcursor://プロトコルハンドラーをオペレーティングシステムに登録します。一度登録されると、cursor://リンクをクリックするとCursorが起動し、完全なURLが実行ファイルに渡されます。当社のテストでは、OSのURLハンドラー保護を変更したり、対話型プロンプトを回避したりすることは行っていません。

Figure 2

図2. Cursorプロトコルハンドラー

MCP.json  

mcp.jsonの設定フォーマットは、MCPサーバーをどのように起動または接続するかをクライアントが定義するための標準として普及しています。「mcpServers」オブジェクト内では、各サーバーのエントリがその設定を定義しており、command、arguments、環境変数、またはurlなどのフィールドが含まれます。

Figure 3

図3. mcp.json設定フォーマット

MCPサーバーは通常、設定内でコマンドと引数を指定します。例としてnpx、uvx、dockerなどがありますが、このキーは任意の有効なコマンドを渡すためにも使用できます。

Figure 4

図4. コマンドベースのMCPの例

一方で、MCPサーバーは設定内でURLを定義する場合もあり、これはリモートまたはローカルのMCPサーバーを指し示すことができ、APIと同様に機能します。

Figure 5

図5. URLベースのMCPの例

観測された悪用の前提条件(概要):(1)ユーザーが信頼できない/なりすましのソースからディープリンクをクリックすること、(2)ユーザーがインストールプロンプトを承認すること、(3)ローカル環境の条件により子プロセスの実行やリモートサーバーの追加が許可されていること(例:デフォルトポリシー、EDR/許可リスト、ユーザー権限など)。デフォルト構成において、サイレントな「ゼロクリック」経路は確認されていません。
 

Cursor MCPインストールプロセス  

Cursorは、MCPサーバーをインストール可能にするオンラインのMCPディレクトリを提供しています。

Figure 6

図6. Cursor MCPディレクトリ(出典:https://cursor.com/docs/context/mcp/directory)
 

インストールプロセス 

  1. ユーザーが(理想的には信頼できる)ソースからCursorのディープリンクをクリックします。
  2. ブラウザがCursor IDEを開くよう促します。
  3. Cursorは、MCPサーバー名およびパラメータを表示するインストールダイアログを表示します。
  4. ユーザーが「Install」をクリックして承認します。
  5. Cursorは、MCP設定を ~/.cursor/mcp.json に追加します。
  6. Cursorは、設定されたコマンドを実行します(OS/ユーザー権限およびローカルのセキュリティ制御に依存します)。

インストールプロセス中、ユーザーにはインストールダイアログ内で設定内容のプレビューが表示され、MCPサーバーがユーザーと同じ権限でコマンドを実行することが通知されます。

Figure 7

図7. サンプルMCPサーバーをインストールする際のインストールダイアログ

しかし、この警告は、MCPディレクトリからの正当なリンクであるか、悪意を持って作成されたディープリンクであるかに関わらず、すべてのディープリンクに対して同一です。この仕組みは、任意のローカルコード実行を引き起こしたり、ディープリンクを通じてユーザーを誘導し、悪意のあるリモートMCPサーバーをインストールさせるために悪用される可能性があります。結果は、環境、ユーザー権限、およびエンタープライズの制御によって異なります。
 

セキュリティ上の考慮事項 

MCPサーバーは、AI開発ツールに新たな攻撃ベクトルを生み出しています。ユーザーはAIの活用を推奨されており、多くの人がセキュリティへの影響を十分に理解しないまま、初めてコードの作成や実行を行っています。AIコーディング支援ツールの普及により承認プロンプトが一般化し、経験豊富な開発者であってもAI開発環境において承認操作に慣れてしまう傾向があります。

ユーザーがインストールプロンプトを承認すると、Cursorはユーザー権限でコマンドを実行します。MCP設定内のcommandフィールドは、設計どおりIDEによって直接実行されます。MCPサーバーに対応するIDEは、SSHキー、APIトークン、クラウド認証情報、ソースコード、本番システムへのアクセスなど、特権的なアクセスを持つ可能性のある開発者のワークステーションに導入されることが一般的です。EDR、許可リスト、OSポリシーなどの制御により、構成次第では悪用が制限またはブロックされる場合があります。

ディープリンクは任意の名前を使用できるため、「Azure DevOps」などの正規のMCPサーバーを装うことが可能であり、そのディープリンクが主張するベンダーから発信されたものであることを検証する仕組みは存在しません。ユーザーは承認前に発信元を確認し、パラメータを十分に確認する必要があります。
 

CursorJack:概念実証 

CursorJackは、MCPディープリンクがローカルでのコマンド実行や悪意のあるリモートMCPサーバーのインストールに悪用可能であることを示す概念実証です。この攻撃は、意図されたMCPインストールフローとソーシャルエンジニアリングを組み合わせて悪用します。

本概念実証では、Outlookのみでテストを実施し、cursor://のようなカスタムプロトコルハンドラーが、Outlook上でリンクがクリック可能として表示されない場合でも、ユーザーをフィッシングに誘導するために利用可能であることを示しています。他のメールサービスでは結果が異なる可能性があります。攻撃者は、ブラウザ、チャット、ドキュメント(PDFなど)を通じてディープリンクを配信することも可能です。

フィッシングページは、悪意のあるディープリンクへリダイレクトし、その中にはbase64でエンコードされた悪意のあるMCP設定が含まれています。ユーザーがMCPをインストールすると、その悪意のあるインストールコマンドが実行されます。
 

コマンド実行:Meterpreterリバースシェル 

フィッシングメールは被害者を悪意のあるランディングページへ誘導し、そこでMCPディープリンクが起動されます。このディープリンクは、mcp.json設定に悪意のあるコマンドを埋め込み、バッチスクリプトのダウンロードと実行を行います。このバッチスクリプトはステージャーとして機能し、攻撃者が管理するインフラからMetasploitのペイロードを取得します。このペイロードが実行されることで、ファイルシステムへのアクセス、認証情報の収集、さらには横展開の可能性を持つ完全なMeterpreterセッションが確立されます。

1. フィッシングリンクの配信。  
 
攻撃者は、メールクライアントで表示可能な細工されたHTTPリンクを送信します。 
 
Figure 8

図8. フィッシングメール。

2. クリックされると、フィッシングリンクはMCPインストール用ディープリンクへリダイレクトされます。これによりCursorプロトコルハンドラーが起動し、ユーザーに対してCursor IDE内でMCPのインストールを促します。

Figure 9

図9. Cursorディープリンクへ自動的に遷移するJavaScriptを含むランディングページ。

3. 悪意のあるMCP設定が承認され、batスクリプトのダウンロードがトリガーされます。 
 
Figure 10

図10. Cursorのインストールコマンド。

4. インストール時に、Cursorはcurlコマンドを実行し、攻撃者のサーバーからrun.batを取得します。 
 
Figure 11

図11. フィッシングページおよび攻撃者リソースをホストするCursorJack PoC。

5. run.batはステージングスクリプトであり、curlを使用してMetasploitペイロード(p.exe)をtempフォルダにダウンロードして実行します。  

Figure 12

図12. リモートペイロードを取得するrun.batスクリプトの内容。

6. ペイロードが実行され、Cursorプロセスとは独立してMetasploitペイロードが起動されます。

Figure 13

図13. Cursorの子プロセスとして実行されるcurl。

7. 

Figure 14

図14. Cursorとは独立して実行されるp.exe。

8. リバースシェルが接続され、Meterpreterが攻撃者のリスナーへの接続を確立します。

Figure 15

図15. 成功したMeterpreterセッション。

CommandとURLによる悪用の違い 

CursorのMCPはcommandまたはURLで設定でき、いずれの経路もディープリンクを通じて悪用される可能性があります。本POCではcommandキーを使用してペイロードを展開しましたが、攻撃者は代替手段として、ペイロードをディープリンク内に直接埋め込んだり、URLパラメータを用いたソーシャルエンジニアリングによってリモートMCPをインストールさせることも可能です。

Command 

CommandベースのMCPは、Cursorの権限で即座にコード実行を可能にし、IDEの再起動後も持続します。これは既存のコミュニティ報告(CVE-2025-54136)とも一致しており、Cursorの起動時にインストールコマンドが毎回実行されます。攻撃者はセッションの確立、ソフトウェアの展開、SSHキーやAPIトークン(mcp.json設定内に保存されているものを含む)などの認証情報の収集を行うことが可能です。

URL 

URLキーは別の攻撃ベクトルを可能にし、ユーザーをソーシャルエンジニアリングによって誘導し、悪意のあるリモートMCPサーバーをインストールさせることができます。ローカル実行に比べると影響は小さいものの、ツール汚染やサーバー間操作といったMCPベースの攻撃の足がかりを提供し、セキュリティ制御からの可視性も低くなる傾向があります。

配信手法と難読化の手口 

正規のパッケージインストールの模倣  

攻撃者は、npxやuvxといった開発者に馴染みのあるバイナリを使用し、一見正規の場所から悪意のあるコードを取得することで、ペイロード配信を偽装する可能性があります。この手法は、標準的なパッケージインストールのパターンに紛れ込むため、悪意のある活動が通常の処理のように見え、検知の機会を減少させます。

ステージング型と埋め込み型ペイロード  

悪意のあるMCPディープリンクは、リモートからのステージング、または直接埋め込みによってペイロードを配信する可能性があります。ステージング型のペイロードはローカルに残る痕跡が少ない一方で、C2の可用性に依存し、不審な外向き通信によって検知される可能性があります。一方、埋め込み型ペイロードは外部からの取得を回避でき、ディープリンクを変更せずにサーバー側で差し替えることが可能ですが、一度配布されるとペイロードは固定され、ディープリンクから完全に復元可能であるため、検知される可能性が高まります。いずれの手法も、厳格な許可リストやコンテンツ検査によって軽減することが可能です。

難読化の手法  

コマンドの難読化により、悪意のあるMCP設定を隠蔽でき、ユーザー依存の承認フローを悪用することが可能です。発見者によって報告された修正済みの脆弱性(CVE-2025-54133)では、以前はインストールダイアログからコマンド引数を隠すことが可能でした。攻撃者はエンコード技術や過度に長いコマンド文字列を使用して、有害な引数をプレビューウィンドウの外に押し出し、ユーザーによる確認を困難にする可能性があります。

対策 

MCPエコシステムには、追加のセキュリティツールやユーザーの注意に依存するのではなく、フレームワークのアーキテクチャ自体に組み込まれた根本的なセキュリティ改善が求められます。

ディープリンクの悪用に関しては、インストールプロセスにおいてcommandパラメータによる任意のコマンド実行に対処する必要があります。例えば、より細分化された権限モデルや、ホストOSから分離するコンテナ化アプローチなどが考えられます。

MCPサーバーに対する署名や検証済み発行元の仕組みを備えた信頼できるMCPエコシステムは、ブラウザ拡張機能やアプリのインストールストアに類似した形で、サーバーの真正性を確立することができます。堅牢なコード署名メカニズムにより、ユーザーはインストール前にサーバーの出所と完全性を検証でき、信頼できるMCP統合のためのマーケットプレイスのような環境が実現されます。

信頼できないソースからのディープリンクは、信頼できない実行ファイルと同様に慎重に扱う必要があります。承認フローには、より詳細なセキュリティ警告や発信元の検証を組み込み、ユーザーが信頼できるディープリンクとそうでないものを区別できるようにする必要があります。マクロは強い類似例です。攻撃者はこれまでユーザーにマクロを有効化させることで任意のコード実行を引き起こしてきました。この対策として、インターネット由来のドキュメントにはMark-of-the-Webが付与され、より厳格な実行ポリシーが適用されています。
 

開示および関係に関する注記 

  • プルーフポイントは、Cursor/Anysphere, Inc.との間に商業的、顧客、パートナー、またはベンダーとしての関係を有していません。
  • プルーフポイントは、Cursorの市場分野(AI開発者向けIDE/ツール)では競合していません。本稿に記載されている製品名は識別目的のみに使用されており、いかなる推奨や保証を意味するものではありません。

当社は公開前にCursorへ通知しましたが、同社のポリシーに基づき本件はスコープ外/該当なしとしてクローズされました。Cursorからのガイダンスや製品の変更があった場合、本投稿は更新される可能性があります。

さらなる調査および検証を促進するため、CursorJackのPOCコードをGitHubで公開しています。