Claude Codeの設定ファイルがGitHubで秘密情報をさらした理由
導入
AIコーディングエージェントは、コードを提案するだけでなく、開発者に代わってシェルコマンドを実行するようになっている。便利になる一方で、権限設定や実行履歴を保存するローカルファイルが、新しい情報漏えいの経路になり得る。セキュリティ企業Apiiroは、Claude Codeの設定ファイルが公開GitHubリポジトリにアップロードされ、その一部にデータベースのパスワード、APIトークン、秘密鍵、rootログイン情報が含まれていたと報告した。
何が起きたのか
Claude Codeでは、ユーザーが自動実行されるシェルコマンドを承認すると、その許可ルールを保存できる。「はい、今後は尋ねない」に相当する選択をすると、ルールはローカルの.claude/settings.local.jsonに記録される。パターンとして保存される場合もあるが、元のコマンドがそのまま書き込まれる場合もある。コマンドラインにパスワードやトークンが直接含まれていれば、それらも設定ファイルに残ることになる。
ファイルが安全な開発者の端末内にとどまる限り、リスクは比較的限定的だ。しかし、ソース管理に入ると状況が変わる。Anthropicのドキュメントでは、このファイルは通常、開発者のグローバルな.gitignoreの対象になると説明されている。ただし、グローバル設定はリポジトリ単位の防御とは異なる。別の端末へプロジェクトをコピーした場合や、後からディレクトリをGitリポジトリにした場合、手動でステージングした場合には保護が機能しない可能性がある。Apiiroは、ユーザーが明示的に開始していない状況で、Claude Codeが設定ファイルの変更をコミットした例も指摘している。
主な発見
- 公開GitHubにアップロードされたClaude Codeのローカル設定ファイルを10万件以上確認。
- 約1100件は63組織に関連し、APIトークン、データベースパスワード、秘密鍵などを含んでいた。
- 元のリポジトリから削除しても、GitHubのフォークに残る場合がある。
- 発見された秘密情報のうち約215件は、gitleaksとTruffleHogでは検出されなかった。
- こうした懸念は2025年8月にもバグ報告で指摘されていたが、報告は活動がないまま60日後に終了していた。
意味すること
今回の問題は、単なる.gitignoreの設定漏れではない。AIエージェントでは、権限の承認、コマンドの実行、ローカル状態の保存、バージョン管理への反映が、1回の対話を通じて連続して起こり得る。従来の開発では、設定ファイルを編集してコミットする際に人間が意識する場面が多かった。エージェント利用時には、開発者が成果物のコードだけを確認し、補助ファイルを見落とす可能性がある。
Claude Code側は、問題を防ぐ方法を検討中だと説明し、自動モードや秘密情報スキャナーの利用を推奨している。製品へのスキャン機能の組み込みも検討されているという。ただし、自動モードでも機密コマンドが設定ファイルに保存される可能性はあり、既存のスキャナーもすべてを検出できるわけではない。
開発者は、プロジェクト固有の.gitignoreに設定ファイルを明示的に追加し、コミット前にステージング内容を確認する必要がある。漏えいが判明したパスワードやトークンは直ちに無効化・再発行し、現在のファイルだけでなくコミット履歴やフォークも調べるべきだ。AIコーディングエージェントには、プロンプト対策だけでなく、ローカル状態、権限ルール、自動コミット、認証情報を安全に扱う初期設定が求められる。
コメント
ログイン状態を確認中…
コメントを読み込み中…