本文へ

利用状態: ログイン状態を復元中...

Deep DiveAbcas Security Research

MCPのcredentialsとlogs: redaction前に分ける4つの信頼境界

環境変数で渡したcredentialはprocess、child process、外部API、logsへ広がり得ます。redactionを最後の補助に限定し、scope、継承、保存、閲覧権限を別々に制御する導入条件です。

Read in English

MCP serverへ環境変数で渡したcredentialは、設定ファイルから消しただけでは保護されません。processが値を読める時点で、そのprocessが起動するchild process、外部API要求、例外、stdout・stderr、log collectorも新しい信頼境界になります。redactionは偶発的な表示を減らす補助であり、credentialへのaccess controlや漏えい後の失効を代替しません。

credentialが通過する4つの境界

境界必要な制限失敗時の影響
secret store → MCP launcherserverごとの最小credentialだけを注入無関係なserverまで同じsecretを取得
launcher → process / child processenvironment継承のallowlistpackage、hook、child commandへ不要なcredentialが伝播
MCP server → external API対象resourceと最小scope別APIや過剰な操作権限へ到達
process → stdout・stderr・logs値を出さない設計、限定閲覧、短い保持logが再利用可能なcredential保管場所へ変化

たとえば検索用MCPだけが必要とするSEARCH_API_TOKENを、client全体のlogin environmentへ入れると、同じclientが起動する別serverも読み取れる可能性があります。対象serverだけに注入しても、診断用のenvironment dump、HTTP headerを含むerror、child processへの全environment継承があれば境界は再び広がります。

現行仕様が示すtoken theft

MCP 2026-07-28 Authorization Security Considerationsは、clientに保存されたtokenだけでなく、serverにcacheまたはlogされたtokenを得た攻撃者も、resource serverから正規要求に見えるaccessを実行できると説明しています。clientとserverにはsecure token storageが必須で、短命access tokenとpublic clientのrefresh token rotationも被害範囲を抑える要件です。

この要件はOAuth tokenに直接適用されます。API key、database credential、cloud credentialについても、processから読める値は同じ運用境界として扱うのがMCP Guardの推奨です。credentialの種類が違っても、logへ出た後にaccessできる人と保持期間が増える点は変わりません。

redactionの限界と受入条件

GitHub Actionsの公式資料は、automatic redactionが変換済み・構造化されたsecretを必ず隠すわけではないこと、侵害されたrunnerではredactionがsecurity boundaryにならないことを明記しています。完全一致のmaskは、分割、encoding、派生token、別形式のAuthorization valueを見逃す場合があります。

接続前には、次の条件を実際の起動pathとlog基盤で確認します。これはMCP Guardの実務推奨であり、MCP仕様が定めるlog書式ではありません。

  • server専用credential、最小scope、対象resource、owner、失効方法
  • child processへ渡すenvironment名のallowlistと、無関係な環境変数の不在
  • 正常系・認証失敗・timeout・外部API errorで、credentialやAuthorization headerを出力しない確認
  • stdout、stderr、application log、collector、error trackingごとの閲覧者と保持期間
  • 漏えい時のlog削除、credential revoke・rotation、影響期間の特定手順

redaction testには、本番credentialではなく専用canaryを使います。mask成功だけを受入れ根拠にせず、元の値を出さないこととlog閲覧権限の限定を先に確認します。広いlogin environmentの継承、全environment dump、長期tokenを含むlogが残る構成は、境界を修正してcredentialをrotationするまで接続を見送ります。

確認範囲と出典

2026年9月22日に、MCP 2026-07-28 Authorization Security Considerations、Security Best Practices、GitHub Actionsのsecure-useおよびcompromised-runner資料を確認した設計分析です。特定MCP serverのsecret漏えい、実際のlog内容、またはCVEを示すものではありません。表とOAuth以外のcredential受入条件は、公開要件に基づくMCP Guardの実務推奨です。