パブリックな GitLab リポジトリから 17,000 件超のシークレットが露出

Image

GitLab Cloud 上の 560 万件すべてのパブリックリポジトリをスキャンした結果、あるセキュリティエンジニアは、2,800 を超えるユニークなドメインにまたがって 17,000 件以上の露出したシークレットを発見しました。

Luke Marshall は、TruffleHog というオープンソースツールを使い、リポジトリ内のコードに API キー、パスワード、トークンなどの機密認証情報が含まれていないかをチェックしました。

この研究者は以前、Bitbucket をスキャンしており、その際には 260 万件のリポジトリから 6,212 件のシークレットを発見しました。また、AI モデルの学習に使用される Common Crawl データセットも調査し、そこからは 12,000 件の有効なシークレットが露出していることを突き止めています。

GitLab は、ソフトウェア開発者、メンテナー、DevOps チームがコードのホスティング、CI/CD の実行、開発コラボレーション、リポジトリ管理などに利用する、Web ベースの Git プラットフォームです。

Marshall は GitLab のパブリック API エンドポイントを利用して、すべてのパブリック GitLab Cloud リポジトリを列挙し、カスタムの Python スクリプトでページネーションしながらすべての結果を取得し、プロジェクト ID でソートしました。

このプロセスにより、重複のない 560 万件のリポジトリが得られ、その名前は AWS Simple Queue Service (SQS) に送信されました。

次に、AWS Lambda 関数が SQS からリポジトリ名を取得し、そのリポジトリに対して TruffleHog を実行し、結果をログに記録しました。

「各 Lambda 呼び出しでは、同時実行数を 1000 に設定したシンプルな TruffleHog スキャンコマンドを実行しました」と、Marshall は説明しています

「このセットアップにより、5,600,000 件のリポジトリのスキャンを 24 時間強で完了することができました。」

上記の方法を用いてパブリックな GitLab Cloud リポジトリ全体をスキャンするのにかかった総コストは 770 ドルでした。

研究者は 17,430 件の検証済みの有効なシークレットを発見しており、これは Bitbucket の約 3 倍であり、シークレット密度(リポジトリあたりのシークレット数)も 35% 高い結果となりました。

過去のデータによると、漏えいしたシークレットのほとんどは 2018 年以降の新しいものです。しかし Marshall は、2009 年にまでさかのぼる非常に古いシークレットもいくつか発見しており、それらは現在も有効な状態でした。

Image
露出したシークレットの件数
出典: Truffle Security

漏えいしたシークレットの中で最も多かったのは、5,200 件超にのぼる Google Cloud Platform (GCP) の認証情報で、次いで MongoDB キー、Telegram ボットトークン、OpenAI キーが続きました。

研究者は、スキャンしたリポジトリから 400 件強の GitLab キーも漏えいしていることを確認しました。

Types of exposed secrets on GitLab
GitLab 上で露出していたシークレットの種類
出典: Truffle Security

責任ある開示の精神と、発見されたシークレットが 2,804 のユニークなドメインに紐づいていたことから、Marshall は自動化に頼って影響を受けた当事者に通知し、Web 検索機能を備えた Claude Sonnet 3.7 と Python スクリプトを使ってメールを生成しました。

この過程で、研究者は合計 9,000 ドルにのぼる複数のバグバウンティを獲得しました。

研究者によると、多くの組織が彼からの通知を受けてシークレットを失効させた一方で、依然として開示されていない数のシークレットが GitLab 上で露出し続けているとのことです。

翻訳元: https://www.bleepingcomputer.com/news/security/public-gitlab-repositories-exposed-more-than-17-000-secrets/

ソース: bleepingcomputer.com