2026年7月に研究者が検証したところ、GitHubの公開リポジトリで露出していた54万3,000件を超える認証情報が、依然として有効な状態でした。流出したシークレットの検出と失効の間に、深刻な溝が残っていることが浮き彫りになりました。
Truffle Securityは、2億2,450万件の公開リポジトリのスナップショットから、有効な固有の認証情報を543,699件発見しました。その多くは、最初に露出してから何年も有効なままでした。
Truffle Securityが分析したのは、AI学習用に構築された公開コードのコーパス「The Stack v3」です。224,553,295件のリポジトリから集めた584億個のファイルが含まれています。
このデータセットには、各リポジトリのデフォルトブランチが収集時点の状態で反映されています。収集期間の終了日は2025年8月7日です。研究者は2026年7月27日と28日に、候補となったシークレットを発行元のサービスに照会して検証しました。その結果、543,699件の固有の認証情報が今も認証に使えることを確認しました。
有効なシークレットは、リポジトリやファイルをまたいで合計1,103,438件の露出に関連していました。この件数には、フォーク内で重複していたキーも含まれます。
研究者の分析では、認証情報が公開状態にあった期間の中央値は784日でした。10%は少なくとも6.3年にわたって露出していました。
検証できたなかで最も古い認証情報は、最終更新が2009年6月のファイルに紐づくもので、16年以上たった今も使用可能でした。今回の結果は、公開リポジトリでのシークレットスキャンだけで認証情報の漏えいを解決できるという前提に疑問を投げかけています。
GitHubは2023年2月に、公開リポジトリ向けのシークレットスキャンアラートを無料にしました。2024年2月には、公開リポジトリへのプッシュでプッシュ保護をデフォルトで有効にする取り組みも始めています。
この機能は、対応するシークレットを含むコミットがリポジトリに届く前にブロックします。ただし、開発者は警告を回避できます。GitHubによると、同プラットフォームは180社超のサービスプロバイダーが発行する、200種類以上のトークンやパターンを認識できるとのことです。
こうした対策があるにもかかわらず、認証情報199,843件(全体の36.8%)は、プッシュ保護がデフォルトで展開され始めた後に露出していました。
Truffle Securityは、この原因の一部は対象範囲の限界にあると指摘しています。有効な認証情報の51.8%は、デフォルトではブロックされない種類のシークレットでした。データベース接続文字列、秘密鍵、Google APIキーなどです。
Google Cloudのサービスアカウント認証情報は有効なシークレット69,041件を占め、MongoDBの接続文字列は51,067件でした。研究者はさらに、有効なGoogle APIキーを33,343件確認しており、そのうち31,374件はGemini APIキーでした。
GitHubはGoogle APIキーをデフォルトではプッシュ保護の対象にしていません。同じ形式のキーが、機密性の高いサービスにも、公開を前提としたクライアントサイドのサービスにも使われるためです。検出を優先すると誤検知が増えるという難しさがあります。
調査の結果、プッシュ保護は対象範囲では新たな漏えいを減らしていました。Truffle Securityの推計では、保護対象の認証情報タイプの露出率は、デフォルト展開後に53%低下しました。保護対象外のシークレット形式の低下幅は7%にとどまります。
プッシュ保護の対象となるトークンタイプでは、展開後の露出率が低下しました。対象にはGitHub、AWS、Slack、SendGrid、Google Cloudのサービスアカウント認証情報などがあります。
ただし、予防策では、すでに公開リポジトリにコミットされた認証情報には対処できませんでした。最も明確な違いを生んだのは、自動失効です。
npmトークンの生存率は約0.001%、GitHubトークンの生存率は0.36%でした。プロバイダー側で効果的に無効化されているとみられます。
一方、Postgresの接続文字列は88%、MySQLの接続文字列は75%が有効なままでした。データベースの認証情報には、通常、プロバイダーが運用する失効の仕組みがないためです。
レポートは、コミットされた認証情報はすべて侵害されたものとして扱うよう組織に促しています。ただちにローテーションし、リポジトリの履歴をスキャンして、可能な限り短寿命の認証情報を採用することを勧めています。シークレットスキャンは今後の露出を防げます。しかし、すでに公開されたキーのリスクを取り除けるのは、失効だけです。
1万6,000以上のSOCチームがANY.RUNを導入し、脅威調査を効率化して手作業を削減しています。 自社チームで試す
翻訳元: https://cyberpress.org/over-543000-live-credentials/