コンテンツにスキップ

セキュリティ

2025年2月、LayerX Security ResearchはAnthropicのClaude Desktop Extensions(DXT)フレームワークにおける重大なゼロクリック・リモートコード実行の脆弱性を公開しました。拡張機能はサンドボックスなしでフルシステム権限で実行され、言語モデルとローカルオペレーティングシステム間の実行ブリッジとして機能します。

多くの企業セキュリティチームは現在、AIコーディングツールを企業エンドポイント上で直接実行するのではなく、専用の仮想マシン、コンテナ、または使い捨て環境内でのみ実行することを要求しています。

このdevcontainerはその要件を満たします。

+------------------------------------------------+
| ホストマシン(企業エンドポイント) |
| |
| - AIツールバイナリはインストールされていない |
| - AIツールの拡張機能やプラグインなし |
| - Dockerのみが必要 |
| |
| +------------------------------------------+ |
| | Dockerコンテナ(分離済み) | |
| | | |
| | AIツールはここで実行: | |
| | - Claude Code CLI | |
| | - Codex | |
| | | |
| | アクセス不可: | |
| | x ホストファイルシステム | |
| | x ホストキーチェーン / 認証情報ストア | |
| | x ホストクリップボード | |
| | x ホストネットワークインターフェース | |
| | x その他のホストアプリケーション | |
| +------------------------------------------+ |
+------------------------------------------------+

ホストボリュームマウントなし

Section titled “ホストボリュームマウントなし”

すべてのデータはDockerの名前付きボリュームに存在し、バインドマウントされたホストディレクトリではありません。コンテナ内での侵害はホストマシン上のファイルにアクセスできません。ボリュームの詳細については設定 — データ永続化を参照してください。

コンテナはmacOSキーチェーン、Windows資格情報マネージャー、ブラウザプロファイル、またはホストSSHエージェントにアクセスできません。SSHキーはbase64エンコードされた環境変数を通じて起動時に注入され、コンテナ内にのみ存在します。

Dockerコンテナはホストとクリップボード状態を共有しません。コピー/ペーストを通じてデータが漏洩することはありません。

コンテナは、サポートされている2つの認証モードのいずれかで外部と通信します:

  • LiteLLMプロキシモード — DockerのNATを通じてLiteLLMプロキシへのアウトバウンドHTTPS。
  • OAuthモード — DockerのNATを通じてAnthropicへの直接アウトバウンドHTTPS。

コンテナはVPNトンネル、企業ネットワークインターフェース、またはホスト上の他のサービスにアクセスできません。

環境全体を数秒で破棄して再作成できます。コンテナは使い捨てとして扱ってください。

Terminal window
docker compose down -v
docker compose pull && docker compose up -d

この環境はAIツールをコマンドラインインターフェースとしてのみ実行します。デスクトップアプリケーション、ブラウザ拡張機能、DXTフレームワークはありません。この分離モデルのきっかけとなった脆弱性は、コンテナ内でのCLI使用には適用されません。

docker-compose.ymlは複数の多層防御措置を適用します:

  • ケーパビリティの削除 — すべてのLinuxケーパビリティが削除され(cap_drop: ALL)、最小限のセットのみが再追加されます:CHOWNDAC_OVERRIDEFOWNER(エントリポイントでのボリュームパーミッション修正用)、SETUID/SETGID(sudo用)、NET_RAW(ping/tcpdump用)、およびNET_ADMIN(Wiresharkやbettercapなどのパケットキャプチャツール用)。
  • リソース制限 — CPU(4コア)、メモリ(8 GB)、およびPID数(4096)はmem_limitcpuspids_limitによって制限され、リソース枯渇攻撃を防止します。
  • /tmp用tmpfs/tmpディレクトリは256 MBのtmpfsとしてマウントされ、一時ファイルをメモリ内に保持し、コンテナの書き込み可能なレイヤーへの永続化を防止します。
  • デフォルトでTLS検証が有効NODE_TLS_REJECT_UNAUTHORIZEDは設定されていないため、Node.jsはデフォルトでTLS証明書を検証します。自己署名証明書を受け入れる必要があるユーザー(例:内部プロキシ用)は、.envファイルにNODE_TLS_REJECT_UNAUTHORIZED=0を追加することでオプトインできます。
  • SSHキーのumask — SSH秘密鍵はumask 077の下で書き込まれるため、作成からchmod呼び出しの間であっても、ファイルが全ユーザーから読み取り可能になることはありません。

セキュリティおよびペネトレーションテストツール

Section titled “セキュリティおよびペネトレーションテストツール”

コンテナには、認可されたテストシナリオ向けに約80のセキュリティおよびペネトレーションテストツールがプリインストールされています。ツールはカテゴリ別に整理されています:

カテゴリツール(例)
ネットワーク分析tshark, wireshark, masscan, hping3, bettercap (amd64), netdiscover
Webスキャナーnikto, sqlmap, dirb, whatweb, sslscan, OWASP ZAP, dalfox, feroxbuster
パスワードと認証hydra, john, hashcat, medusa, ncrack
リバースエンジニアリングradare2, Ghidra, gdb, binwalk, strace, ltrace
偵察subfinder, amass, httpx, nuclei, gau, waybackurls, recon-ng, spiderfoot
ファジングと列挙ffuf, gobuster, SecLists
サプライチェーンとシークレットtrufflehog, grype, syft, gitleaks, trivy
エクスプロイトフレームワークMetasploit (amd64), searchsploit (ExploitDB)

一部のツール(bettercap、Metasploit)は上流のパッケージング制約によりamd64でのみ利用可能です。パケットキャプチャツール(tshark、bettercap)はNET_ADMINケーパビリティを必要とし、デフォルトのdocker-compose.ymlに含まれています。

完全なリストについては、コンテナ内でclaude-self-testを実行してください(セクション7ですべてのセキュリティツールを確認します)。

コンプライアンスチェックリスト

Section titled “コンプライアンスチェックリスト”
要件ステータス
ホストエンドポイントにAIツールがインストールされていないはい
分離されたVMまたはコンテナで実行はい
ホストファイル共有へのアクセスなしはい
クリップボード同期なしはい
共有認証情報ストアなしはい
本番ネットワークへのVPNスプリットトンネリングなしはい
環境は使い捨て可能はい
デスクトップ拡張機能やプラグインなしはい
Linuxケーパビリティの削除(最小権限)はい
リソース制限の適用(CPU/メモリ/PID)はい
デフォルトでTLS証明書検証が有効はい
内部サービスはlocalhostのみにバインドはい
  1. ホストマシンにAIコーディングツールをインストールしないでください。 代わりにこのコンテナを使用してください。
  2. docker-compose.ymlにバインドマウントを追加しないでください。 名前付きボリュームの設定は意図的なものです。
  3. コンテナ内で使用するSSHキーを定期的にローテーションしてください。
  4. 共有前に.envを確認してください。 APIキーが含まれており、SSH秘密鍵が含まれている場合もあります。
  5. 定期的に更新してセキュリティパッチを適用してください:
Terminal window
docker compose pull && docker compose up -d