Claude Code のセキュリティの仕組みとプロンプトインジェクション対策

結論

  • Claude Code(Anthropic 社が提供する、ターミナルで動く AI コーディングエージェント)は、権限モードで「確認なしにできる操作」を決める設計です。手動モードでは編集やコマンド実行の前に確認が入ります。
  • プロンプトインジェクション(悪意ある文章で AI の指示を書き換えようとする手法)には、権限確認やネットワーク系コマンドの自動承認なしなどで備えます。ただし公式も、完全に防げるシステムはないとしています。
  • 社内で配るときは、承認前の確認、サンドボックスなどの隔離、管理設定による共通ルールを組み合わせます。

権限モードで何ができるかを決める

公式ドキュメントによると、セッションの権限モードが、Claude が事前確認なしに実行できる操作を決めます。執筆時点(2026年10月)では、自動モード(Auto mode)がターミナルと VS Code の対話セッションの標準の開始モードです。以前のバージョンや他の画面での開始モードは、公式ドキュメントで確認してください。

  • 自動モード: 別の分類モデルが利用者の代わりに操作を確認し、安全でないと判断したものをブロックします。明示した確認ルールと拒否ルールは有効で、組織側で自動モードをオフにもできます。
  • 手動モード(Manual mode): 読み取り専用で始まり、ファイル編集、テスト、コマンド実行の前に確認が入ります。1回だけ許可するか、以後も許可するかを選べます。ls、cat、git status などの組み込みの読み取り専用コマンドは確認なしで動きます。

承認前にコードやコマンドの安全性を確認する責任は利用者にある、と公式ドキュメントに明記されています。

出典: Security

組み込みの保護と、境界の注意点

  • サンドボックス化した Bash ツール: ファイルシステムとネットワークを分離し、安全性を保ちつつ確認を減らします。/sandbox で自律的に作業できる境界を設定します。
  • 作業ディレクトリの境界: 手動モードでは、起動したフォルダとサブフォルダの外をファイルツールで読み書きする前に確認が入ります。
  • 確認疲れ対策: 安全なコマンドをユーザー単位、コードベース単位、組織単位で許可リストに入れられます。
  • Accept Edits モード: 作業ディレクトリ内のファイル編集と、mkdir、touch、rm、mv、cp、sed などの決まったファイルシステム系 Bash コマンドを自動承認します。他の Bash コマンドや範囲外のパスは確認が入ります。

注意点として、作業ディレクトリの境界は許可の確認です。承認した Bash コマンドは、利用者のアカウントが書ける場所ならどこにでも書き込めます。OS レベルで Bash コマンドを制限するには、サンドボックスを有効にします。

出典: Security

プロンプトインジェクション対策の中身

プロンプトインジェクションは、悪意あるテキストを差し込んで AI アシスタントの指示を上書き・操作しようとする手法です。公式ドキュメントでは、次の保護が挙げられています。

  • 権限システム: 手動モードでは、機微な操作に明示的な承認が必要です。
  • ネットワークコマンドの承認: curl や wget は既定で自動承認されません。手動モードでは他の読み取り専用でない Bash コマンドと同様に確認が入り、Bash(curl *) のような許可ルールで通すこともできます。実行させたくない場合は permissions.deny に追加します。拒否ルールは書かれたとおりのコマンドに一致するため、コマンド文字列に依存しない制御にはサンドボックスのネットワーク分離を使います。
  • Web ページの要約: 多くの取得では、WebFetch が別のモデル呼び出しでページを処理し、Claude は生のページではなくその回答を受け取ります。
  • 信頼の確認: 信頼していないフォルダで対話セッションを開始すると、ワークスペースの信頼ダイアログが出ます。-p のセッションでは、このダイアログも .mcp.json の承認も出ません。
  • コマンドインジェクション検出: 手動モードでは、完全に解析できない Bash コマンドの前に確認が入ります。Bash(git *) のようにコマンドの一部への許可ルールがあっても、この確認は省略されません。
  • 一致しないコマンドは承認必須: 手動モードでは、ルールに一致しないコマンドは既定で承認が必要です。

Windows では、WebDAV を有効にしたり、WebDAV のサブディレクトリを含みうるパスへのアクセスを許したりしないよう、公式が推奨しています。有効にすると、権限システムを迂回してリモートホストへのネットワークリクエストが発生しうるためです。

出典: Security

MCP・クラウド実行・Remote Control の注意

Claude Code は MCP(Model Context Protocol)サーバーに接続できます。プロジェクトのサーバーは .mcp.json で定義できますが、他のスコープのサーバー、claude.ai のコネクタ、プラグインが追加するサーバーはリポジトリの外で設定されます。そのため .mcp.json を見るだけでは、読み込まれうるサーバーを全部は把握できません。公式は、自作するか信頼できる提供元のものを使うことを勧めています。Anthropic はコネクタを掲載基準でレビューしますが、MCP サーバーのセキュリティ監査や管理は行いません。組織で制限するには、管理された MCP 設定を使います。

Anthropic がホストするクラウドセッションでは、セッションごとに分離された VM で動き、ネットワークは既定で制限されます。無効化や特定ドメインのみの許可にも設定できます。GitHub の認証情報は暗号化されてサーバー側に保存され、VM には入りません。操作は監査ログに記録されます。自社のセルフホスト環境に振り分けた場合、分離、外向き通信、git 認証情報は自社の構成の責任です。

Remote Control では、コード実行とファイルアクセスはローカルのままです。ただし接続中は、会話を端末間で同期するためにセッションの記録が Anthropic のサーバーに保存されます。クラウド VM やサンドボックスは使われません。

出典: Security

社内で試す・配るときの運用

信頼できない内容を扱うときの推奨は、次のとおりです。

  1. 提案されたコマンドを、承認前に確認する
  2. 信頼できない内容を Claude に直接パイプで渡さない
  3. 重要なファイルへの変更を確認する
  4. 特に外部の Web サービスとやり取りするときは、仮想マシン(VM)でスクリプト実行やツール呼び出しをする
  5. 不審な挙動は /feedback で報告する
  • 機微なコードでは、プロジェクト単位の権限設定を使い、サンドボックスランタイムか開発コンテナで Claude Code のプロセス全体を動かし、/permissions で権限設定を定期的に見直します。
  • チームでは、管理設定で組織の基準を強制し、承認済みの権限設定をバージョン管理で共有し、OpenTelemetry メトリクスで利用状況を監視します。セッション中の設定変更は ConfigChange フックで監査またはブロックできます。

公式ドキュメントは、これらの保護でリスクは大きく下がるが、あらゆる攻撃に完全に耐えるシステムはないとして、基本のセキュリティ対策を続けるよう求めています。

出典: Security

よくある質問

curl や wget は自動で実行されますか?

公式ドキュメントによると、curl や wget は既定で自動承認されません。手動モードでは確認が入ります。実行させたくない場合は permissions.deny に追加します。

出典: Security

手動モードなら、作業フォルダの外に書き込まれませんか?

ファイルツールでは確認が入ります。ただし境界は許可の確認なので、承認した Bash コマンドは利用者のアカウントが書ける場所に書き込めます。OS レベルで制限するには、サンドボックスを有効にします。

出典: Security

MCP サーバーの安全性は Anthropic が確認してくれますか?

公式ドキュメントでは、Anthropic はコネクタを掲載基準でレビューするものの、MCP サーバーのセキュリティ監査や管理は行わないとされています。自作するか、信頼できる提供元のものを使うことが勧められています。

出典: Security

関連する無料ツール

Claude Code 権限設定(settings.json)ジェネレーター: deny / ask / allow のルールを選ぶと、置き場所つきで settings.json を出力します。配る前の設定の下書きに使えます。

参考(執筆時点)

この記事は、上の出典の内容を中小DXラボが要約・再構成したものです。仕様は変わることがあります。社内で使う・配る前に、公式ドキュメントで最新の情報を確認してください。