Claude Cowork のサンドボックス・エスケープ:VM 内での権限昇格とネットワーク・アクセス

Claude Cowork Sandbox Flaw Lets Attackers Execute Commands as Root in Hyper-V VM

2026/07/03 gbhackers — Anthropic の Claude Cowork for Windows において、CoworkVMService と Remote Procedure Call (RPC) インターフェイスに新たなサンドボックス・エスケープの手法が発見された。この脆弱性を悪用する攻撃者は、Hyper-V により分離された Ubuntu 仮想マシン (VM) 内で root レベルでのコマンド実行を達成できる。

この問題が浮き彫りにするのは、Authenticode により制御される、名前付きパイプ RPC/bubblewrap ネームスペース/seccomp フィルター/セッションごとの非特権ユーザー/ドメイン制限付き egress proxy の相互作用がもたらす弱点である。

Armadin の研究者 Nick McClendon により文書化された一連の脆弱性は、最終的に仮想化環境内での権限昇格と制限のないネットワーク・アクセスを可能にする。

Claude Desktop for Windows の一部である Claude Cowork は、Windows Subsystem for Linux v2 に類似した形で、Host Compute Service を使用して Ubuntu VM を管理している。

hcdiag list confirming the Claude Cowork VM was running on the host (Source: Armadin)
hcdiag list confirming the Claude Cowork VM was running on the host (Source: Armadin)

この構成は、Hyper-V からは可視化されないが、Local System サービスである CoworkVMService を通じて機能は公開される。このサービスは、JSON ベースの RPC サーバを用いることで、名前付きパイプ “.\pipe\cowork-vm-service” を介して通信する。

CoworkVMService は、WinVerifyTrust を通じて Authenticode 署名の検証を強制し、”Anthropic, PBC” に署名されたバイナリのみの接続を保証するが、この仕組みでは ID が検証されない。

このサービスは RPC リクエストの内容に対する認可を強制していないが、”C:\ProgramData\Claude\Logs\cowork-service.log” に保存されるログには、攻撃者がプロトコルをリバース・エンジニアリングするのに十分なテレメトリが含まれている。具体的には、configure/startVM/isGuestConnected/spawn などのメソッド構造が含まれる。

Armadin が実施した検証は、署名検証を直接回避する試みが失敗した後に USERENV.dll における GetUserProfileDirectoryW export を標的とする、DLL サイドローディング (MITRE ATT&CK T1574/002) を利用するものだ。

Attack chain (Source: Armadin)
Attack chain (Source: Armadin)

“claude.exe” は、システム・パスより先に、自身のアプリケーション・ディレクトリから USERENV.dll を解決する。そのため、実行ファイルの隣に悪意の DLL を配置することで、信頼された署名済みプロセス内での任意のコード実行が可能になった。このサイドローディング・コンテキストは Authenticode の信頼を引き継ぐため、名前付きパイプ・サービスとの通信が成功する。

ログ分析/ファジング/パラメータ発見を通じて開発されたカスタム RPC client を用いて、研究者は spawn メソッドに重大な弱点があることを特定した。JSON ペイロード形式 “[4-byte big-endian length][JSON payload]” は、isResume と allowedDomains を含む、文書化されていないパラメータを露出していた。

isResume が false に設定されている場合には、useradd により新しい非特権 Linux ユーザーを作成する sdk-daemon が、サンドボックス制約を強制していた。しかし、isResume を true に設定すると、この制御は完全に回避され、root を含む任意の既存ユーザーとしての検証なしの実行が可能になる。

“name”: “root” と “isResume”: true を含む細工されたリクエストは、uid=0/完全な Linux capabilities (CapEff: 000001ffffffffff)/unconfined の AppArmor プロファイルを持つ shell を返す。

重要な点として、bubblewrap により強制されるサンドボックス分離は、PID 1 を標的とする nsenter を用いることで回避可能であった。これにより、host VM の namespace (mount/PID/UTS/IPC/network) への脱出が可能になった。結果として、プロセス全体の可視化や、/etc/shadow のような機密性の高いファイルへのアクセス、sdk-daemon や seccomp BPF フィルターの変更が可能になった。

さらに、allowedDomains パラメータにより、proxy のネットワーク制限の回避が可能になった。デフォルト構成では、ブロックされたドメインに対して HTTP 403 が返される一方で、”allowedDomains”: [“*”] を設定すると、攻撃者が制御するインフラへの情報の送信と、HTTP 200 レスポンスの成功により、制限のないアウトバウンド接続が可能になった。

これら 2 つの手法を、1 回の spawn リクエスト内で組み合わせることで、攻撃者は root としてコマンドを実行し、nsenter を用いてサンドボックス・エスケープを達成し、curl と base64 エンコードを用いて /etc/shadow などの機密データの窃取が可能になる。しかも、そのすべてを host ベースの防御に検知されないまま、VM 内から実行できる。

2026年3月20日の時点で責任ある開示が実施されたが、Anthropic はセキュリティ脆弱性には当たらないと分類した。その理由として、host システム上でのローカル・コード実行が前提条件であると主張している。

この調査が浮き彫りにするのは、Claude Cowork のような AI 生産性向上ツールがもたらす攻撃対象領域の、より広範な変化である。信頼の強制を、クライアント制御の RPC パラメータに委ね、仮想化が引き起こす可視性の空白が生じることで、防御側が検知するよりも速く、攻撃者がミスコンフィグを武器化する状況が生み出される。

防御上の推奨策としては、AppLocker Packaged App ルールにより、Claude Desktop の使用を制限することである。それに加えて、USERENV.dll のような DLL が “C:\Windows\System32” 以外から読み込まれる異常を Sysmon Event ID 7 で監視し、サイドローディングの試みを示す兆候として捉えるべきである。