何が起きたか
MCP Kotlin SDKの共有ReadBuffer実装は、受け取ったバイトチャンクを追加する際に累積バッファサイズに上限がなく、接続されたすべてのMCPピアによってトリガー可能なメモリ枯渇サービス拒否状態を可能にします。
なぜ重要か
言語全体でのMCP採用の増加に伴い、公式SDK レベルのリソース枯渇バグは、そのSDK上に構築されたすべてのアプリケーションに影響を与える可能性があります。これは、急速に拡大しているエージェントツーリングプロトコルの公式Kotlin実装における狭い影響範囲だが正確に範囲指定された欠陥です。
攻撃経路
ReadBuffer.appendは受け取ったバイトチャンクをすべて総バッファサイズを制限することなく書き込み、悪意のあるまたは不具合のあるMCPピアが無制限のストリームを送信して受信側のメモリを枯渇させ、サービス拒否を引き起こすことができます。
影響を受けるシステム
MCP Kotlin SDK(modelcontextprotocol/kotlin-sdk)、バージョン 0.7.0~0.12.0
緩和策
利用可能になったら修正版MCP Kotlin SDKにアップグレードしてください。暫定的な軽減策として、トランスポートレイヤーでメッセージサイズ制限を適用してください。