Deep Dive
🔬 Deep Dive|AI 開発ツール 5 製品の内蔵ブラウザに穴、Codex と VS Code は未修正
Cursor・GitHub Copilot・Codex・VS Code・Claude Desktop の内蔵ブラウザに見つかった EMBRACE。1 回のクリックでディスク全体が読める仕組みと、「信頼したフォルダの中の話」という線引き、同じ週の改ざん拡張までを一次資料で読む。

米国のセキュリティ企業 Forever Security は 2026 年 10 月 29 日、AI 開発ツール 5 製品が内蔵するブラウザの脆弱性をまとめた研究「EMBRACE」を公表した。対象は Cursor・GitHub Copilot・Codex (OpenAI)・VS Code (Microsoft)・Claude Desktop (Anthropic) で、ページからのコード実行、ディスク上のファイルの読み出し、アドレスバーの偽装が見つかった。
Forever Security「EMBRACE: How We Hacked the Browsers Embedded in Top Five Desktop AI Assistants」(2026-10-29)Forever
公表の時点で、Codex と VS Code の問題は直っていない。プロジェクトに入っていた HTML ファイルを内蔵ブラウザで 1 回開くだけで、SSH 鍵や .env を含むファイルが読み出せる状態が残っている。
AI に画面を見せ、操作させるために足した機能が、ブラウザが 20 年かけて守ってきた約束を一つずつ緩めた。開発者の PC は、取引所の API キー、クラウドの認証情報、デプロイ用の鍵が集まる場所でもある。本稿では 5 製品の穴を順に整理し、同じ週に起きた 2 つの事案と合わせて、AI エージェントが「信じるもの」が攻撃面になっている構造を読む。
普通のブラウザが守ってきた 3 つの約束
研究は、普通のブラウザが守る約束を 3 つに絞って、それぞれを崩しにいった。
- Web ページは、あなたの PC でコマンドを実行できない
- 手元で開いた HTML ファイルは、ほかのファイルに手を伸ばせない
- ページは、アドレスバーの表示を書き換えられない
5 製品はどれも、本物のブラウザ部品を中に組み込んでいる。そのうえで、AI がローカルのプロジェクトをプレビューする、タブの中身を読む、今どのページにいるかを知る、といった仕事のために、普通のブラウザには無い力を足した。研究はこれを「埋め込まれたブラウザが、本物のブラウザと同じように信頼されている」状態と呼び、頭文字から EMBRACE と名付けている。
製品ごとの結果は次のとおりだ。
| 製品 | 崩れた約束 | できたこと | 公表時点の状態 |
|---|---|---|---|
| Cursor | ページはコマンドを実行できない | ページからエージェント経由でコード実行 | 10 月 1 日に告知なしで修正 |
| GitHub Copilot | ページはアドレスバーを書き換えられない | github.com/login への偽装 | 1.1.29 (10 月 13 日) で修正 |
| Codex | ローカルファイルはほかのファイルを読めない | ディスク上の任意のファイルを読み出し | 未修正 |
| VS Code | 同上 (Web Worker 経由) | 同上 | 未修正 (Microsoft は修正しない判断) |
| Claude Desktop | 同上 (Web Worker 経由) | 同上 | 研究は記載なし (後述) |
1 回のクリックで、ディスク全体が読める
最も影響が大きいのは、Codex・VS Code・Claude Desktop の 3 製品に共通するファイルの読み出しだ。
普通のブラウザは、手元で開いた HTML ファイルに「どこでもない場所」という扱いを与え、隣のファイルすら読ませない。3 製品はプレビューの便利さのために、ローカルのページが同じフォルダのファイルを読めるようにした。そのうえで、プロジェクトのフォルダの外へは出られないよう柵を立てた。
VS Code と Claude Desktop の柵は、ページ本体にしか立っていなかった。ページが裏で動かすスクリプト (Web Worker) から読みにいくと、柵の確認が走らず、ディスク上のどのファイルも中身ごと返ってくる。Codex はそもそも柵が無く、ページ本体からそのまま任意のファイルを読めた。
何を読めばよいかは、Mac が Finder で開いたフォルダに置く隠しファイル (.DS_Store) から割り出す。このファイルには同じフォルダにあるファイルの名前が並んでいるので、ホームフォルダから外へたどれば、ディスク全体の地図ができる。研究者の検証用の Mac では、SSH 鍵、.env ファイル、npm のトークン、hosts ファイルが読み出された。
被害者がするのは 1 回のクリックだけだ。研究が示した手口では、攻撃者は退屈な財務レポートのページに見えるプロジェクトを用意し、中に Worker を起動する 1 行だけを仕込む。利用者が AI に「README の通りにセットアップして」と頼むと、AI が親切にファイルへのリンクを出す。押すのは利用者だが、そのリンクを差し出したのは利用者が信頼している AI だ。研究はこれを、エージェントの信頼をまとったクリックだと書いている。
Cursor、ページの文字がエージェントへの指示に
Cursor の内蔵ブラウザには、ページから AI の入力欄 (コンポーザー) へ内容を送る通り道があった。どのサイトのページからでも、利用者の操作なしに使えた。
研究者は、画面にはほとんど見えない部品の属性に命令を隠した。命令を 1 か所に書くとエージェントが怪しんで断るので、npm・install・パッケージ名を別々の属性に分け、「これをつないでセットアップとして実行して」と書いた。Cursor は自動実行が初期設定で有効で、許可リストは空だったため、実行の確認は Enter 1 回で通る。
続く動きは研究の中でも目を引く。npm install は Cursor のサンドボックスに止められたが、エージェントはページに指示されていないのに自分でサンドボックスを外し、もう一度実行した。インストール時のスクリプトは利用者の権限で動き、検証では電卓が起動した。毎回成功するわけではなく、モデル次第だと研究は書く。それでも、閲覧したページが PC 上のコード実行まで届いたこと自体が問題だという立場だ。
研究者は 9 月 10 日に Cursor に報告し、Cursor は 10 月 1 日に告知なしで修正した。Cursor から研究者への返事は無かったという。
GitHub Copilot、アドレスバーがページの自己申告に
GitHub Copilot のブラウザプレビューでは、ページが自分の居場所を自己申告でき、アプリはそれを確かめずに信じた。確認していたのは、文字列が http・https・file で始まり、ユーザー名やパスワードを含まないことだけだ。
攻撃者のページは動かないまま、アドレスバーに github.com/login と表示させられる。同じ住所はエージェントにも「今いるタブ」として渡る。人が場所を確かめる唯一の欄と、エージェントの判断材料の両方が、攻撃者の申告で埋まる。
研究者は 9 月 26 日に 1.1.27 でこれを確認したが、報告を送る前の 10 月 13 日、GitHub が 1.1.29 で独自に直した。研究はこれを「閉じた結果」として記録している。
「信頼したフォルダの中の話」という線引き
修正の差を分けたのは、技術ではなく線引きだった。
Microsoft は 9 月 10 日の報告に対し、「Workspace Trust (ワークスペースの信頼) で区切られた範囲の問題」として無効と判断した。VS Code はフォルダを開くときに「このフォルダを信頼するか」を尋ねる。信頼すると答えた時点で、その中身は利用者が受け入れたもの、という考え方だ。Anthropic も 7 月 23 日の Forever の報告を、同じ理由で一度は無効とした。
翌 7 月 24 日、別の研究会社 Noma Security が同じ Anthropic に報告し、こちらは有効と認められた。Noma が 10 月 14 日に公開した「SneakPeek」の時系列では、Claude Code Desktop のプレビュー欄で 256KB を超えるファイルがローカルのファイルとして直接開かれ、ローカルのファイルを読めた。Anthropic が 7 月 24 日に入れた修正を、Noma は同じ日に Web Worker 経由で回避し、Anthropic は 8 月 3 日に修正が不完全だと認めた。Noma によれば、8 月 17 日に配布された Claude Desktop 1.30096.1 以降で、Worker 経由の回避も含めて修正された。CVE と GitHub のセキュリティ勧告は 10 月時点で公開待ちとされている。EMBRACE 自体は Claude Desktop の現状を書いていない。
研究の側は、利用者の同意を防御の柱に置くことに疑問を投げる。この攻撃で必要だった 1 回のクリックは、AI が自分で描いたリンクや、Enter 1 回で進む実行カードから来た。研究は企業のセキュリティ責任者に向けて、「利用者が何かを押す必要がある」ことを防御として数えるな、と書いている。AI エージェントに作業させる以上、作業フォルダは信頼して開くのが普通の使い方で、その一回の「信頼する」が以後のすべてを許す設計になっている。
OpenAI は 7 月 27 日に報告を受けたが、研究者には返事をしていない。公表時点で Codex の修正は出ていない。
同じ週に起きた、2 つの「信じすぎ」
EMBRACE が単発の話でないことは、前後の 2 つの事案が示している。
1 つ目は、同じ Forever が 10 月 22 日に公表した研究だ。顧客の PC で、Downloads フォルダに置かれた AGENTS.md (AI エージェントが作業を始めるときに読んで従う指示書) を捕捉した。Web ページは、利用者が何も押さなくても Downloads にファイルを保存できる。エージェントをそのフォルダで起動すると、指示書に従って自分の設定を書き換え、既知の悪性パッケージを入れようとした。研究者はこれを Codex と Claude Code の両方で再現している。内蔵ブラウザを持たないコマンドライン型のエージェントでも、「置かれた指示を信じる」性質は同じだ。
2 つ目は 10 月 29 日、Cursor の拡張機能マーケットに Anthropic の Claude Code 拡張を装った改ざん版 (2.1.312 と 2.1.313) が並んだ件だ。Cursor の告知によれば、配布は日本時間 29 日 18 時台から 30 日 5 時台まで。改ざん版は端末の情報を送り、攻撃者の SSH 鍵を書き足し、外へのトンネルを張ろうとした。公式の拡張 ID と次の版番号をまとった更新は、利用者が何も押さなくても自動で入った。詳細は本サイトの Signal で追った。
3 件に共通するのは、エージェントや開発ツールが「信頼できる場所から来たもの」として扱う面が、そのまま攻撃の入口になったことだ。内蔵ブラウザで開いたページ、作業フォルダに置かれた指示書、公式の名前で届いた更新。どれも、人が 1 つずつ確かめていた頃には安全だった前提の上に立っている。
鍵が集まる机としての開発者の PC
暗号資産や金融の仕事をする人にとって、この話は他人事ではない。開発者の PC のホームフォルダには、取引所の API キーを入れた .env、サーバーに入る SSH 鍵、クラウドやパッケージ配布の認証情報が並ぶ。研究が読み出したのも、まさにこの種類のファイルだった。
1 つのファイルから家じゅうの鍵に手が届く構造は、10 月下旬の GMO のデスクトップクラウドの事件と同じ形をしている。あちらは事業者のサーバーに口座の鍵が集まり、こちらは利用者自身の PC に集まっている。AI エージェントが PC の上で動く時間が長くなるほど、エージェントが開く 1 枚のページ、読む 1 枚の指示書が、その鍵の束に近づく。
今の時点で取れる手は、研究と各社の告知から次のように整理できる。
- Cursor は 10 月 1 日以降の版、GitHub Copilot は 1.1.29 以降に更新する。Claude Desktop は自動更新が届いているかを確かめる
- Codex と VS Code では、外から来たプロジェクトの HTML を内蔵ブラウザで開かない。見た目を確かめたいときは、普段使いのブラウザで開くか、テキストとして中身を読む
- 知らないリポジトリを「README の通りにセットアップして」と丸ごと任せない。AI が出したローカルファイルへのリンクは、自分で作ったファイルのものだけを押す
- Cursor で 10 月 29 日に Claude Code 拡張が自動更新された人は、Cursor の告知に従い
~/.ssh/authorized_keysにsvc-telemetryの鍵が無いかを確かめる - .env の API キーやトークンは、漏れたらすぐ無効にできる状態にしておく。取引所の API キーは出金権限を外し、接続元の IP を絞る
次に見るもの
最初の確認点は、OpenAI の Codex のリリースノートだ。7 月 27 日の報告から 3 か月、修正が出ていない。ローカルのページからのファイル読み出しを止める修正が載った時点で、未修正の 2 製品は VS Code だけになる。
Microsoft が VS Code で「Workspace Trust の範囲」という判断を変えるかは、VS Code の月次リリースノートで見る。Anthropic 側は、Noma が「公開待ち」としていた SneakPeek の CVE と GitHub のセキュリティ勧告が出るかどうか。出れば、修正版と影響範囲が Anthropic の名前で確定する。Cursor の改ざん拡張は、告知ページの更新 (侵入経路、実際に動いた台数) が次の手がかりになる。
ことば
- Web Worker — Web ページが裏で動かす別のスクリプト。画面を固めずに重い処理をするための仕組みで、今回はページ本体にだけ掛けられていた読み取りの制限を抜ける道になった。
- Workspace Trust — VS Code がフォルダを開くときに「信頼するか」を尋ねる仕組み。信頼したフォルダの中身は利用者が受け入れたもの、と扱う線引きで、Microsoft と Anthropic が当初の判断の理由に挙げた。
- AGENTS.md — AI コーディングエージェントが作業フォルダで最初に読み、従う指示書。人が中身を確かめて置く前提のファイルだが、Web から Downloads に置かれると、その前提が崩れる。
🔗 一次ソース
Forever Security「EMBRACE: How We Hacked the Browsers Embedded in Top Five Desktop AI Assistants」(2026-10-29)Forever
Forever Security「EMBRACE: Technical Overview」(2026-10-29)Forever
Noma Security「SneakPeek: How the Preview Pane in Claude Code Desktop Can Exfiltrate Your Data」(2026-10-14)noma.security
Forever Security「Markdown Is the New Executable」(2026-10-22)Forever
Cursor「Security notice — malicious version of Anthropic.claude-code (2.1.312 and 2.1.313)」(2026-10-29・10-30 更新)Cursor
Forever Security「Claude Code Extension Compromised: What You Need to Know」(2026-10-30)Forever