Claude Code、macOSのサンドボックスを抜けられた問題の手口が公開 - 発見者は2.1.247で修正と説明

Claude Code、macOSのサンドボックスを抜けられた問題の手口が公開 - 発見者は2.1.247で修正と説明

スタートアップのAccomplishが2026年9月11日、Claude Codeで信頼できないリポジトリを開くと、macOSのサンドボックスの外で権限確認なしにコマンドが実行されうる問題の手口を公開した。7月13日に報告し、2.1.247で修正されたとしている。

テルアビブに拠点を置くスタートアップのAccomplishが2026年9月11日、Claude CodeのmacOSのサンドボックスを抜ける手口「Beltdown」の詳細を技術ブログで公開した1。同社の説明では、信頼できないリポジトリをClaude Codeで開くと、そのリポジトリに仕込まれたコマンドがサンドボックスの外で、利用者の権限のまま実行されうる。権限確認のプロンプトは表示されない。

Accomplishによれば、Anthropicは報告を受けてClaude Code 2.1.247でこの問題を修正した1。macOSでClaude Codeを使っているなら、手元の版が2.1.247以降かどうかがまず確認すべき点になる。

サンドボックスを有効にしたから確認が出なかった

Accomplishが示した検証条件は厳しめに組まれている。サンドボックスを有効にし、権限モードを最も厳しい「don’t ask」に設定したうえでリポジトリを開き、短いメッセージを1つ送った。それだけで、リポジトリ由来のコマンドがサンドボックスの外で確認なしに実行されたという1。同社は、外部の内容に紛れ込ませた指示でAIを操る間接的なプロンプトインジェクションの形でも成立しうると書いている。

確認が出なかった理由について、Accomplishは直感に反する点として、サンドボックスそのものを挙げる。サンドボックスを有効にすると、Claude Codeはエージェントが実行するコマンドをmacOSのSeatbeltで囲い込み、その代わりに実行前の確認を省く1。囲いの中にいる前提で確認を減らす設計なので、囲いに穴があれば、そのまま無確認の実行につながる。

4つの防御と、それぞれの抜け道

穴があったのは、エージェントのコマンドではなくClaude Code本体(ハーネス)の側だ。ハーネスはリポジトリの索引を作るため、自前のgitコマンドをバックグラウンドで、サンドボックスの外で実行している。gitには core.fsmonitor という設定があり、.git/config に書かれていると、gitが作業ツリーを調べるたびにシェルコマンドとして実行される1。つまり、この設定を仕込んだ .git/config をハーネスのgitに読ませれば、サンドボックスの外でコマンドが動く。

Anthropic側もこの経路を想定した防御を置いていた。Accomplishはそれを4つに整理し、それぞれの抜け道を示している1。

1つ目は、サンドボックス外で走るgitコマンドに core.fsmonitor などを無効化するフラグを付ける対策。ただし、ファイル索引を更新する git ls-files の呼び出しが対策から漏れていた。2つ目は .git フォルダへの書き込み禁止で、これもプロジェクト直下の .git しか守っておらず、サブフォルダ内の .git へのリネームを止めるSeatbeltのルールがなかった。3つ目は「ハーネスはプロジェクトのルートでgitを実行するので、ルートの .git が無傷なら問題ない」という前提だが、実際にはBashツールが最後に使ったディレクトリで実行されていた。4つ目は、ハーネスがgitを自動で再実行しないことだ。これはスキルの自動読み込みで崩された。Claudeがファイルを読むとそのフォルダのスキルを探して読み込み、スキルの読み込みがファイル索引の更新を引き起こす。

これをつなげると、セットアップ用のスクリプトが別名のフォルダにgitの設定を作って core.fsmonitor を書き込み、サブフォルダ内で .git にリネームし、作業ディレクトリをそこへ移し、最後に「そのフォルダのビルドレポートを読んで」とClaudeに促す。Claudeがレポートを読んだ時点で、残りは利用者の操作なしに進むと同社は説明している1。

報告から修正までの経緯

Accomplishが公開した時系列では、同社は2026年7月13日にAnthropicへ報告し、同日にトリアージされた。8月6日に2.1.223で最初の対策が出たが、一部のgit呼び出しが漏れていて脱出経路が別の呼び出しに移ったため、残りの呼び出しを伝えた。完全な修正は8月26日の2.1.247だという1。修正後はハーネスが実行するすべてのgitコマンドで core.fsmonitor が空にされ、リポジトリの設定から何も実行できなくなったと同社は書いており、Anthropicのトリアージは迅速だったとも評している。

一方で、Claude CodeのCHANGELOGには2.1.223と2.1.247の項があるものの、CHANGELOG全体に fsmonitor という語は出てこない2。本件の修正はCHANGELOG上で名指しされていない。脆弱性の修正をCHANGELOGだけで追っていると、この種の修正は見落とすことになる。実際に悪用された例があるかどうかは、Accomplishのブログには書かれていない。

Upstarts Mediaの報道によると、Accomplishは今夏、Anthropicのほかに、CursorとOpenAIにも問題を報告していた。Cursorに7月に報告した1件とOpenAIに報告した2件は、約1週間で修正されたと報じられている3。OpenAIの広報は記事の公開後に、2件とも8月に対処したとの声明を出した。AnthropicとCursorはオンレコードのコメントに応じなかった。

手元で確認しておきたいこと

Claude Codeでは、承認の仕組みそのものに手が入る変更が続いている。8月14日からはPro・Max・Teamプランの新規セッションでauto modeが既定になり、ツール呼び出しごとの確認は分類器によるブロックに置き換わった。8月28日に追記された2.1.251でも、シンボリックリンク経由で承認範囲の外を読み書きしうる問題などが修正されている。確認の回数を減らす方向の設計では、確認の外側で動く部分、今回で言えばハーネス自身のgitが安全の前提になる。Beltdownはその前提が崩れた例と言える。

実務上の対応は3つに絞れる。1つ目は版の確認で、手元のClaude Codeが2.1.247以降であることを確かめる。自動更新を止めている環境や、社内で版を固定して配っている環境は特に注意がいる。2つ目は、見知らぬリポジトリの扱いだ。OSSのレビューや外部から受け取ったコードの確認など、中身を信用できないリポジトリを開く場面では、サンドボックスがあるから安全と考えず、使い捨てのVMやコンテナで開く運用を検討したい。Accomplish自身は、エージェント全体をVMに入れ、実際の認証情報をVM内に置かない構成を採っていると説明している1。3つ目は情報源の追い方で、CHANGELOGに加えて、発見者側の公開情報も監視対象に入れておくと取りこぼしが減る。

Sources

  1. Beltdown: Escaping the Claude Code sandbox - Accomplish公式ブログ(2026年9月11日、発見者による技術解説と時系列)
  2. Claude Code CHANGELOG - Anthropic公式リポジトリ(2.1.223・2.1.247の項)
  3. Claude Code, Codex, And Cursor Have Leaky Sandbox Problems You Don’t Hear About - Upstarts Media(2026年9月10日)

最新のAIニュースをほぼ毎日更新しています。

RSSで購読する 更新をいち早くチェックできます。

他のキーワードで探す →