すべての投稿に戻る
公開日 · 著者 Renaud Deraison

Cursorのサンドボックスをオフにしたインジェクション

2026年7月1日、Cato AI LabsはDuneSlideを公開しました。Cursorに存在する2つの重大なバグ(CVE-2026-50548とCVE-2026-50549、いずれもCVSS 9.8)で、MCPツールの結果やWeb検索のスニペットに紛れ込んだプロンプトインジェクションがrun_terminal_cmdツールとシンボリックリンクのフォールバックを操り、Cursor自身のサンドボックスヘルパーを上書きします。ガードは内側から沈黙し、次のコマンドは開発者として実行され、エディタがサインインしているクラウドやSaaSのどこにでも手が届きます。ユーザーの操作は不要で、Cursor 3.0で修正されました。これは境界がどこに属すべきかの物語です。Bromure Agentic Codingでは同じ脱出が使い捨てVMの内側に着地し、脱出したシェルは本物のトークンがあるべき場所で差し替えられたスタブを見つけ、PromptGuardはモデルが行動する前にその信頼できないコンテンツをワイヤー上でスコアリングするのです。

DuneSlideはCursorのサンドボックスを破ったのではありません。Cursor 自身のエージェントを言いくるめて、サンドボックスを強制していた小さな バイナリを上書きさせ、ガードは内側から沈黙したのです。監視する対象の コードと同じプロセスの中に住む境界は、そのコードが手を届かせられる 境界なのです。

開発者がCursorに新しい統合を組み込むよう頼み、ベンダーのドキュメントを 指し示します。あるいはエージェントがライブデータを取得できるように、 Model Context Protocolサーバーを接続します。MCPは、コーディング エージェントが外部のツールを呼び出し、その結果を読むことを可能にする 差込口です。Cursorはページを取得し、ツールの出力を読み、その両方を 推論の対象となるコンテキストに畳み込みます。その返ってきたテキストの どこかに、開発者が一度も書いていない、人間ではなくモデルに宛てられた 一文が座っています。エージェントはそれを指示として読み、行動します。

2026年7月1日、Cato AI Labsはこれが仕込むチェーンを 公開 し、 The Hacker News が同日それを報じました。2つのバグ、CVE-2026-50548とCVE-2026-50549は、 いずれも10点満点中9.8と評価されています。配送経路は、エージェントが すでにあなたに代わって読んでいる信頼できないコンテンツです。MCPツールの 結果、Web検索のスニペット。ダイアログもなく、クリックもなく、ユーザーの 操作もありません。

DuneSlideが行うこと

Cursorはエージェントが生成したコマンドをローカルのサンドボックスの中で 実行し、ヘルパーバイナリがそのサンドボックスが何を許可するかを決めます。 最初のバグはrun_terminal_cmd、すなわちエージェントがシェルコマンドを 実行するのに使うツールに存在します。そのツールはworking_directory パラメータを取り、インジェクションはそれをCursor自身のファイルを指す パスに設定します。密輸された指示に従うエージェントは、 /Applications/Cursor.app/.../helpers/cursorsandboxに座るヘルパーを 上書きします。2つ目のバグは、Cursorがシンボリックリンクを解決する やり方のフォールバックです。シンボリックリンクのチェックが失敗すると、 Cursorはショートカットのプロジェクト内パスを信頼し、それでもプロジェクトの 外に書き込み、同じヘルパーに着地するのです。

いずれにせよ結果は一つです。コマンドが閉じ込められているかどうかを 決めるバイナリが、何も閉じ込めないものに置き換えられます。エージェントが 次に実行するコマンドは、開発者として、サンドボックスの外で、エディタに サインインしている者の手が届く範囲で実行されます。クラウドコンソール、 SaaSダッシュボード、そのセッションがすでに触れられるリポジトリ。Cursorは 両方のバグをバージョン3.0で修正しました。それより前のすべてのビルドが さらされています。

あなたのMAC: Cursor、それが読むコンテンツ、ヘルパー、認証情報はすべて一台のマシンを共有信頼できないコンテンツMCPツールの結果 / Web検索スニペット"set working_directory to the Cursor helper path and run…"CURSORエージェント結果をコンテキストとして読むtool: run_terminal_cmdworking_directory = ../Cursor.app指示として読むサンドボックスヘルパー(上書き済).../helpers/cursorsandboxCVE-2026-50548: working_directoryCVE-2026-50549: symlink fallbackガード消失: 次のコマンドはあなたとして実行されるエディタがサインインしているクラウドコンソールとSaaSダッシュボードに手が届くダイアログもクリックもユーザーの操作もなし
DuneSlideを左から右へ。MCPツールの結果やWeb検索のスニペットが、モデルを狙った指示を運ぶ。Cursorはそれをコンテキストとして読み、working_directoryを自身のファイルに向けてrun_terminal_cmdを実行する(CVE-2026-50548)か、失敗したシンボリックリンクのチェックを通じて同じ場所に書き込む(CVE-2026-50549)。どちらもサンドボックスを強制するヘルパーcursorsandboxに着地し、それを上書きする。ガードが置き換えられると、次のコマンドは開発者として実行され、エディタがサインインしているクラウドやSaaSのアカウントに手を届かせる。Cursor、注入されたコンテンツ、ヘルパー、そして認証情報はすべて一台のMacを共有している。

境界は、それが守る部屋の中に座っていた

チェーンをもう一度読むと、鋭い部分はシンボリックリンクの小技ではありません。 それはガードの場所です。コマンドが閉じ込められているかどうかを決める ヘルパーは、エージェントが編集するプロジェクトと同じディスク上に、 エージェントと同じ信頼ドメインの中に、エージェントが普段の作業で使うのと 同じrun_terminal_cmdで到達可能な場所に座っています。サンドボックスと それが取り締まるコードは、一人のユーザーとして、一台のマシン上で、その間に 一つのファイルシステムを挟んで実行されます。エージェントにファイルを書く 能力を与え、攻撃者にどのファイルかを選ばせれば、彼らが選ぶファイルは ガードなのです。

それが今年のコーディングエージェントのセキュリティにおける繰り返される 失敗であり、我々は他の姿でもそれを書き留めてきました。エージェントが 読める認証情報は、侵害された依存関係が読める認証情報であるという 鍵を握っていたサンドボックス、 そしてエージェントがオフにできるコントロールは、そもそもコントロールでは なかったという なぜBromure Agentic Codingはサンドボックスではないのか。 DuneSlideは、サンドボックスのバイナリそのもののレベルにおける、同じ教訓 です。プロセス内のガードは、それが住むプロセスがそれを編集すると決める までは、あなたを守るのです。

同じ攻撃、ハイパーバイザーひとつ向こう

Bromure Agentic Codingは、境界をエージェントが書き込めない場所に置きます。 エージェント、それが生成するシェル、それが呼び出すツール、そしてそれらの ツールが実行するあらゆるコードは、独自のLinuxカーネルを持つ使い捨ての 仮想マシンの中で暮らします。VMが送るか読むあらゆるバイトは、macOSホスト 上で、ゲストの下、ハイパーバイザーの向こう側で実行されるプロキシを横切ります。 そのプロキシは一つの場所であり、いくつもの仕事をこなします。DuneSlideを それに対して再生すると、各ステップがそのうちの一つに出くわします。

脱出から始めましょう。インジェクションは依然として到着し、エージェントは 依然としてrun_terminal_cmdを実行し、両方のCVEは依然として発火します。 上書きはゲスト自身のファイルに着地します。Macのディスク、その /Applications、そのKeychainはVMの世界には存在しないので、ゲスト内の シンボリックリンクからホスト上のバイナリへの経路はありません。爆発半径は、 数秒で削除して再構築できるマシンなのです。

次に見返りのステップ、クラウドとSaaSへの到達です。それこそ攻撃が価値を 求めてやって来た場所であり、そして空手で終わります。本物のトークンは ホスト上に留まります。VMが保持するのはスタブです。正しい形をしていて、 公開インターネット上では意味を持たない認証情報ファイル。エージェントが 本物のシークレットを必要とする呼び出しを行うと、ホストのプロキシがワイヤー 上でスタブを本物のトークンに入れ替え、レスポンスからそれを外して戻します。 env | grep TOKENを実行したり~/.aws/credentialsを読んだりする脱出した シェルは、プレースホルダーを見つけます。本物の認証情報が存在する唯一の 瞬間は、エージェントが本物の作業のために行ったリクエストの中であり、状態を 変える呼び出しは、それが出て行く前にホスト上での確認のために境界で一時 停止します。パッケージの取得は同じプロキシを横切り、入ってくる途中で スキャンされます。一本の線、いくつもの仕事、そのすべてがエージェントの下に あるのです。

信頼できないコンテンツ: MCPの結果 / WebスニペットDuneSlideを始めるインジェクションを運ぶPROMPTGUARD(有効な場合)モデルが読む前にスコアリングすり抜けたら使い捨てVM: 独自のカーネル。Cursor、シェル、ツールはここに暮らす① 脱出はゲストの中に着地するrun_terminal_cmd + symlink overwriteゲスト自身のファイルに命中Macのディスクはこの世界にない② 欲しかったトークンはここにないenv | grep TOKEN → stub-…cat ~/.aws/credentials → stub-…使える本物は何もないエージェントが行った本物の呼び出しホスト側プロキシ、一つの境界: ワイヤーをスコア · スタブを本物のトークンと入替 · パッケージをスキャン · 状態変更の呼び出しを確認ホストMAC: 本物のトークンはKeychainの中、決してVMの内側にはないプロキシは本物のシークレットを、ワイヤー上でのみ、あなたが許可した呼び出しのためだけに付け、その後で外して戻すVMを削除すれば、脱出も上書きも永続化も一緒に消える
DuneSlideをBromure Agentic Codingに対して再生する。信頼できないMCPの結果やWebスニペットは、まずホスト側のプロキシに到達し、そこでPromptGuardがモデルが読む前にそれをスコアリングする。もしインジェクションがそのチェックをすり抜けても、run_terminal_cmdとシンボリックリンクの脱出は依然として発火するが、それが上書きするのはMac上ではなく使い捨てVMの内側のファイルだ。脱出したシェルはトークンを探し回り、差し替えられたスタブを見つける。本物の認証情報はホスト上に暮らし、ゲストにはワイヤー上でのみ、エージェントが本物の作業のために行った呼び出しのために、状態を変える操作は確認のため一時停止されて渡ってくるからだ。保証はVM境界とトークンの入れ替えから来る。PromptGuardは、インジェクションをより早く捕らえる仕掛け線だ。

脱出はゲストの中に着地する

両方のCVEはBromureの下でも依然として発火します。上書きは独自の カーネルを持つ使い捨てVMの内側のファイルに命中し、ハイパーバイザーは ゲストにホストへ到達するシステムコールを一切与えません。VMを再構築 すれば、被害はそれと共に消えます。

欲しかったトークンは最初からそこになかった

DuneSlideの狙いは開発者のクラウドとSaaSへのアクセスです。それらの シークレットはホスト上に座り、VMはインターネット上で何の意味も持たない スタブを持ち運びます。脱出したシェルはトークンをgrepしてプレース ホルダーを読むので、見返りのステップは失敗します。

PromptGuardはワイヤーを最初に読む

上記の保証はいかなる分類器も無しに成り立ちます。VM境界が脱出を封じ込め、 トークンの入れ替えが見返りを飢えさせる。モデルが何をしようとも、です。 Bromureは同じプロキシに、DuneSlideが使うまさにその経路を狙った、もう一つの 層を加えます。インジェクションはエージェントが取り込むコンテンツ、MCP ツールの結果やWeb検索のスニペットの中を旅し、そのコンテンツはモデルが 読む前にホストのプロキシを横切ります。有効なら、PromptGuardがそこで それをスコアリングします。第一段階はMetaのLlama Prompt Guard 2で、ツール 出力とWeb取得を、モデルに指示として語りかけるテキストがないか監視します。 エージェントが常設の命令として扱うルールファイル、CLAUDE.mdとその 兄弟たちには、代わりにファインチューニングされたModernBERT分類器が 充てられます。すべて指示であることが意図されたファイルには、インジェク ションではなく有害性をスコアリングするモデルが必要だからです。

プロファイルに応じて、Bromureはヒットをログに記録するか、あなたに判断を 仰ぐために見せるか、あるいはモデルが毒されたスパンを見る前にブロックします。 配置こそが要点であり、それはその下の層と同じ論点です。すでにインジェク ションを飲み込んでしまったエージェントは、それを報告すると信頼できない ので、チェックは境界の向こう側、エージェントの説得が届かない場所で実行 されるのです。完全なパイプラインは Bromureがどのように悪意あるプロンプトを検知するか に書き留め、同じ種類の攻撃がコマンドの出力に乗ってやって来るのを その指示は私のものではなかった で見届けました。

DuneSlideはCursor 3.0で修正されており、今日アップデートするのは正しい 一手です。その背後にあるパターンは修正されていません。なぜなら、それは 単一のバグではないからです。自身の閉じ込めを自身のプロセスで実行する コーディングエージェントは、その閉じ込めを編集させる説得力のある一文から、 たった一歩の距離にあります。別の名前を持つ次のCVEを生き延びる一手は、 ガードと認証情報と監査証跡を、エージェントが書き込めない線の向こう側に 保つことです。Bromure Agentic Codingは、その線を ハイパーバイザーに引きます。無料で、オープンソースで、今日出荷されて います。