セキュリティホールはどこにあるのか
前回の動画でClaude Codeの仕組みが理解できたところで、どこで脆弱性が発生するのか、セキュリティホールがあるのかを解説します。結論から言うと、Claude Codeを使う上でのセキュリティホールの大部分は、Claude Codeと Claudeモデルのやり取りの部分で発生すると考えています。
2つの脆弱性ポイント
1. やってはいけない操作を指示してしまう
私たちがClaude Codeに「ファイルを編集して」「ファイルを読み込んで」「機能を実装して」とお願いすると、Claude Codeは Claudeモデルに「こういう依頼が来たがどうすればいいか」と尋ねます。このときClaudeモデルが、たとえば次のような操作を呼び出す可能性があります。
- 環境変数(
.env)の中身を確認する - ファイル全体を削除する
- Gitに一度すべてプッシュする
私たちが「これを読んで」「削除して」といった指示を出してしまうと、Claude Codeはそれに従って実行してしまう、というのが1つ目のポイントです。
2. 秘密情報がモデルに渡りログに残る
Claude Codeが環境変数を読みに行き、その結果を Claudeモデルに返すと、秘密鍵やシークレットキーがモデルに渡ってしまいます。そうすると、APIキーなどがAnthropicのサーバーにログとして残ります。
Anthropicレベルの企業はセキュリティの非常に強いAIを開発しているところなので、セキュリティリスクはかなり低いとは思いますが、漏洩の可能性がゼロではない、という点は意識しておく必要があります。
対策の考え方
基本的には、.envファイルのようなシークレットキーを管理しているものは Claude Codeに読み込ませない、具体的には Readツールを実行させない設定をするのがセキュリティ的には正しいと言われています。要はパーミッション設計です。
Claude Codeには--dangerously-skip-permissionsという、すべてを実行させるモード(bypassPermissions)があります。これを使うと、環境変数の読み込みや削除コマンドが勝手に実行されてしまう可能性があるため、基本的には非推奨とされています。
ただし、これは開発速度とのトレードオフです。Anthropicを完全に信用して開発速度を上げたいという場合はそれでも構いませんが、将来的に会社の規模やサービスのユーザーが増えてくると脆弱性が気になってくるため、個人的には環境変数は読み込ませないほうがよいと考えています。
すでに読み込ませてしまった場合
すでにAPIキーを読み込ませてしまった場合でも、APIキーは再発行(リフレッシュ)できます。一度APIキーを破棄して新しいキーで実装を続ければ、サーバーログに残った古いAPIキーは効力を失います。心当たりがある場合は再発行を実行するとよいでしょう。
脆弱性のポイントが分かったところで、次の動画からは、どのような設定をすればこのセキュリティホールを回避できるのか、実際の守り方を解説していきます。パーミッション設計、.claudeignoreや CLAUDE.md、サンドボックスモード、MCPサーバーを安全につなぐ方法などを扱っていきます。