秘密を収集するための方法論にはさまざまなフェーズが含まれており、最終的に機密情報を高い信頼性で識別できます。 科学的作品のイラストGitHubおよびオープンソースパブリッシング用の同様のプラットフォームは、今日、開発者向けの標準ツールになっています。 ただし、このオープンソースコードが認証トークン、APIシークレットキー、およびプライベート暗号キーで機能する場合、問題が発生します。 セキュリティを確保するために、このデータは秘密にしておく必要があります。 残念ながら、多くの開発者は機密情報をコードに追加しますが、これはしばしば偶発的な情報漏洩につながります。
ノースカロライナ大学の研究者チームは、GitHub
で機密データの漏洩に関する
大規模な調査を実施しました。
彼らは2つの補完的な方法で収集された数十億のファイルをスキャンしました。
- ほぼ6か月のリアルタイムGitHubパブリックコミットスキャン
- GitHubのすべてのリポジトリの13%、合計約400万のリポジトリをカバーするパブリックリポジトリのスナップショット。
結論は残念です。 科学者は、リークが広範囲に及び、100,000以上のリポジトリに影響を与えることを発見しただけではありません。 さらに悪いことに、何千もの新しいユニークな「秘密」が毎日GitHubに届きます。
この表には、一般的なサービスのAPIと、この情報の漏洩に関連するリスクがリストされています。

発見された秘密オブジェクトに関する一般的な統計は、ほとんどの場合、Google APIキーがパブリックドメインにあることを示しています。 RSA秘密鍵とGoogle OAuth識別子も一般的です。 通常、リークの大部分は、単一所有者のリポジトリを通じて発生します。
シークレット | 合計 | ユニーク | %、1人の所有者 |
---|
Google APIキー | 212 892 | 85 311 | 95.10% |
RSAシークレットキー | 158 011 | 37,781 | 90.42% |
Google OAuth ID | 106 909 | 47,814 | 96.67% |
通常の秘密鍵 | 30,286 | 12,576 | 88.99% |
Amazon AWSアクセスキーID | 26 395 | 4648 | 91.57% |
Twitterアクセストークン | 20,760 | 7953 | 94.83% |
秘密鍵EC | 7838 | 1584 | 74.67% |
Facebookアクセストークン | 6367 | 1715 | 97.35% |
PGP秘密鍵 | 2091 | 684 | 82.58% |
MailGun APIキー | 1868 | 742 | 94.25% |
MailChimp APIキー | 871 | 484 | 92.51% |
ストライプ標準APIキー | 542 | 213 | 91.87% |
Twilio APIキー | 320 | 50 | 90.00% |
スクエアアクセストークン | 121 | 61 | 96.67% |
シークレットスクエアOAuth | 28 | 19 | 94.74% |
Amazon MWS認証トークン | 28 | 13 | 100.00% |
Braintreeアクセストークン | 24 | 8 | 87.50% |
Picatic APIキー | 5 | 4 | 100.00% |
合計 | 575,456 | 201 642 | 93.58% |
コミットをリアルタイムで監視することで、リポジトリに到着した直後にリポジトリから削除される機密情報の量を判断できました。 最初の日に秘密が10%を少し超えて削除され、翌日には数パーセントが削除されましたが、追加後2週間で個人情報の80%以上がリポジトリに残っており、この割合は実際には減少しません。
最も注目すべき漏洩には、東ヨーロッパの国の政府機関からのAWSアカウントと、数千のプライベートVPNにアクセスするための7,280のプライベートRSAキーがあります。
この研究は、攻撃者が、最小限のリソースでさえ、多くのGitHubユーザーを危険にさらし、大量の秘密鍵を見つけることができることを示しています。 著者は、多くの既存の保護方法は機密情報の収集に対して効果がないことに注意しています。 たとえば、TruffleHogのようなツールは25%の効率しか示しません。 APIリクエストの数に対する組み込みのGitHub制限も簡単にバイパスされます。
しかし、発見された多くの秘密には、簡単にできる明確なパターンがあります
彼らの検索。 これらの同じパターンを使用して、機密情報の漏洩を監視し、開発者に警告できると想定するのは論理的です。 おそらく、そのようなメカニズムはサーバー側、つまりGitHubで実装する必要があります。 サービスは、コミット中に警告を発行できます。
GitHubは最近、リポジトリをスキャンし、トークンを検索し、情報漏洩をサービスプロバイダーに通知する、トークンスキャンのベータ版(
トークンスキャン機能)を実装しました。 次に、ベンダーはこのキーをキャンセルできます。 著者は、研究のおかげで、GitHubはこの機能を改善し、ベンダーの数を増やすことができると考えています。