Apiiro、Claude Code設定ファイルから秘密情報を発見
- •Apiiroの研究者は公開GitHubリポジトリ1,994件から秘密情報2,539件を発見し、63組織に影響したと報告
- •公開されたClaude Code設定ファイル104,185件のうち1,122件に秘密情報があり、スキャナーは215件を検出できず
- •「はい、今後は確認しない」を選ぶと、Claude Codeは承認したコマンドをプロジェクトの権限設定ファイルに保存
Apiiroの研究者シュムリク・コーエン(Shmulik Cohen)とマタン・ギラディ(Matan Giladi)は2026年11月5日、開発者がコマンドを承認すると、コーディングエージェントが秘密情報をプロジェクトファイルに保存する場合があると報告しました。公開GitHubリポジトリ1,994件から本物の秘密情報2,539件を見つけ、63組織に影響していたとしています。データベースのパスワード、クラウドキー、APIトークン、SSHログイン情報が含まれ、ある企業は自社のキーが有効な状態だったと確認しました。
Claude Codeはシェルコマンドの実行前に確認を求めます。利用者が「はい、今後は確認しない」を選ぶと、承認したコマンドを権限ルールとして「.claude/settings.local.json」に保存します。設定ファイルからコピーした秘密情報がコマンドに含まれていれば、その情報もルールに保存されます。このファイルは開発者の端末内に置く想定で、リポジトリ内に作成した場合、Claude Codeは利用者全体のGit除外リストに追加します。しかし、後からそのフォルダーがリポジトリになった場合や、ファイルがすでにコミットされていた場合は防げません。リポジトリ独自の「.gitignore」にはルールが追加されません。Apiiroは、この挙動はモデルではなくClaude Codeによるものだとし、Opus 5.5とFable 5.1で再現しました。
GitHubで見つかった公開設定ファイル「.claude/settings.local.json」104,185件のうち、1,122件に本物の秘密情報がありました。合計1,379件の異なる秘密情報が含まれ、内訳はプロバイダーキー636件と、公開ホスト向けのパスワードやトークン743件でした。過去のファイル版からは509リポジトリで734件を発見し、74リポジトリのフォーク211件にも同じ秘密情報がありました。追跡できた秘密情報がある1,105リポジトリのうち539件では、Claudeが共同作成者として記録されたコミットによってファイルが変更されていました。
公開された許可リストに本物の秘密情報があった組織は63に上りました。例として、データベース企業のクラウドAPIキー、本番環境のAzure Postgresパスワード、Squareの本番トークン、医療記録データベースの所有者パスワードが挙げられました。公開サーバー向けSSH認証情報も43件ありました。関連するエージェントファイルでは、共有設定ファイル「.claude/settings.json」76,011件中298件、87リポジトリの会話記録ファイル120件、9リポジトリのメモリーファイル、引き継ぎまたはデプロイ用メモ33件から秘密情報を発見しました。VS Code Copilotの自動承認設定でも、173リポジトリ中9件に影響がありました。
秘密情報スキャナーは多くの認証情報を検出できませんでした。Gitleaksが検出したのは、本物の秘密情報を含む1,122ファイルのうち564件、TruffleHogは643件で、215件はどちらにも検出されませんでした。Apiiroは主な理由として、「PGPASSWORD=」「sshpass -p」やBearerヘッダーのような通常のコマンド行に書かれたパスワードが、一般的なプロバイダーキーの形式と一致しないことを挙げました。同じパターンは、エージェントの会話記録、メモリー、引き継ぎメモにも現れる可能性があると研究者は述べています。
Apiiroによると、集計対象のファイルはすべて2026年11月2日時点で各リポジトリの既定ブランチにあり、本物の秘密情報が見つかったリポジトリでは、ファイルが初めてコミットされた時期の中央値は217日前でした。研究者は2026年11月2日と3日に、該当する組織の所有者へ連絡しました。認証情報を見つけた場合は更新し、ローカルファイルから秘密情報を含むルールを削除するよう勧めています。削除してもGitの履歴、フォーク、クローンにはコピーが残るためです。また、コマンドに秘密情報を直接入力せず「$DB_URL」のような環境変数を使うこと、文字どおりのコマンドではなくコマンドのパターンを承認すること、エージェントのフォルダーとリポジトリの履歴からコマンド内のパスワードをスキャンすることも提案しました。
調査では2026年11月1日から3日まで、GitHubのコードとコミットを読み取り専用で検索しました。Apiiroはローカル設定ファイル104,185件と共有設定ファイル76,011件をダウンロードし、ファイル履歴は43,120リポジトリで確認しました。研究者は履歴調査の件数を最低値と説明しています。認証情報を使ったり、動作を試したり、接続先のホストに連絡したりはしていません。「本物の秘密情報」は、プロバイダーの形式に一致するか公開ホストと組み合わされた認証情報を指し、実際に使えると確認された認証情報ではありません。独立した大規模言語モデルの評価者が、マスキングした文脈で残る異なる値2,774件を評価し、評価結果と研究者の基準が一致した2,539件を本物の秘密情報と数えました。