Claude Codeの実行許可設定から認証情報が流出、約1100の公開リポジトリで検出
出典: github.com

Anthropicの開発支援AI「Claude Code」で、コマンド実行時の確認を省く設定にパスワードなどが保存され、GitHubの公開リポジトリへ流出する問題が起きています。セキュリティ企業Apiiroの調査では、設定ファイルが10万超の公開リポジトリで見つかり、そのうち約1100に認証情報が含まれていました。実行許可の記録に、認証情報を含むコマンド全文が残る仕組みが関係しています。

「今後は確認しない」の選択でコマンド全文を保存

Claude Codeは、開発者のコンピューターでシェルコマンドを実行する前に許可を求めます。「Yes, and don't ask again」を選ぶと、プロジェクト内の.claude/settings.local.jsonに実行を許可するルールが作られます。

このルールには汎用的なパターンが使われる場合もあれば、入力したコマンドがそのまま保存される場合もあります。コマンドにパスワードやAPIトークン、管理者アカウントの認証情報が含まれていれば、それらも暗号化されていない文字列として設定ファイルに残ります。

Apiiroが検出した認証情報は63組織に関係し、APIトークン、データベースのパスワード、秘密鍵、管理者アカウントのログイン情報が含まれていました。APIトークンはサービスへのアクセス認証に使う情報で、秘密鍵も認証などに用いられます。

個人の除外設定と、追跡済みファイルの扱い

Claude Codeには、この設定ファイルをGitのグローバル除外設定に追加する仕組みがあります。Gitはファイルの変更履歴を管理するツールで、除外設定は特定のファイルを新たな追跡対象に入れないために使われます。

ただし、グローバル除外設定は開発者個人のGit設定に保存され、リポジトリ自体には含まれません。別のコンピューターへリポジトリを複製した場合や、設定ファイルがあるフォルダーを後からリポジトリにした場合には、その除外設定が適用されていないことがあります。

また、リポジトリ内の.gitignoreに後からファイル名を追加しても、すでにGitが追跡しているファイルは追跡対象のままです。追跡を解除するgit rm --cachedは、作業用の実ファイルを残して管理対象から外す操作ですが、過去のコミットに保存された内容は残ります。

Apiiroは、Claude Codeが利用者の操作なしに設定ファイルの変更をコミットするケースも報告しています。一方、Claude CodeチームのBoris Cherny氏は、設定ファイルはほぼ常にソース管理へ入れるべきではなく、問題のケースではファイルが手動で作成され、コミットされたと説明しました。

既存の検出ツールでも215件を見逃す

Apiiroの調査では、公開されていた認証情報のうち215件が、秘密情報を探すオープンソースの検査ツール「Gitleaks」と「TruffleHog」のどちらでも検出されませんでした。

Gitleaksは、文字列のパターンを指定する正規表現に加え、文字列のランダムさを測るエントロピーや、検出対象から外す許可リストを組み合わせます。汎用ルールでは、tokenやpasswordなどの語、値を代入する記号、候補文字列の長さや文字種を手がかりにします。

今回のようにコマンドへ埋め込まれた認証情報を探す際にも、こうした検出条件が関わります。Zachary Rice氏は、正規表現だけで明らかなダミー値と秘密情報らしい値を区別することには限界があるとしています。

TruffleHogには、プロジェクト独自のパターンを探すカスタム検出機能があります。キーワードをきっかけに正規表現で候補を探し、必要に応じて検証先へ問い合わせて有効性を調べる構成で、検証を設定しない場合は候補が未検証として扱われます。設定ファイルに直接書かれた一般的なパスワードなども、カスタム検出ルールの対象にできます。

開発チームは保存方法の改善と検査機能を検討

この問題は2025年8月にもClaude CodeのGitHubリポジトリへ報告されていました。その後、除外設定が追加されないケースや、Gitの除外対象ではない別ファイルへ機密性のあるコマンドが書き込まれるケースも報告されましたが、これらは60日間更新がないことを理由に自動で閉じられ、修正されませんでした。

Cherny氏はHacker News上で、防止策を調べていると述べました。また、分類器を使って定型的な実行許可の確認を処理する「auto mode」に言及しましたが、このモードでも機密性のあるコマンドが設定ファイルに保存され得るとの指摘を受け、改善方法を検討していると応じています。Claude Code自体へ秘密情報の検査機能を組み込むことも検討中です。

ファイルの削除後も残る認証情報

公開された設定ファイルを削除しても、削除前に作られたフォーク、つまりリポジトリから分岐した複製には認証情報が残ります。履歴を書き換えた場合も、ほかの利用者の複製やフォーク、キャッシュ、変更提案であるプルリクエストの参照先に、機密情報を含むコミットが残る場合があります。

流出した認証情報の失効・再発行は、その値によるアクセスを止める処置です。GitHubは、パスワードやトークンが漏れた場合、履歴の削除より先に失効や更新を行う手順を示しています。

履歴の書き換えは、過去のコミットから機密情報を取り除く処理です。対象以降のコミットを識別するハッシュ値が変わり、共同開発者との調整も伴います。書き換え前の複製から変更を再び送信すると、削除した機密情報がリポジトリへ戻る場合もあります。