2026年11月5日、ソフトウェアセキュリティ企業Apiiroは調査レポートを公表し、AnthropicのAIプログラミングアシスタント「Claude Code」に認証情報の組織的な流出経路が存在することを確認した。開発者がツールの権限確認ダイアログで「Yes, and don't ask again(はい、今後は確認しない)」を選択すると、その承認操作によって完全なシェルコマンド——データベースパスワード、APIキー、認証トークンを含む——がプロジェクトディレクトリ内の.claude/settings.local.jsonファイルに平文で書き込まれる。このファイルがコードとともにGitHubの公開リポジトリにプッシュされると、誰でもその認証情報を読み取れる状態になる。ApiiroのリサーチャーがGitHub上の104,185件のこのようなファイルを調査したところ、1,122件のファイルで少なくとも1件の有効な認証情報が発見され、合計1,379件の独立した認証情報が確認された。さらにGitの履歴コミット、共有設定ファイル、エージェントの会話ログを合わせて分析した結果、流出総数は2,539件に上り、1,994のリポジトリと63の組織に影響が及んでいることが判明した。
流出した認証情報の種類は幅広く、Apiiroの集計によると、379件のデータベースパスワードと122件のSupabaseサービスロールキーが最も多い種別を占めた。その他にも、43件のSSHログイン認証情報(一部はサーバーのrootパスワードを含む)、42件のGitHub・GitLab・npmトークン、23件のAWSキー、さらにクラウドプラットフォームの認証情報と秘密鍵も含まれていた。Apiiroが挙げた典型的なケースには、あるデータベースベンダー自身の管理者レベルのクラウドキー、本番環境のAzure PostgreSQLパスワード、Squareの本番トークン、医療記録データベースのオーナーパスワードなどが含まれる。関係機関への通知時点で、少なくとも1社がその認証情報が発見時点で有効な状態にあったことを確認している。
通常の操作が公開流出に至るまで
今回の流出を理解するには、まずClaude Codeの権限設計の本来の意図を理解する必要がある。ターミナル駆動のAIプログラミングエージェントとして、Claude Codeはシステムを変更する可能性があるコマンドや機密リソースに関わるコマンドを実行する前に、開発者に確認を求める——この確認ステップは本来セキュリティの防護柵として機能するものだ。しかし作業フローへの干渉を減らすため、ツールには「今後は確認しない」オプションが用意されている。これを選択すると、そのコマンドの完全な文字列が「許可ルール」として記録され、以降は確認なしに直接実行される。
問題は「完全な文字列」という点にある。開発者がClaude Codeにデータベース接続のテスト、API認証のデバッグ、ログイン失敗のトラブルシューティングを依頼すると、Claudeが生成するコマンドには設定ファイルから読み取った認証情報——パスワード付きのJDBC接続文字列、Bearerトークンを含むcurlリクエスト、APIキーを含む環境変数の代入文など——が直接含まれていることが多い。開発者が「今後は確認しない」をクリックすると、認証情報を含むそのコマンドがそのままsettings.local.jsonに書き込まれる。その後、通常のgit addとgit pushの操作一つで、それが全世界に公開されてしまう。
Apiiroはこの挙動をClaude モデルのOpus 5.5とFable 5.1を用いて再現し、再現性があることを確認した。この経路には攻撃技術やアカウント乗っ取りといった要素は一切含まれない——通常の開発承認フローの中で完全に発生するものであり、ツールの設計上の挙動と開発者の習慣との相互作用から生じるものだ。
組み込みの防護機能はなぜ機能しなかったか
Anthropicの設計では、Claude CodeがGitリポジトリ内で初めてsettings.local.jsonを書き込む際、そのファイルパスをユーザーのグローバルなGit除外リスト(global git excludes)に追加し、そのコンピュータ上のすべてのリポジトリでこのファイルを無視するようにする仕組みになっている。これは実際に存在する防護措置だが、カバー範囲に3つの重大な盲点がある。
第一に、グローバル除外ルールは書き込み時のコンピュータにのみ存在し、プロジェクトディレクトリを通じて他の協力者やCI/CDシステムには引き継がれない。第二に、Claude Codeはプロジェクト自身の.gitignoreファイルに除外エントリを追加しないため、別のマシンでプロジェクトをクローンした場合、そのファイルは保護されなくなる。第三に、すでにGitで追跡されているファイルに対してはグローバル除外ルールは一切効果を持たない——ファイルが一度リポジトリに取り込まれると、以降の変更も引き続きコミットされてしまう。Apiiroが追跡した1,105の影響を受けたリポジトリのうち、539のリポジトリで「Claude」を共同作者とするコミットがこのファイルを変更していたことが確認されており、多くのケースでClaudeエージェント自身がファイルをバージョン履歴にコミットしていたことが示唆される。
流出の永続性も直感を超えるものがある。Apiiroは74のリポジトリの211のフォーク(派生)コピーに、元のリポジトリとまったく同じ認証情報が含まれていることを発見した。また、509のリポジトリの履歴コミットに734件の追加の認証情報が存在し、多くの場合、現在のファイルは削除されているものの、Gitの履歴がクリーンアップされていなかった。これは、リポジトリからファイルを削除してもリスクは解消されないことを意味する——履歴スナップショットと派生コピーがその認証情報を保持し続けるためだ。
標準的なスキャンツールによるこの種の流出の検出は不完全だ。認証情報を含む1,122件のファイルのうち、主流の認証情報検出ツールであるGitleaksが検出できたのは564件にとどまり、検出率は約50%だった。別のツールTruffleHogのカバー率は異なるが、どちらも全量を識別できなかった。その一因は、「許可ルール」に保存されるコマンド文字列の形式が多様であり、認証情報が汎用的な正規表現パターンで現れるのではなく、完全なシェルコマンドのコンテキストの中に埋め込まれているためだ。
この発見が示す、より深層にある問題
一般の開発者にとって、核心的なリスクは認識の盲点にある。「今後は確認しない」は摩擦を減らすユーザビリティ機能であり、その使用場面は開発者が最も集中しており、副作用を検討する余裕が最もない瞬間——フロー状態での一クリックが、数週間後まで気づかれない結果を招く可能性がある。多くの開発者は設定ファイルに実際に何が書き込まれているかを能動的に確認しない。
企業のセキュリティチームにとって、このレポートはAIプログラミングエージェントの設定ファイル流出という新たな攻撃面の区分を提起している。従来の認証情報スキャンツールはコードファイル内にハードコードされた認証情報を対象として設計されており、JSON形式の「許可ルール」コマンド文字列への対応は不十分だ。企業の既存の開発規約——たとえば.gitignoreに特定のパスを含めることを義務付けるルールなど——は、AIツールが生成するローカル設定ファイルをカバーするよう更新が必要だ。
Anthropicにとっては、2025年8月の時点ですでにユーザーがClaude CodeのGitHubイシュートラッカーに平文での認証情報保存の問題を報告していたが、Anthropicから返答はなかったと報告されている。つまり、コミュニティが最初に問題を報告してからセキュリティ企業による大規模スキャンで確認されるまで、約15ヶ月のギャップがあったことになる。
AIプログラミングツール業界全体にとっては、Apiiroが16種類のプログラミングエージェントツールのドキュメントを比較した結果、この種の認証情報の永続化問題はClaude Code固有のものではないことが判明した——ただし、Claude Codeのユーザー規模と市場での知名度により、今回の公表による影響範囲と世論的インパクトはより大きなものとなっている。この発見は業界全体に対する試練となっている。自律性がますます高まるAIエージェントがファイルシステムの読み書きやコマンド実行を行える環境において、認証情報がどのように流れ、どこに保存され、誰が監視責任を持つのかは、すべてのツールが明確な答えを出さなければならない問いだ。
歴史的背景:GitHubにおける認証情報流出という構造的な難題
コードリポジトリへの認証情報の誤コミットは、10年以上続く古い問題だ。GitHubは2020年代から認証情報スキャンとプッシュプロテクション(push protection)機能を継続的に強化し、パートナーカバレッジも拡大し続けている。しかしこれらの仕組みは一つの前提に基づいている——認証情報が識別可能な形式でコードファイルに現れるという前提だ。
Claude Codeのケースは新型の変種を代表している。認証情報は開発者が手動でコードに貼り付けるのではなく、AIアシスタントの権限記録メカニズムによって、シェルコマンド文字列の形で設定ファイルに落とし込まれる。流出の起点は「人間の操作ミス」から「ツールの設計上の判断」へと移行した。この変化は、セキュリティスキャンツール、企業の監査ルール、そして開発者自身の認知モデルすべてに対応する調整を求めている——なぜなら責任を負う主体が単一の人間から、人間とツールの相互作用の連鎖へと変わったからだ。
今後起こりうること
Anthropicは近い将来、settings.local.jsonへの書き込みメカニズムを修正する可能性が高い。最も直接的な対応策としては、許可ルールを保存する際にコマンドのパラメータ値を除去する(完全なコマンド文字列ではなくコマンドのパターンのみを保持する)、高エントロピーな文字列を書き込む際に積極的な警告を表示する、またはグローバル設定に依存するだけでなくプロジェクトの.gitignoreに同期的に除外エントリを追加することを強制する、といったものが考えられる。
GitHubなどのコードホスティングプラットフォームは、認証情報スキャンの対象ファイル範囲を拡大し、AIツールの設定ファイルを検出対象に含める可能性がある。ApiiroのレポートはすでにGitleaksなどのツールのカバレッジの不足を明確に指摘しており、このようなレポートは通常、ツールチェーンの追随的なアップデートを促す。
今回の事件は、企業のセキュリティチームがAIプログラミングツールへの導入審査を実施するペースを加速させる可能性がある。医療・金融などの規制が厳しい業界では、本番データベースのパスワードが公開リポジトリに流出した場合のコンプライアンス上の影響は、技術的な修正コストをはるかに上回る。影響を受けた63の組織のうち、まだ認証情報をローテーションしていない企業にとって、一日の遅れが潜在的な露出ウィンドウを拡大し続けることになる——少なくとも1社はすでに、その認証情報が発見時点で有効な状態にあったことを確認している。
© 2026 Winzheng.com 赢政天下 | 转载请注明来源并附原文链接