Smithery MCP Server の脆弱性が FIX:パス・トラバーサル攻撃から API キー流出へ

Critical Vulnerability in MCP Server Platform Exposes 3,000+ Servers and Thousands of API Keys

2025/10/22 CyberSecurityNews — MCP (Model Context Protocol) サーバのレジストリとして広く利用される Smithery.ai に、深刻な脆弱性が発見された。この脆弱性を悪用する攻撃者は、3,000 台以上の AI サーバから情報を盗み出し、多数のサービスにまたがる数千人のユーザーから API キーを盗み出すことが可能な状況にあった。MCP とは、ローカル・ファイルやリモート・データベースなどの外部ツール/データに、AI アプリをリンクさせることで、その機能を強化するものだ。そのサーバにはローカル版とリモート版があるが、多くのリモート版は自社ホストやプロバイダーにより完全に管理されている。

GitGuardian によると、Smithery.ai のハイブリッド・モデルは、ユーザーが登録したサーバを GitHub リポジトリから Docker イメージに構築し、自社のインフラ上でホストすることで、導入を簡素化している。しかし、この利便性がリスクを増大させている。1件の侵害が AI ツールのエコシステム全体に波及する可能性がある。

単純な構成の脆弱性を悪用

この脆弱性は、Smithery のビルド・プロセスにおける不適切な管理に起因する。ユーザーが送信するファイルは、dockerBuildPath を介して Docker ビルド・コンテキストを指定した smithery.yaml である。そこでの正当な設定はリポジトリ内を指しているが、システムが入力を検証していないため、パス・トラバーサル攻撃が可能な状況にあった。

つまり、dockerBuildPath を “..” に設定する攻撃者は、リポジトリ外のビルダー・マシンのホームディレクトリを参照し、悪意の Dockerfile に機密ファイルを公開する可能性を手にしていた。

GitGuardian のテストでは、不正な YAML と Dockerfile を使用して “test” という名前のリポジトリが作成された。Dockerfile では curl が用いられ、攻撃者が管理するサイトへのディレクトリ・ツリーの持ち出しが可能になるため、”.docker/config.json” などのファイルの存在が明らかになってしまう。

さらに、このファイルには、Docker レジストリへのアクセスを目的とした、過剰な権限の Fly.io 認証トークンが含まれ、より広範なマシン API 権限が付与されていた。

Smithery のホスティングは、Fly.io 認証により仮想コンテナで実行されており、このトークンの悪用により、MCP サーバなどの 3,243 個のアプリ/サービスのインフラを持つ組織のロックが解除されていた。

このトークンを悪用する攻撃者は、アプリに対するクエリや、マシン上でのコード実行 (“id” コマンドでルート・アクセスを確認)、ネットワーク・トラフィックのスニッフィングなどを可能にする。

Compromised Server key
Compromised Server key

したがって、侵害されたサーバへの HTTP リクエストをキャプチャすると、クエリ・パラメータ内の Brave キーといった、クライアントが送信した API キーが公開されてしまう。GitGuardian によると、この攻撃が大規模化すると、MCP サーバ経由でサービスに接続する、数千のクライアントから機密情報が漏洩する可能性があるという。

このインシデントが浮き彫りにするのは、集中型 AI ホスティングにおけるサプライチェーンの危険性である。MCP サーバは、OAuth ではなく静的 API キーを使用することが多いため、権限制限は複雑になり、攻撃は容易になる。

このインシデントは、Salesloft の OAuth 悪用を彷彿とさせるものであり、1つの脆弱性から信頼関係の悪用が生じ、ラテラル・ムーブメントが可能になることを示している。

Smithery は 6月13日に情報を公開し、6月15日にトラバーサルの問題を修正し、キーのローテーションとビルドの強化を行った。AI エコシステムが拡大しているが、このようなプラットフォームで分離を優先し、エコシステム全体の脅威から開発者を保護する必要がある。