公開GitLabリポジトリで17,000件以上のシークレットが露出、セキュリティエンジニアが警告

はじめに:GitLabでの大規模なシークレット露出

セキュリティエンジニアのLuke Marshall氏が、GitLab Cloud上の560万件の公開リポジトリをスキャンした結果、17,000件を超えるシークレットが露出していることを発見しました。これにはAPIキー、パスワード、トークンなどの機密情報が含まれており、2,800以上のユニークなドメインに関連しています。

発見の経緯とスキャン手法

Marshall氏は、オープンソースツールであるTruffleHogを使用して、リポジトリ内の機密資格情報をチェックしました。彼は以前にもBitbucketをスキャンし、260万リポジトリから6,212件のシークレットを発見しており、AIモデルの学習に使用されるCommon Crawlデータセットからも12,000件の有効なシークレットを見つけています。

GitLabのスキャンでは、Marshall氏はGitLabの公開APIエンドポイントを利用してすべての公開リポジトリを列挙し、カスタムPythonスクリプトでページネーションを行いました。リポジトリ名はAWS Simple Queue Service (SQS) に送られ、AWS Lambda関数がこれを受け取り、TruffleHogを実行して結果を記録しました。このプロセスにより、560万件のリポジトリのスキャンはわずか24時間強で完了し、総費用は770ドルでした。

露出したシークレットの詳細

今回の調査で、17,430件の検証済みライブシークレットが発見されました。これはBitbucketでの発見数の約3倍にあたり、リポジトリあたりのシークレット密度も35%高くなっています。露出したシークレットの多くは2018年以降のものですが、中には2009年からの古いシークレットで今日でも有効なものも含まれていました。

露出したシークレットの内訳は以下の通りです。

  • Google Cloud Platform (GCP) 認証情報: 5,200件以上
  • MongoDBキー
  • Telegramボットトークン
  • OpenAIキー
  • GitLabキー: 400件以上

これらはITエコシステムにおける主要なサービスやプラットフォームの認証情報であり、悪用された場合の影響は甚大です。

責任ある開示と影響

Marshall氏は、責任ある開示の精神に基づき、発見されたシークレットに関連する2,804のユニークなドメインに対し、自動化された通知プロセスを実施しました。彼はClaude Sonnet 3.7とPythonスクリプトを組み合わせて通知メールを生成しました。この過程で、彼は複数のバグバウンティを獲得し、総額9,000ドルに達しました。

多くの組織が通知に応じてシークレットを無効化しましたが、未だにGitLab上で露出したままのシークレットも存在すると報告されています。

今後の対策:MCPセキュリティベストプラクティス

MCP(Model Context Protocol)がLLMとツール、データを接続するための標準となりつつある中、セキュリティチームはこれらの新しいサービスを安全に保つために迅速に行動しています。記事では、MCPのための7つのセキュリティベストプラクティスが紹介されており、組織はこれらを直ちに適用することが推奨されています。


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