
2025年後半に実施された大規模な分析で、Flareの研究者は、10,000以上のDocker Hubコンテナイメージから、秘密情報(本番APIキー、クラウドトークン、CI/CD認証情報、さらにはAIモデルアクセストークンなど)が漏れていることを発見した。
人間以外のアイデンティティ(NHI):トークン、APIキー、サービスアカウント、ワークロードアイデンティティは、現代のソフトウェア開発とクラウドインフラストラクチャを支えるマシン間の認証情報です。
パスワードやMFAで認証する人間のユーザーとは異なり、これらのIDはアプリケーション、パイプラインの構築、自動化されたサービスを継続的に認証し、多くの場合、広範な権限と無期限の寿命を持つ。
このような調査結果を読むと、人々は直感的に「苦労して学ぶのだろう」とか「小さな会社や経験の浅い開発者に違いない。
しかし現実は、浅薄な見出しが示唆するよりもはるかに複雑で、はるかに厄介である。これらの暴露はエッジケースではなく、現代のソフトウェアがどのように構築され、運用されているかの構造的な欠陥なのだ。
その理由を理解するために、人間以外のIDが流出した近年の悪夢を見てみよう。
スノーフレーク・ブリーチ:漏えいした認証情報によって危険にさらされた165の組織
広くメディアの注目を集めた最も顕著なケースの1つが、2024年のSnowflake事件である。この事件は、ソフトウェアの悪用ではなく、長年にわたって犯罪エコシステムに流出していた長期間のクレデンシャルの無言の悪用によって引き起こされました。
脅威行為者クラスターUNC5537は、過去の情報窃取マルウェアのダンプやサイバー犯罪マーケットプレイスから採取した暴露された認証情報を使用して、約165のSnowflake顧客環境に認証しました。
これらの認証情報(APIのようなアカウント、オートメーションユーザー、データアクセスID)は、多くの場合、多要素認証がなく、無期限に持続するように設計されていました。アクセスされたデータには、AT&T、Ticketmaster、Santanderなどの組織の非常に機密性の高い企業情報や顧客情報が含まれており、これらは後に販売用に宣伝されたり、恐喝キャンペーンに利用されたりしていた。
a.fl_button { background-color:#border:a.fl_button { background-color: #5177b6; border: 1px solid #3b59aa; color:#text-align: center; text-decoration: none; border-radius: 8px; display: inline-block; font-size: 16px; font-weight: bold; margin:4px 2px; cursor: pointer; padding:12px 28px; } .fl_ad { background-color:#width: 95%; margin: 15px auto 15px auto; border-radius: 8px; border:1px solid #d6ddee; box-shadow: 2px 2px #728cb8; min-height: 200px; display: flex; align-items: center; } .fl_lef>a>img { margin-top: 0px !important; } .fl_rig>p { font-size: 16px; } .grad-text { background-image: linear-gradient(45deg, var(–dawn-red), var(–iris)54%, var(–aqua)); -webkit-text-fill-color: transparent; -webkit-background-clip: text; background-clip: text; } .fl_rig h2 { font-size: 18px!important; font-weight: 700; color:color: #333; line-height: 24px; font-family:font-family: Georgia, times new roman, Times, serif; display: block; text-align: left; margin-top: 0; } .fl_lef { display: inline-block; min-height: 150px; width: 25%; padding:10px 0 10px 10px; } .fl_rig { padding:10px; display: inline-block; min-height: 150px; width: 100%; vertical-align: top; } .fl_lef>a>img { border-radius: 8px; } .cz-news-title-right-area ul { padding-left: 0px; } @media screen and (max-width: 1200px) { .fl_ad { min-height: 184px; } .fl_rig>p { margin: 10p10px; } .fl_rig { padding:0 10px 10px 10px; width: 100%; } } @media screen and (max-width: 400px) { .cz-story-navigation ul li:first-child { padding-left: 6px; } .cz-story-navigation ul li:last-child { padding-right: 6px; } } }.
公開された人間以外のIDとAPIキーの監視
トークンが1つ漏れると、インフラ全体が何年にもわたって公開される可能性がある。
Flareは、公開されているコードリポジトリをスキャンして、APIキー、クラウド認証情報、サービスアカウントなど、人間以外のIDが漏えいしていないかどうかを確認し、攻撃者に発見され悪用される前に警告を発します。
ホームデポの1年にわたる暴露:単一のGitHubトークンがその作成者を凌駕するとき
2025年後半、Home Depotの社内システムが1年以上アクセス可能な状態にあったことが確認されました。この原因は、2024年初頭に不注意で公開され、パブリックプラットフォーム上に公開された従業員のGitHubアクセストークン1つが流出したためでした。
自動スキャンされた遠隔測定により、このトークンは、数百ものプライベートなソースコード・リポジトリへの読み取りと書き込みアクセス、接続されたクラウド・インフラストラクチャ、注文処理システム、在庫管理プラットフォーム、開発者パイプラインへのアクセスを含む、広範な権限を付与していることがわかりました。
トークンは、チャレンジなしで認証できる有効な非人間的アイデンティティとして扱われます。外部のセキュリティ・リサーチャーがホーム・デポのセキュリティ・チームに何度も警告を試みたにもかかわらず、トークンは数カ月間アクティブなまま一般に公開され続け、サードパーティ・メディアの関与によって対処を余儀なくされた後、ようやくトークンが失効した。
この長期にわたる暴露は、クレデンシャル・ガバナンスと自動秘密検知におけるシステム的なギャップを浮き彫りにしている。ローテーション、有効期限切れ、またはプロアクティブな監視を伴わない長期間のマシン・アイデンティティにより、静的なアクセストークンが、重要な社内システム全体にわたって持続的な認証ベクトルとして機能することになったのだ。
このインシデントは、プラットフォーム自体のソフトウェアの脆弱性ではなく、流出した ID トークンの継続的な有効性に関係しており、管理されていない非人間的な認証情報が、成熟した企業環境において、いかに不注意に重大な攻撃表面を開いてしまうかを示しています。
Red HatのGitLab流出:コンサルティング・リポジトリーが意図せずクレデンシャル・ストアに
2025年10月、コンサルティング組織で使用されていた Red Hat GitLab インスタンスが「Crimson Collective」と名乗るグループによって侵害され、何万ものプライベートリポジトリと何百ものカスタマーエンゲージメントレポート(CER)が流出しました。
これらの成果物には、アーキテクチャ図、デプロイメント・コンフィギュレーション、トークン、データベースURI、サービス・キーなどの重要な認証情報が含まれていました。
GitLab内部で静的な秘密情報とコンテキスト・データを混在させることで、中立的なコード・ストレージであるべきものが、意図せずにクレデンシャル・ストアとアクセス・マップになり、顧客の環境全体で有効な認証ベクトルとして使用される可能性のある機密情報が露出してしまったのだ。
NHIのリスクは無視できない。
100以上の組織に関連する1万以上のコンテナイメージが発見され、数千のライブキーが含まれていたFlareの調査に戻りましょう。以下に、発見された秘密のさらなる内訳を示す:
.secrets-table { width: 100%; border-collapse: collapse; line-height: 1.15; border:2px solid #c75dbd; } .secrets-table th, .secrets-table td { border:2px solid #c75dbd; padding:12px 18px; vertical-align: middle; } .secrets-table thead th { background:#ヘッダーの背景 */ color:/* ヘッダーテキスト */ font-weight: 800; text-align: left; white-space: nowrap; } /* スクリーンショットのような行の網掛け */ .secrets-table tbody tr:nth-child(odd) td { background:#f1ceee; /* シェーディングされた行 */ } /* 列のサイズと配置 */ .secrets-table col.col-category { width: 25%; } .secrets-table col.col-count { width: 22%; } .secrets-table col.col-meaning { width: 53%; } .secret-table td.count { text-align: left; /* スクリーンショットは左寄せに見える */ font-weight: 400; } /* オプション: カテゴリラベルを少し太くする */ .secrets-table td.category { font-weight: 700; letter-spacing:0.5px;
}
| カテゴリ | Docker Hubアカウント | 意味 |
|---|---|---|
| AI | 191 | AI APIのGrok/Geminiなど |
| クラウド | 127 | AWS/Azure/GCP/Cosmos/RDS シークレット |
| データベース | 89 | Mongo / Postgres / Neon / ODBC / SQLクレジット |
| アクセス | 103 | JWT / SECRET_KEY / APP_KEY / 暗号化 |
| API_TOKEN | 157 | 一般的なサードパーティ API キー |
| SCM_CI | 44 | GitHub / Bitbucket / NPM / Docker |
| コミュニケーション | 31 | SMTP / Sendgrid / Brevo / Slack / Telegram |
| 支払い | 21 | Stripe / Razorpay / Cashfree / SEPAY |
では、そもそもなぜコンテナ・イメージにはキーが含まれているのだろうか?機能し、構築し、運用するためには、クラウドプラットフォーム、API、データベース、CI/CDシステム、内部サービスなど、さまざまな環境に対して認証を行わなければならないからだ。
このアクセスは人ではなくソフトウェアによって実行されるため、トークン、APIキー、サービスアカウントといった人以外のIDに依存する。これらのマシン・アイデンティティは、現代のソフトウェア開発ライフサイクルとプロダクション・インフラに深く組み込まれ、コード・ビルドからアプリケーション・ランタイムまで、私たちが日常的に使用するテクノロジーの背後にあるすべてを動かしている。
人間以外のアイデンティティは、現代のソフトウェア開発ライフサイクルの最も重要な(そして最も理解されていない)柱の1つになっている。すべてのビルド、テスト、デプロイメント、そして本番ワークフローは、今やマシン間認証で動いている:CIランナーはコードをプルし、パイプラインはコンテナをプッシュし、クラウドサービスはインフラをプロビジョニングし、アプリケーションはAPIを呼び出し、モデルはデータをクエリする。
これらのプロセスは、ユーザー名とパスワードでログインするのではなく、トークン、APIキー、サービスアカウント、OAuthアプリ、ワークロードIDに依存し、多くの場合、広範かつ永続的な権限で継続的に動作する。
人間のユーザーとは異なり、これらのアイデンティティは転職することもなく、フィッシングされることもなく、パスワードを忘れることもない。逆説的な言い方をすれば、人間以外のアイデンティティは、それを作成した人間よりもはるかに長生きする可能性がある。
5年前にDevOpsのシニア・エンジニア(現在は急成長中のスタートアップのCTOかもしれない)が発行した管理者レベルのスーパー・キーは、多くの場合まだ生きていて、完全に特権を与えられ、物陰でひっそりと待っている。
人とは異なり、これらのマシン・アイデンティティは、誰かが明確に忘れない限り、役割を変えたり、会社を去ったり、デプロビジョニングされたりすることはない。
人間でない ID がリポジトリ、コンテナイメージ、ログファイルに漏れると、攻撃者は組織のソフトウェア開発ライフサイクル (SDLC) の奥深くまで、静かで、耐久性があり、正当なアクセスを許可することができる。
今日のクラウドネイティブの世界では、人間以外のアイデンティティを制御することは、もはや衛生上の課題ではありません。
セキュリティチームとインシデントレスポンスにとっての意味
このインシデントから得られる重要なことは単純だ:攻撃者はすでに、公開コンテナレジストリで見つかった漏洩した秘密を使って認証している。これは理論上のリスクではなく、今まさに起きていることなのだ。
私たちは、人間以外のIDを人間のIDと同じように扱い、その行動を監視し、アクセスを制限し、不要になったら削除すべきである。
防衛者にとって、その必要性は明らかだ:
-
コンテナ・イメージをコードやクレデンシャルのように扱うことだ。コンテナ・イメージはもはや単なるデプロイ可能な成果物ではなく、機密キーの潜在的な漏洩ベクトルなのだ。
-
SDLC のすべての段階で自動化された秘密スキャンを統合する。イメージが公開される前にリークを捕まえる。
-
イメージに焼き付けられた長寿命のトークンではなく、ID フェデレーションに支えられた短命で儚いクレデンシャルを採用する。
-
公開されたレジストリのキーを監視し、攻撃者がそれを悪用するのを待たずに、積極的にキーを失効させる。
幸いなことに、セキュリティ業界は専門的なツールで対応してきた。Flareや類似のソリューションなど、脅威暴露管理のために設計されたプラットフォームは、公開レジストリやコードリポジトリを継続的にスキャンして暴露された認証情報を探し出し、実際の攻撃対象にマッピングし、迅速な修復を可能にします。
SDLC 全体にわたって何千もの非人間的な ID を管理する組織にとって、自動化された検出と失効機能はもはやオプションではありません。
Flare がスポンサーとなり、執筆しました。



Comments