概要

Claude Codeはネイティブサンドボックス化機能を備えており、エージェント実行のためのより安全な環境を提供しながら、継続的なパーミッションプロンプトの必要性を軽減します。各bashコマンドのパーミッションを求める代わりに、サンドボックス化は事前に定義された境界を作成し、Claude Codeがリスク軽減のもとでより自由に動作できるようにします。 サンドボックス化されたbashツールはOS レベルのプリミティブを使用して、ファイルシステムとネットワークの両方の分離を実施します。

サンドボックス化が重要な理由

従来のパーミッションベースのセキュリティでは、bashコマンドのたびにユーザーの承認が必要です。これはコントロールを提供しますが、以下の問題につながる可能性があります:
  • 承認疲れ:繰り返し「承認」をクリックすることで、ユーザーが承認内容に注意を払わなくなる可能性があります
  • 生産性の低下:継続的な中断は開発ワークフローを遅くします
  • 自律性の制限:Claude Codeは承認を待っている間、効率的に動作できません
サンドボックス化はこれらの課題に以下の方法で対処します:
  1. 明確な境界を定義する:Claude Codeがアクセスできるディレクトリとネットワークホストを正確に指定します
  2. パーミッションプロンプトを削減する:サンドボックス内の安全なコマンドは承認を必要としません
  3. セキュリティを維持する:サンドボックス外のリソースへのアクセス試行は即座に通知をトリガーします
  4. 自律性を有効にする:Claude Codeは定義された制限内でより独立して実行できます
効果的なサンドボックス化には、ファイルシステムとネットワーク分離の両方が必要です。ネットワーク分離がない場合、侵害されたエージェントはSSHキーなどの機密ファイルを流出させる可能性があります。ファイルシステム分離がない場合、侵害されたエージェントはシステムリソースにバックドアを仕掛けてネットワークアクセスを取得する可能性があります。サンドボックス化を設定する際は、設定がこれらのシステムのバイパスを作成しないことを確認することが重要です。

動作方法

ファイルシステム分離

サンドボックス化されたbashツールはファイルシステムアクセスを特定のディレクトリに制限します:
  • デフォルト書き込み動作:現在の作業ディレクトリとそのサブディレクトリへの読み取りおよび書き込みアクセス
  • デフォルト読み取り動作:特定の拒否ディレクトリを除く、コンピュータ全体への読み取りアクセス
  • ブロックされたアクセス:明示的なパーミッションなしに現在の作業ディレクトリ外のファイルを変更することはできません
  • 設定可能:設定を通じてカスタム許可および拒否パスを定義します

ネットワーク分離

ネットワークアクセスはサンドボックス外で実行されるプロキシサーバーを通じて制御されます:
  • ドメイン制限:承認されたドメインのみがアクセス可能です
  • ユーザー確認:新しいドメインリクエストはパーミッションプロンプトをトリガーします
  • カスタムプロキシサポート:上級ユーザーは送信トラフィックにカスタムルールを実装できます
  • 包括的なカバレッジ:制限はコマンドによってスポーンされたすべてのスクリプト、プログラム、およびサブプロセスに適用されます

OS レベルの実施

サンドボックス化されたbashツールはオペレーティングシステムのセキュリティプリミティブを活用します:
  • Linux:分離にbubblewrapを使用します
  • macOS:サンドボックス実施にSeatbeltを使用します
これらのOS レベルの制限により、Claude Codeのコマンドによってスポーンされたすべての子プロセスが同じセキュリティ境界を継承することが保証されます。

はじめに

サンドボックス化を有効にする

/sandboxスラッシュコマンドを実行することでサンドボックス化を有効にできます:
> /sandbox
これにより、デフォルト設定でサンドボックス化されたbashツールが有効になり、現在の作業ディレクトリへのアクセスが許可され、機密システムロケーションへのアクセスがブロックされます。

サンドボックス化を設定する

settings.jsonファイルを通じてサンドボックス動作をカスタマイズします。完全な設定リファレンスについては設定を参照してください。
パターンサポート:
  • パスは絶対パス(/home/user)、相対パス(./src)、ホームディレクトリ(~)、およびワイルドカード(**/*.json)をサポートします
  • ドメインは完全一致(github.com)、ワイルドカード(*.npmjs.org)、およびサブドメインをサポートします

セキュリティ上の利点

プロンプトインジェクションからの保護

攻撃者がプロンプトインジェクションを通じてClaude Codeの動作を正常に操作した場合でも、サンドボックスはシステムのセキュリティを確保します: ファイルシステム保護:
  • ~/.bashrcなどの重要な設定ファイルを変更することはできません
  • /bin/のシステムレベルファイルを変更することはできません
  • Claudeパーミッション設定で拒否されたファイルを読み取ることはできません
ネットワーク保護:
  • 攻撃者が制御するサーバーにデータを流出させることはできません
  • 許可されていないドメインから悪意のあるスクリプトをダウンロードすることはできません
  • 未承認のサービスへの予期しないAPI呼び出しを行うことはできません
  • 明示的に許可されていないドメインに連絡することはできません
監視とコントロール:
  • サンドボックス外のすべてのアクセス試行はOS レベルでブロックされます
  • 境界がテストされるとすぐに通知を受け取ります
  • リクエストを拒否、1回だけ許可、または設定を永続的に更新することを選択できます

攻撃面の削減

サンドボックス化は以下からの潜在的な損害を制限します:
  • 悪意のある依存関係:有害なコードを含むNPMパッケージまたは他の依存関係
  • 侵害されたスクリプト:セキュリティ脆弱性を持つビルドスクリプトまたはツール
  • ソーシャルエンジニアリング:ユーザーに危険なコマンドを実行させるための攻撃
  • プロンプトインジェクション:Claudeに危険なコマンドを実行させるための攻撃

透過的な操作

Claude Codeがサンドボックス外のネットワークリソースにアクセスしようとする場合:
  1. 操作はOS レベルでブロックされます
  2. すぐに通知を受け取ります
  3. 以下を選択できます:
    • リクエストを拒否する
    • 1回だけ許可する
    • サンドボックス設定を更新して永続的に許可する

セキュリティの制限

  • ネットワークサンドボックス化の制限:ネットワークフィルタリングシステムは、プロセスが接続を許可されるドメインを制限することで動作します。プロキシを通過するトラフィックをそれ以上検査することはなく、ユーザーはポリシーで許可するドメインが信頼できるものだけであることを確認する責任があります。
ユーザーはgithub.comのような広いドメインを許可することから生じる可能性のあるリスク、およびデータ流出を可能にする場合があることに注意する必要があります。また、場合によってはドメインフロンティングを通じてネットワークフィルタリングをバイパスすることが可能な場合があります。
  • Unixソケット経由の権限昇格:allowUnixSockets設定は、サンドボックスバイパスにつながる可能性のある強力なシステムサービスへのアクセスを不注意に付与する可能性があります。たとえば、/var/run/docker.sockへのアクセスを許可するために使用される場合、これはdockerソケットを悪用してホストシステムへのアクセスを効果的に付与します。ユーザーはサンドボックスを通じて許可するUnixソケットを慎重に検討することをお勧めします。
  • ファイルシステムパーミッション昇格:過度に広いファイルシステム書き込みパーミッションは権限昇格攻撃を可能にする可能性があります。$PATHの実行可能ファイルを含むディレクトリ、システム設定ディレクトリ、またはユーザーシェル設定ファイル(.bashrc.zshrc)への書き込みを許可すると、他のユーザーまたはシステムプロセスがこれらのファイルにアクセスするときに異なるセキュリティコンテキストでのコード実行につながる可能性があります。
  • Linuxサンドボックス強度:Linux実装は強力なファイルシステムとネットワーク分離を提供しますが、特権なしの名前空間なしでDocker環境内で動作できるようにするenableWeakerNestedSandboxモードが含まれています。このオプションはセキュリティを大幅に弱め、追加の分離が別の方法で実施される場合にのみ使用する必要があります。

高度な使用法

カスタムプロキシ設定

高度なネットワークセキュリティが必要な組織の場合、カスタムプロキシを実装して以下を実行できます:
  • HTTPSトラフィックを復号化して検査する
  • カスタムフィルタリングルールを適用する
  • すべてのネットワークリクエストをログに記録する
  • 既存のセキュリティインフラストラクチャと統合する
{
  "sandbox": {
    "httpProxyPort": 8080,
    "socksProxyPort": 8081,
  }
}

既存のセキュリティツールとの統合

サンドボックス化されたbashツールは以下と連携します:
  • IAMポリシーパーミッション設定と組み合わせて多層防御を実現します
  • 開発コンテナdevcontainersと一緒に使用して追加の分離を実現します
  • エンタープライズポリシー管理設定を通じてサンドボックス設定を実施します

ベストプラクティス

  1. 制限的に開始する:最小限のパーミッションで開始し、必要に応じて拡張します
  2. ログを監視する:サンドボックス違反試行を確認してClaude Codeのニーズを理解します
  3. 環境固有の設定を使用する:開発環境と本番環境で異なるサンドボックスルールを使用します
  4. パーミッションと組み合わせる:包括的なセキュリティのためにサンドボックス化とIAMポリシーを一緒に使用します
  5. 設定をテストする:サンドボックス設定が正当なワークフローをブロックしないことを確認します

オープンソース

サンドボックスランタイムは、独自のエージェントプロジェクトで使用するためのオープンソースnpmパッケージとして利用可能です。これにより、より広いAIエージェントコミュニティがより安全で安全な自律システムを構築できるようになります。これは、実行したい他のプログラムをサンドボックス化するためにも使用できます。たとえば、MCPサーバーをサンドボックス化するには、以下を実行できます:
npx @anthropic-ai/sandbox-runtime <command-to-sandbox>
実装の詳細とソースコードについては、GitHubリポジトリを参照してください。

制限事項

  • パフォーマンスオーバーヘッド:最小限ですが、一部のファイルシステム操作は若干遅くなる可能性があります
  • 互換性:特定のシステムアクセスパターンが必要なツールの中には、設定調整が必要な場合や、サンドボックス外で実行する必要がある場合があります
  • プラットフォームサポート:現在、LinuxとmacOSをサポートしています。Windowsサポートは計画中です

関連項目

  • セキュリティ - 包括的なセキュリティ機能とベストプラクティス
  • IAM - パーミッション設定とアクセス制御
  • 設定 - 完全な設定リファレンス
  • CLIリファレンス - -sbを含むコマンドラインオプション