公開GitHubファイルにMCP認証情報がハードコードされたまま放置

AIコーディングツールが使用するAPIキーやアクセストークンなどの認証情報が、GitHub上に公開されているMCP設定ファイル内にハードコードされた状態で見つかったことが、Hush SecurityによるレポートThe State of MCP Configuration: The Identity Security Gapsで明らかになりました。

同社は約82,000件の設定ファイルを分析し、認証情報を格納するスロットのうち12%にハードコードされた認証情報のリテラル値が含まれていることを発見しました。これにより、接続先のサービスやシステムの認証情報が露出する可能性があります。

露出した認証情報の特定方法

研究者らは、主要なコーディングエージェントが使用する設定ファイル名を対象に、公開GitHubリポジトリを検索しました。環境変数の値や認証ヘッダーを調べ、認証情報がどのように保存されているかに応じて認証情報スロットを分類しました。

Image

各認証情報スロットに値がどのように設定されるか(出典: Hush Security)

分類されたカテゴリーには、ハードコードされた値、環境変数への参照、クライアント管理のプロンプト、シークレットマネージャーへの参照、プレースホルダー、空欄が含まれます。研究者らは、プロバイダー固有のパターンと、ランダム性を測る指標であるシャノンエントロピーを用いて、ハードコードされた値の中から実際の秘密情報らしきものを特定しました。

GitHubのコード検索はデフォルトブランチのみをインデックス化し、フォークを除外するほか、個々のクエリに対する検索結果数にも制限があります。そのためHushは、報告された数値を露出した認証情報の正確な件数ではなく、下限の推定値として扱っています。

今回の調査対象に含まれたファイルの中には、MCP設定を任意で含められる一般的な設定ファイルも一部ありました。そうしたケースでは、研究者らはMCPサーバーを宣言しているサンプルファイルのみをカウント対象としました。発見した値を用いていずれかのサービスへの認証を試みることはしていません。

一部の認証情報は、コミット後に失効または更新されている可能性があります。ハードコードされた秘密情報のうち55%は、ベンダーが識別可能なトークン形式を持っておらず、そのうち31%は内部MCPサーバー向けの不透明なベアラートークンに分類されました。

プロバイダー固有の形式で識別できない値については、研究者らはキー名、長さ、エントロピー、文字パターンを用いて認証情報である可能性を評価しました。分析の結果、これらの値の大半はベンダーのAPIキー、ベアラートークン、データベースパスワードで占められており、認証情報ではない識別子が占める割合はごくわずかであることが分かりました。

生の秘密情報の値は一切保持されていません。調査結果は集計・匿名化された上でまとめられ、個々のリポジトリや作成者が特定されないよう配慮されています。

削除された秘密情報がGitの履歴に残る問題

ファイルの最新版から機密情報を削除しても、リポジトリから完全に消えるとは限りません。Gitは過去のバージョンを保持するため、削除済みの値もコミット履歴を通じてアクセス可能な状態のままになります。

研究者らは、認証情報を含む7,681件の設定ファイルの履歴を調査し、現行バージョン以前の最大7回分のリビジョンを確認しました。その結果、現在のファイルからは秘密情報が削除されているものの、それ以前のコミットには残ったままになっている設定ファイルを243件特定しました。

該当する認証情報を現行の設定ファイルから削除しただけではGitの履歴からは消えないため、露出を終わらせるにはプロバイダー側でその認証情報をローテーションする必要があります。

Hush SecurityのCEOであるMicha Rave氏は次のように述べています。「セキュリティチームが長年訓練を積んできた本能的な対応――秘密情報をスキャンし、コミットをブロックし、漏洩したものをローテーションする――だけでは、今回のケースには到底不十分です。これらのファイルはコミットされることを前提としていますが、秘密情報そのものは決して含まれてはならないものです。それが含まれてしまった場合、最もリスクの高い認証情報は既知のパターンに一致せず、その背後にあるIDには所有者も有効期限も存在しません。誰にも監視されないアクセストークンの一群が、まるごと公開Git上に放置されているということです」

ハードコードされた認証情報のリテラル値のうち24%は、設計上、権限範囲が広く、かつ有効期限がないタイプのものでした。

権限範囲が分類できた認証情報のうち53%は、組織単位、アカウント単位、ワークスペース単位、またはデータベース全体へのアクセス権を提供するものでした。有効期限ポリシーが定義されている認証情報についても、80%はデフォルトでは失効しない設定になっていました。

権限範囲が広く有効期限のない長寿命の認証情報は、単一の認証情報で複数のリソースや機密性の高い機能へのアクセスが可能になる場合があるため、露出した際の影響を増大させる恐れがあります。

MCPが助長するマシンアイデンティティ問題

MCP接続によって、AIエージェントはユーザーや組織に代わってソースコード、データベース、クラウドインフラ、その他のサービスとやり取りする権限を得ることができます。

こうしたエージェントは非人間アイデンティティとして動作し、やり取りのたびに人がサインインする必要なく、認証情報を使ってシステムに対する認証を行います。こうした利用が拡大するにつれ、組織としてはどのエージェントがアクセス権を持っているか、どのような権限を保持しているか、誰がそれに責任を負うのか、そしてそのアクセスをいつ終了させるべきかを把握しておく必要があります。

翻訳元: https://www.helpnetsecurity.com/2026/09/18/hush-security-mcp-credential-exposure-report/

本記事は helpnetsecurity.com の記事を翻訳・要約したものです。