GitHubの公開リポジトリで露出していた認証情報のうち、54万3000件超が7月の時点でも有効なままでした。GitHubは機密データの誤流出を防ぐ対策を講じていますが、それでも被害は後を絶ちません。
2億2400万件のリポジトリと580億件超のファイルをスキャンしたデータによると、固有の認証情報が公開状態のまま放置された期間の中央値は784日でした。
この調査を行ったのはTruffle Securityです。同社によると、有効な認証情報の約10%は6.3年以上前のもので、最も古いものは2009年にさかのぼります。
調査チームは、合計543,699件の固有の認証情報を特定しました。これらはフォーク内のコピーを含め、110万件超のファイルやリポジトリに繰り返し登場していました。
分析の対象は、大規模言語モデル(LLM)の学習用に構築されたデータセットです。このデータセットは、2025年8月7日に終了したクロールに基づいています。
Truffle Securityは、GitHubで露出していた認証情報の数は、8月にHugging Faceをスキャンした際の結果の2倍超にのぼると説明しています。Hugging Faceでは、221,303件の有効な認証情報が見つかっていました。
研究者らは、シークレットの密度が年々高まっていると指摘しています。有効な認証情報の数は、100万ファイルあたり2015年の3.72件から、2025年にはピークの11.62件へと増加しました。

Push Protectionの効果
認証情報の誤流出を防ぐGitHubの保護機能「Push Protection」は、2022年4月にAdvanced Securityのユーザー向けに導入されました。その後、2023年5月に公開リポジトリでも利用可能になり、1年後にはGitHubがデフォルトで有効化しています。
この仕組みは、アップロードされるコードからAPIキーやアクセストークンなどのシークレットのパターンを検出し、見つかった場合はアップロードをブロックします。ただし、すでに露出した認証情報を失効させることはありません。
Truffle Securityによると、7月に特定された認証情報のうち199,843件は、2024年2月にGitHubが全ユーザーに対してPush Protectionを有効化した後に露出したものでした。これは全体の約36.8%にあたります。
有効な認証情報の半数強(51.8%)は、GitHubのデフォルトのPush Protectionがブロックしないカテゴリに該当しました。データベースの接続文字列やGoogle APIキーなどです。
一方で、Push Protectionは対象範囲内では効果を上げているようです。保護対象カテゴリで露出した認証情報の割合は、デフォルトで有効化された後に53%減少しました。

露出したシークレットの失効
Truffleによると、データセット全体を見ると、認証情報の種類によって失効される可能性には大きな差があります。サービスごとに対応が異なるためです。
たとえば、コミットされた101,886件のnpmトークンのうち、まだ使えたのは1件だけでした。対照的に、露出していたGoogle Cloudサービスアカウントの認証情報126,963件のうち、69,041件は分析時点でも有効で、使用可能な状態でした。
影響を受ける組織への実践的な推奨事項は次のとおりです。露出した認証情報を直ちにローテーションし、リポジトリをクリーンアップし、履歴をスキャンします。さらに、有効なすべてのシークレットに自動的な有効期限を設定します。
Truffle Securityの調査結果は、GitHub上で有効なシークレットがどの程度、どれほどの規模で露出しているかを示しています。ただし、そのうち実際に攻撃者に盗まれ、悪用されたものの割合は明らかになっていません。