Artificial Intelligence (AI)
MCPの設定ファイル内にハードコーディングされた認証情報のリスク
MCPサーバにおけるシークレットの管理不備は、情報流出やサプライチェーン攻撃を招きます。本稿では、こうした設定不備が蔓延している実態や、実践的な対策を解説します。
概要
- MCP(Model Context Protocol)は、AIアプリケーションが外部データソースに安全にアクセスするための仕組みを提供します。しかし、シークレットの管理法に不備があると、重大なリスクが発生します。
- MCPの設定事例を調べたところ、.envやJSON形式のファイルに機密情報を平文で記載しているパターンが見られました。こうした方式は、攻撃や誤操作をきっかけに情報流出を引き起こす場合があります。
- 調査したMCPサーバの約48%が、シークレットの保管手段として、安全でない方式を推奨していました。攻撃者は、こうしたMCPサーバを悪用してクラウドリソースやデータベースに不正アクセスする他、有害なコードを正規ソフトウェアに注入する可能性があります。
- 対策として、中央管理型のセキュリティ制御や持続的な監査システムを導入し、安全面から推奨される設定を採用することが重要です。また、セキュリティソリューション「Trend Vision One™」に含まれる「Cyber Risk Exposure Management」や「Cloud Risk Management」は、堅牢で隙のない保護体制を実現します。
はじめに
MCP(Model Context Protocol)は、AIアプリケーションが外部のデータソースやツールと接続するためのオープンソース規格です。このMCPによってAIアプリは、データベースやAPI、各種サービスと自然言語でやり取りすることが可能です。また、開発チーム側では、大規模言語モデル(LLM:Large Language Model)の上に複雑なワークフローを効率的、かつ拡張性のある形で構築できるようになります。
しかし、MCPを利用したシステムには、特有のリスクがあります。前回の記事では、ネットワーク越しにアクセス可能な「MCPサーバ自体」の認証に関する問題を取り上げました。一方、本稿では、MCPに繋がる「外部データソース」のシークレットや、その管理法に関する問題を取り上げます。今回の調査により、特にMCPの設定ファイルが情報流出のリスク元になっていることが判明しました。

(出典:MCP.so)
MCPサーバ
MCPサーバは、AIアプリとデータソースを仲介する軽量型のサービスです。主な機能として、バックエンドに置かれたデータソースやサービスにアクセスする際の認証や認可を処理し、AIクライアントに対してデータ(リソース)やツール(関数)を提供します。
こうした手続きでは、多くの場合、データソースのAPIに認証情報やAPIキーなどのシークレットを渡す必要があります。
前回のMCPセキュリティに関する記事で述べたように、データソースへのアクセスに必要な認証情報の設定方式には、いくつかのパターンが存在します。
- サーバ側で設定
- ソースコード内に直接ハードコーディングしておく
- 実行時に注入する
- RBAC(Role-Based Access Control:ロールベースアクセス制御)を導入しない(過大な権限を行使されるリスクがある)
- LLMクライアント側で設定
- 認証フレームワーク「OAuthトークン」を利用する
- 汎用的なAPIキーを利用する
理論上、正しく実装されていれば、クライアント側から認証情報を渡す方式が最も安全です。例えば、動的に取得したOAuthトークンをセキュアなVault(保管庫)に保存し、それをクライアントから参照する仕組みを用いれば、認証情報の外部露出を最小限に抑え、動作履歴の追跡性を高めることが可能です。
誤設定とシークレットの露出
今回の調査では、過去のレポート「DevOpsの「地雷原」に潜む脅威を分析」で指摘した不適切な運用慣行が、MCPの設定ファイルでもそのまま確認されました。
当該レポートでは、シークレットの管理目的で環境変数が不適切な形で利用され、そうした習慣が蔓延している旨を述べました。具体的には、機密性の高い認証情報が下記のように扱われていました。
- .envファイルに保存されている
- コンテナ内にハードコーディングされている
- ログやメモリダンプ、イメージレジストリ経由で外部露出している
こうしたシークレットは安全性に欠けており、さらにひとまとめに保存されているため、自動化攻撃やサプライチェーン侵害における格好の標的となります。
※ 本稿で挙げるセキュリティ上の課題は、レポート「DevOpsの地雷原に潜む脅威を分析」で見られた知見とさまざまな点で一致しています。特に、露出した設定が攻撃者に付け狙われている実態について、同レポートから詳しくご確認いただけます。
実態として、MCPサーバ用の設定ファイルは、新たな「.envファイル」に近い形で運用されています。そこには、LLMが各種データソースにアクセスするために必要な認証情報が、集中的に詰め込まれています。
こうした危険な習慣は、下記の設定例からも確認できます。






今回の調査では、MCPサーバのソースコード19,402件を収集しました。その内容や関連ドキュメント、利用パターンを分析した結果、全体の48%(9,294件)において、シークレットを.envファイル経由でMCPサーバに渡し、データソースからの認証を受ける方式が推奨されていました。また、JSON形式の設定ファイルに認証情報を平文のままハードコーディングする方式も見られました。いずれも、複数の認証情報を単一ファイルにまとめて格納するアプローチであり、安全とは言えません。
すでに攻撃者は、公開状態の.envファイルを狙った活動を始めています。MCP環境に置かれた設定ファイルに目をつけ、自然言語のインターフェースを介して機密情報を窃取しようという動きが出てくるのも、時間の問題と言えるでしょう。
発生しうる攻撃の種類
ローカル環境にデータソースを配備している限り、認証情報を安全でない方法で管理していても、侵害が起きるまで深刻なものと見なされないかも知れません。しかし、クラウド本番環境になると、リスクが格段に高まります。MCPの設定は、クラウドアカウント管理やデータベースなど、重要なリソースへのアクセス情報を含んでいることがあります。もしMCP設定内のアクセス用トークンなどが流出すれば、攻撃者はそれを利用して正規配布ソフトウェアのバイナリ内部に不正なコードを注入し、サプライチェーン攻撃に繋げる可能性があります。こうしたシナリオは、過去の調査報告でも詳しく取り上げてきました。
MCPを利用する際には、設定ファイルや認証情報の管理に十分な注意が求められます。攻撃者は状況の変化を察知し、MCPサーバ内の設定ファイルを情報窃取の起点と見なすようになるでしょう。LLMやMCPが普及するに従い、新たな攻撃法が出現することは、避けがたいものと考えられます。
以前との決定的な違いは、高度な技術がなくても攻撃を行えてしまうことです。流出したMCPの設定ファイルと、悪意を感じさせない自然言語のクエリさえあれば、不正アクセスなどを容易に実行できる可能性があります。
ドメイン管理者は、MCPの安全な利用法に関するルールを策定、徹底し、管理の行き届かない個別設定に頼ることなく、中央管理に基づくMCPアクセスの確立と保護について検討することを推奨します。
シークレットの安全な読み込み手段をネイティブレベルでサポートするMCPサーバは、まだ多くありません。しかし、セキュアなVaultからシークレットを取得する簡易なラッパースクリプトを活用するだけでも、リスクを軽減できます。MCPの利用に際しては十分な注意を払い、MCPのワークフロー内で認証情報がどのように保管されているか、再チェックすることが重要です。トレンドマイクロは、安全性に欠ける運用パターンを複数発見しており、影響のあるベンダーに「Trend Zero Day Initiative™(ZDI)」を通じて報告しました。
MCPのシークレットを安全に管理する方法
JIRAサーバ向けのMCP設定サンプル(図8)を確認したところ、「JIRA_API_TOKEN」や「CONFLUENCE_API_TOKEN」、関連するユーザ名を含む機密情報が、平文形式のJSONファイル内にハードコーディングされていました。

以前からトレンドマイクロが指摘してきたように、シークレット管理に関するDevOps上の不適切な運用慣行は、多くの問題を積み重ねてやがて時限爆弾のように作動します。こうした慣行は、大規模データ侵害の温床にもなります。幸い、リスクに配慮した取り組みも見られます。良い例が、著名なGitHubのCLIツールであり、GitHubのアクセストークンがシステムVaultに安全な方式で保管されます。

今回は、同等の仕組みを実現するためのラッパースクリプトを作成しました。指針として、以下2点の解決を目指しました。
- 認証情報を安全に取得、保存できること。
- MCPサーバの稼働時にシークレットを展開できること。
スクリプト言語としてはPythonを、システムVaultへのアクセス手段としてはライブラリ「keyring」を選択しました。このライブラリは、Windows、Linux、macOSという3つの主要なOSに対応しています。図10に、シークレットの安全な取得や保存をサポートするための補助スクリプトを示します。以降の例では、テスト環境としてmacOSを利用します。

まず、補助スクリプトを引数「set」付きで起動し、JIRAのAPIキーを保存します。また、引数「service」と「variable」は、双方組みで、保存済みシークレットの識別子として機能します。なお、入力時にも、シークレットは露出しません。保存したシークレットを取得する際には、引数「get」を指定します。

一般的によく提示される設定法と異なり、今回は、補助スクリプトによってAPIキーをシステムVaultに安全に保管しました。次のステップは、これをMCPサーバに送る方法を決めることです。

クライアント側のAIアプリケーションとして、今回はAnthropic社の「Claude Desktop」を利用し、これをMCPサーバと連携させます。連携に関するセットアップとして、以下のMCPサーバの設定ファイルを確認、編集する必要があります。
claude_desktop_config.json
狙いは、シークレットを安全に参照する設定を実現することです。しかし、現状のClaude Desktopには、シークレットをVaultから取得、または安全に参照する機能が見られませんでした。

そこで今回は、MCPサーバをコンテナ内で安全に起動するためのラッパースクリプトを別途作成しました。このラッパースクリプトは、実行時にVaultからシークレットを取得し、それを環境変数としてMCP側に渡します。本方式では、元のMCPサーバの設定ファイルを複製し、シークレット部分をプレースホルダー(仮の値)に置き換えたバージョンを作成する必要があります。ラッパースクリプトは、書き換えバージョンを読み取り、シークレットを展開した上で、MCPサーバ側に渡します。

最終ステップでは、元の設定ファイル「claude_desktop_config.json」のコマンド項目(command)をラッパースクリプトのパスに変更します。また、実行対象のサーバとして「mcp-atlassian」を指定します。ラッパースクリプトが稼働すると、先にプレースホルダーで置き換えたMCPサーバ用設定ファイルを読み込み、システムVaultからシークレットを取得します。続いて、元のコマンドを実行し、取得したシークレットを環境変数に入れてMCPサーバに引き渡します。
なお、設定のフォーマットとしては、元と同じものを使用しています。唯一の違いは、追加のセキュリティ機能が組み込まれている点です。

本来、こうした機能は、Claude Desktopや類似の製品内に実装されていて然るべきです。しかし、急速な技術革新やDevOpsでの不適切な習慣も相まって、デプロイメントの安全性が損なわれ続けています。そのため、安全性を確保するためには、デフォルト設定や一般に提示されている設定を鵜呑みにすることなく、一歩踏み込んだ追加対策を講じる姿勢が求められます。
まとめと推奨事項
MCPサーバの利用に際しては、その運用形態に関わらず、シークレットの安全な管理機構や、必要時以外にシークレットを環境中に配備しないワークフローが求められます。推奨される安全な方式を「事実上の標準」に変えることで、意図しない情報流出や設定不備、露出のリスクを低減できます。また、ファイルに平文でハードコーディングされた認証情報は、そのファイル名によらず、決して安全ではありません。
トレンドマイクロのセキュリティプラットフォーム「Trend Vision One™」は、こうしたリスクやそれに伴うデータ侵害を阻止するためのツールやガイドラインを提供します。
さらに、Trend Vision One™の「Cyber Risk Exposure Management」や「Cloud Risk Management」は、不要な外部露出や安全性に欠けるクラウドポリシーを特定し、持続的なセキュリティ、コンプライアンス、ガバナンスを実現します。また、クラウドリソースにおける設定不備の解決や管理を手厚くサポートします。こうした機能は、クラウド上のMCP環境を保護する上で、必須の要素となります。

トレンドマイクロの「Artifact Scanner(アーティファクトスキャナ)」は、MCPサーバ・リポジトリをスキャンし、露出状態のAPIキーやパスワード、トークンなどのシークレットを早期に検知、ブロックすることで、本番環境への流入を阻止します。これにより、データ侵害のリスクを抑止します。
また、Trend Vision One™の「Container Security(コンテナセキュリティ)」は、Kubernetesベースのマイクロサービス内で稼働しているコンテナをスキャンし、露出状態のシークレットを検知します。これにより、情報流出や不正アクセスのリスクを低減します。
参考記事:
Beware of MCP Hardcoded Credentials: A Perfect Target for Threat Actors
By: Alfredo Oliveira and David Fiser
翻訳:清水 浩平(Platform Marketing, Trend Micro™ Research)