Truffle Securityは、GitHubの公開リポジトリで、有効な状態のまま露出している固有の認証情報が50万件超にのぼることを明らかにしました。
同社は2025年8月、2億2,400万件のGitHub公開リポジトリをスキャンし、合計1,103,438件の認証情報が露出していることを突き止めました。
その後、2026年7月末に各サービスに対して認証情報を試したところ、543,699件が依然として有効でした。
最も古いものは、2009年にコミットされたAWSキーです。以来、一度も手を加えられないまま残っています。調査対象全体での露出期間の中央値は784日でした。
「有効な認証情報のうち2,636件は、2015年より前に最終更新されたファイルに含まれています。確認できたもの全体の4分の1は、4年以上前のものです」と、Truffle Securityは述べています。
とりわけ深刻なのは、認証情報のほぼ半数が、GitHubが無料のアラートとデフォルトのプッシュ保護を導入した後に公開リポジトリへプッシュされていた点です。これらの機能は、意図しない露出を防ぐためのものです。
「245,959件は、無料アラートの導入前のものです。97,897件は、スキャンが無料で、プッシュ保護もワンクリックで有効にできた時期に公開されました。199,843件は、ブロックがデフォルトになった後に公開され、2年以上経っても発行元のサービスで有効なままでした」とTruffleは指摘しています。
GitHubはシークレットスキャンのプログラムも運用しており、露出したトークンを発行元のプロバイダーに送って失効を促しています。ただし、特定されたシークレットの失効はパートナーに義務づけていません。これが、有効なまま残る認証情報が多い理由だと考えられます。
露出したシークレットの内訳では、Google Cloudのサービスアカウント認証情報が69,041件で最多でした。次いで、MongoDBの接続文字列が51,067件、有効なGoogle APIキーが33,343件と続きます。
Truffleによると、認証情報が有効なまま残っているのは、露出を防げなかったからではなく、失効されなかったからです。プロバイダーによっては、漏えいしたトークンを無効化する仕組みを持っていない可能性があります。
「プッシュ保護は優れた対策で、シークレットを入り口で食い止めます。しかし、すでに内部にある543,699件については何もできません。もともとそのための機能ではないからです。アラートは履歴もカバーしますが、それは所有者がアラートを有効にし、内容を確認し、さらにキーをローテーションした場合に限られます」とTruffleは指摘しています。
翻訳元: https://www.securityweek.com/500000-active-credentials-left-exposed-on-github/