はじめに: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つのセキュリティベストプラクティスが紹介されており、組織はこれらを直ちに適用することが推奨されています。
