GitLab Cloud 公開リポジトリ 560 万件のスキャンで判明:17,000件超のシークレット漏洩

Public GitLab repositories exposed more than 17,000 secrets

2025/11/28 BleepingComputer — GitLab Cloud 上の 560万件の公開リポジトリをスキャンした結果、2,800 を超える固有ドメインにまたがって存在する、17,000件を超える公開シークレットが発見された。オープン・ソース・ツール TruffleHog を用いることで、セキュリティ研究者である Luke Marshall が調査したのは、リポジトリ内のコードに含まれる API キー/パスワード/トークンといった機密性の高い認証情報である。

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

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

Luke Marshall は、GitLab のパブリック API エンドポイントを介してすべての GitLab Cloud リポジトリを列挙し、その取得結果をカスタム Python スクリプトでページ分割し、プロジェクト ID で並べ替えた。

この処理により重複のない 560万件のリポジトリが整理され、それらのリポジトリ名は AWS Simple Queue Service (SQS) に送信された。続いて、AWS Lambda 関数が SQS からリポジトリ名を取得し、TruffleHog を実行して結果を記録した。

Marshall は、「それぞれの Lambda 呼び出しで、TruffleHog の単純なスキャン・コマンドが実行された。コンカレント数を 1000 に設定したことで、560万件のリポジトリのスキャンを 24 時間強で完了できた」と説明している

上記のスキャンを実行するために要した、GitLab Cloud のパブリック・リポジトリ全体の総コストは $770 であったという。

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

過去のデータに遡ると、シークレット漏洩の大半は 2018 年以降に発生したようだ。その一方で、2009年の古いシークレットも確認されており、それらが現在も有効である点を、彼は指摘している。

Volume of exposed secrets
Volume of exposed secrets
Source: Truffle Security

漏洩したシークレットの中で最も多かったのは、5,200件を超える Google Cloud Platform (GCP) の認証情報である。それに続くのが、MongoDB のキー/Telegram ボットトークン/OpenAI のキーなどである。

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

Types of exposed secrets on GitLab
Types of exposed secrets on GitLab
Source: Truffle Security

発見されたシークレットが、2,804 の固有ドメインに関連付けられていたことから、Marshall は責任ある情報開示の方針に基づき、通知作業を自動化したと説明している。この通知で用いられた方法は、Web 検索機能を備えた Claude Sonnet 3.7 と Python スクリプトを組み合わせ、関係者に送信するメールを生成するというものだ。

この一連の対応により、Marshall は複数のバグ発見報奨金を獲得し、総額は $9,000 に達したという。通知を受けた数多くの組織がシークレットを失効させた一方で、依然として失効していない数多くのシークレットが、GitLab で公開され続けていると、この研究者は指摘している。