a close up of a laptop on a desk
Photo by Zac Wolff on Unsplash

AI開発ツール5製品の内蔵ブラウザーで脆弱性が見つかりました。Cursorではホスト上でのコード実行、Claude Desktop、Codex、VS Codeではローカルファイルの読み取り、GitHub Copilotではアドレスバーの偽装につながる問題が確認されています。CursorとCopilotの問題は修正されましたが、報告時点でCodexとVS Codeの問題は未修正です。

内蔵ブラウザーに共通する権限の問題

Forever Securityは、Cursor、GitHub Copilot、Claude Desktop、VS Code、Codexの5製品を調査しました。共通していたのは、内蔵ブラウザーに通常のブラウザーにはない機能を与えた結果、ページがエージェントへの入力やタブのアドレス、端末上のファイルに関与できる状態になっていたことです。

通常のブラウザーでは、ウェブページのJavaScriptは端末上のアプリと直接やり取りできず、ページがアドレスバーの表示を書き換えることもできません。また、ローカルファイルを開いたページは通常、別のファイルへ自由にアクセスできない仕組みです。

Chrome DevTools for agentsでは、エージェントが接続したブラウザーの内容を読み、調べ、変更できます。認証済みのセッションで使う場合、エージェントはそのページを操作できるため、ブラウザーに渡す情報や権限の範囲がセキュリティ上の境界になります。内蔵ブラウザーがエージェントと端末の間で持つ権限によって、ページの内容を信頼できないものとして扱う通常の境界が崩れる場合があります。

Cursorではページの内容からコード実行へ

Cursorの内蔵ブラウザーでは、ページからエージェントの入力欄へ情報を送る仕組みがありました。ページが選択要素の情報を装って入力欄に指示を送り、利用者には見えにくい形でエージェントに読み取らせることができたと研究者は報告しています。

この経路を使うと、ページ上の内容が指示として扱われ、エージェントが端末上のコマンドを実行する可能性がありました。Forever Securityは9月10日にCursorへ報告し、脆弱性は10月1日に修正されたとしています。

ブラウザーで見た内容が、そのまま安全な指示になるとは限りません。ページからエージェントへ渡される入力と端末上で実行される操作が結びつくと、ウェブページとローカル環境の境界をまたぎます。

Copilotの偽装と3製品のファイル読み取り

GitHub Copilotのプレビューでは、ページが実際の読み込み先と異なるURLをアプリへ伝え、アドレスバーに偽のURLを表示させることができました。研究者はGitHub Copilot 1.1.27で問題を確認しました。GitHubは報告を受ける前の10月13日に、バージョン1.1.29で修正したとしています。

Claude DesktopとVS Codeでは、内蔵ブラウザーで開いたローカルページがウェブワーカーを起動すると、プロジェクトフォルダー外のファイルにもアクセスできました。ウェブワーカーはページ本体とは別のスレッドでJavaScriptを動かすブラウザー機能です。

Codexでは同じ制限がなく、ローカルページからウェブワーカーを介さずに任意のファイルを読める問題がありました。Forever Securityは7月27日にOpenAIへ報告し、報告時点で未修正としています。VS Codeの問題も9月10日にMicrosoftへ報告され、未修正とされています。

設定と運用で抑えるリスク

内蔵ブラウザーを使う開発者向けに、AnthropicのClaude Codeは手動モードを用意しています。このモードでは、ファイル編集やコマンド実行の前に利用者へ承認を求めます。作業フォルダーの外への読み書きにも確認を求める仕組みがあります。

Claude Codeのサンドボックス機能では、ファイルシステムとネットワークの境界を設定して、コマンドの実行範囲を制限できます。一方、利用者が承認したBashコマンドはユーザー権限で広い範囲へ書き込める場合があるため、承認内容の確認も運用上の対策として挙げられています。

また、外部のページやリポジトリーの内容をそのまま指示として扱わず、エージェントが提案したコマンドや変更を確認する手順をAnthropicは推奨しています。