Model Context Protocol(MCP)のTypeScript SDKに、HTTPサーバーが受け付けるPOST本文のサイズとJSON-RPCバッチ数を制限しない脆弱性が見つかった。信頼できないクライアントが到達可能なサーバーではメモリ枯渇や処理停滞につながり得るため、SDKの利用形態と修正版を確認したい。
30秒でわかる / THE SIGNAL
Model Context Protocol(MCP)のTypeScript SDKに、HTTPサーバーが受け付けるPOST本文のサイズとJSON-RPCバッチ数を制限しない脆弱性が見つかった。信頼できないクライアントが到達可能なサーバーではメモリ枯渇や処理停滞につながり得るため、SDKの利用形態と修正版を確認したい。
HTTPで公開したMCPサーバーにDoSリスク
開発元のGHSA-f897-62hf-6gxqによると、影響バージョンはStreamable HTTPで受け付けるPOST本文サイズとJSON-RPCバッチ内メッセージ数に上限を設けていなかった。大きなリクエストでメモリが枯渇し、長いバッチで他のクライアントへの応答が妨げられる恐れがある。アプリケーション側で認証を実施していなければ認証不要で到達可能。stdio専用サーバーは対象外。Expressの`express.json()`による本文サイズ制限だけではバッチ件数の制限にはならない。
影響バージョンと修正版
`@modelcontextprotocol/sdk` 1.10.0以上1.30.1未満は1.30.1へ、`@modelcontextprotocol/server` 2.0.0は2.1.0へ、`@modelcontextprotocol/node` 2.0.0は2.1.0へ、`@modelcontextprotocol/hono` 2.0.0は2.0.1へ更新する。修正版では4MiBを超える本文はHTTP 413、100件を超えるバッチはHTTP 400となる。必要に応じて`maxRequestBodySize`を設定できる。
運用上の確認点
インターネットや信頼できないクライアントからHTTPで到達可能なMCPサーバーを優先点検する。更新までの暫定策としてリバースプロキシでPOST本文サイズを制限する。開発元勧告は10月15日に公開され、GitHub Advisory Databaseへの登録は10月27日。実環境での悪用は一次情報から確認できない。