セキュリティ研究者らが、APIキーや銀行関連情報、企業データ、その他の機密情報を露出させたまま一般公開されているGitリポジトリを28,000件発見しました。
この調査結果は、Intruderが開発したオープンソースツール「gitreaper」を用いて、インターネットに公開されている350万台のホストをスキャンした結果得られたものです。
今回の調査は、単純なサーバー設定ミスによって、攻撃者にクラウドサービスや決済プラットフォーム、非公開コード、社内文書へのアクセスを許してしまう認証情報が露出しうることを浮き彫りにしています。
研究者らはまず、Certificate Transparencyログから4,000万件の興味深いドメイン候補を特定しました。その上で、app、admin、devなど、アプリケーションや開発、管理用途でよく使われるサブドメインに焦点を当てました。
分散型のスキャニングインフラを利用し、研究チームはこのリストを、稼働中のHTTPサービスを持つ350万台のホストにまで絞り込みました。その後、Nucleiを使って露出した.gitリポジトリを特定しています。
一般的なGitツールとは異なり、gitreaperはリポジトリ全体をディスクにダウンロードする必要がありません。リポジトリのサイズは数メガバイトから数十ギガバイトまで幅があるため、これは重要なポイントです。数千件のリポジトリをダウンロードするとなれば、数テラバイトものストレージが必要になりかねません。
その代わり、このツールはGitオブジェクトをメモリ上で処理し、秘密情報が含まれていないかスキャンした上で、認証情報の可能性があるファイルのみを保存します。これにより、研究者は大量の露出リポジトリをより効率的に調査できます。
Gitリポジトリは、コードと履歴をSHA-1ハッシュで識別されるオブジェクトとして保存します。これにはコミット、ツリー、blobが含まれます。コミットはリポジトリのスナップショットを指し、ツリーはディレクトリとファイル名を対応付け、blobには実際のファイル内容が格納されています。
gitreaperはまず、HEADやpacked-refs、main・master・developといった一般的なブランチ名、そしてreflog(参照ログ)など、よく使われるGitファイルやパスを試すところから始めます。
reflogを調べることで、削除済みや書き換え済みのブランチに由来し、現在のリポジトリの状態には表示されないコミットハッシュが判明することがあります。
起点となるコミットを見つけた後、このツールはコミット履歴全体をたどっていきます。コミットを取得し、親コミットを特定した上で、関連するツリーとblobを取得していきます。また、オブジェクトのハッシュを記録することで、同一のオブジェクトを複数回ダウンロードしないようにしています。
この手法が重要なのは、開発者がプロジェクトの最新バージョンからは秘密情報を削除していても、その認証情報が過去のコミットには残ったままになっていることを忘れがちだからです。
露出した.gitディレクトリにアクセスできた攻撃者は、リポジトリの履歴をたどることで、こうした削除済みのファイルを依然として取得できる可能性があります。
このツールは、復元したファイルの内容を秘密情報検出ルールと照合してスキャンします。誤検知を減らすため、エントロピーチェックやプレースホルダー検出、テンプレート検出、実行時の値の検出といったフィルタリング手法を用いています。
今回のスキャンでは、400件超のAWSアクセスキー、107件のStripeAPIキー、123件のOpenAI APIキー、80件のTelegramトークン、17件のGitHub個人アクセストークンが見つかりました。研究者らによれば、テスト時点で多くの認証情報がまだ有効な状態だったとのことです、とintruderは述べています。
一部のAWSキーは、社内のストレージバケットへのアクセスを可能にする状態でした。あるケースでは、Pythonの設定ファイルに、出勤記録や懲戒処分情報といった人事関連文書に紐づく認証情報が含まれていました。こうしたデータは、標的型フィッシングやソーシャルエンジニアリング攻撃に悪用されるおそれがあります。
ANY.RUNのブラウザ内データ検査で、検知・調査・対応をより迅速に-> ANY.RUNでSOCを強化
翻訳元: https://cyberpress.org/git-repositories-leak-secrets/