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で修正しました。それより前のすべてのビルドが さらされています。
境界は、それが守る部屋の中に座っていた
チェーンをもう一度読むと、鋭い部分はシンボリックリンクの小技ではありません。
それはガードの場所です。コマンドが閉じ込められているかどうかを決める
ヘルパーは、エージェントが編集するプロジェクトと同じディスク上に、
エージェントと同じ信頼ドメインの中に、エージェントが普段の作業で使うのと
同じ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を読んだりする脱出した
シェルは、プレースホルダーを見つけます。本物の認証情報が存在する唯一の
瞬間は、エージェントが本物の作業のために行ったリクエストの中であり、状態を
変える呼び出しは、それが出て行く前にホスト上での確認のために境界で一時
停止します。パッケージの取得は同じプロキシを横切り、入ってくる途中で
スキャンされます。一本の線、いくつもの仕事、そのすべてがエージェントの下に
あるのです。
脱出はゲストの中に着地する
両方の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は、その線を ハイパーバイザーに引きます。無料で、オープンソースで、今日出荷されて います。