大規模言語モデル向けの高度なアクセラレーションシステム「LMCache」で、深刻な脆弱性が見つかりました。この欠陥を悪用すると、攻撃者はパスワードなしでサーバー上の任意のコマンドを実行できます。特定の構成では、root権限をそのまま奪われる恐れもあります。さらに懸念されるのは、現時点で公式の修正版が提供されていないことです。
CVE-2026-105192の発見
この危険な問題を最初に発見したのは、JFrog Security Researchの研究者Yuval Moravchick氏です。脆弱性には識別子「CVE-2026-105192」が割り当てられ、CVSS 3.1では10点満点中9.8という最高レベルの深刻度と評価されました。この攻撃には、ユーザーアカウントも特別な権限もユーザー操作も必要ありません。分散モードで動作する脆弱なサービスにネットワーク経由で到達できれば、それだけで攻撃が成立します。
LMCacheは、KVキャッシュを丁寧に保存することで、ニューラルネットワークの応答生成を大幅に高速化します。KVキャッシュとは、言語モデルが後で再利用できる計算の中間結果です。この仕組みにより、サーバーは既出のテキスト断片を再処理せずに済みます。開発者は、vLLMのような大規模言語モデルの展開システムとあわせて、この技術をよく利用しています。長いクエリを処理する場面や、多数のユーザーが同時に利用する場面で特に効果を発揮します。
分散モードとZeroMQの危険性
この危険な欠陥があるのは、LMCacheの分散モードです。このモードでは、個々のワーカープロセスがZeroMQを使ってキャッシュの内容を高速にやり取りします。サーバーは、他のシステムコンポーネントからのメッセージを受け取るため、通常はポート5555に専用のROUTERネットワークソケットを開きます。ところが開発者は、この重要な接続に必須であるはずの認証を実装していませんでした。そのため、ポートに接続できるノードであれば、身元を確認されることなく自由にメッセージを送信できます。
安全でないデシリアライズの危険
問題の主な原因は、LMCacheシステム内の安全でないデシリアライズにあります。デシリアライズとは、プログラムが受信したデータストリームから複雑なオブジェクトを再構築する処理です。LMCacheはmsgpack形式を使っていますが、ある特定のメッセージタイプだけは、内容をPythonのpickle.loads関数にそのまま渡しています。通常のデータ読み込みとは異なり、pickleにはオブジェクトの再構築中に任意のコードを実行できるという恐ろしい性質があります。このため、巧妙に細工されたパケットが、ホストサーバーのOSに対する危険なコマンドへと瞬時に変わります。
脆弱な箇所は、DeviceIPCWrapper.Deserializeハンドラーの奥深くにあります。サーバーがREGISTER_KV_CACHEメッセージの引数を解析する際、コード1を持つmsgpack拡張がpickle.loadsを呼び出します。深刻なのは、これがメインのハンドラーの実行や受信値の検証より前に行われる点です。したがって攻撃者は、慎重に準備したZeroMQ DEALERメッセージを1つ送るだけで済みます。その後の処理でエラーが起きても、埋め込まれた悪意あるコマンドの実行は止められません。
コンテナ環境でのroot権限の奪取
JFrogは、実際に動作する攻撃のプロトタイプを展開し、この欠陥が悪用可能であることを確認しました。研究者らは、サーバーにシステムコマンドを実行させ、その結果をファイルに記録させることに成功しています。検証の結果、侵害されたプロセスはUID 0の最強権限であるrootアカウントで動作していたことが判明しました。危険性が高まる理由は、公式のLMCacheコンテナイメージにあります。該当プロセスが、最大の権限で起動する設定になっているのです。
緩和策と現在の状況
ただし、このCVSSスコアが高いからといって、すべてのLMCache環境がリモートからの攻撃にさらされるわけではありません。ZeroMQトランスポートは、デフォルトではlocalhostのみを待ち受けます。そのため、外部のコンピューターがサービスに直接接続することはできません。リモート攻撃が成立するのは、管理者が--hostパラメーターでネットワークから到達可能なアドレスを明示的に指定した場合に限られます。管理者がこの設定を使うのは、通常、複数のサーバーにまたがってLMCacheを展開するときです。コンポーネントが単一のvLLMプロセス内だけで動作している場合、脆弱なネットワークポートは閉じたままです。
この問題のある仕組みは、LMCacheのバージョン0.3.9で初めて登場し、その後のリリースにも残り続けました。2026年10月7日に脆弱性が公表された時点で、最新の安定版は9月12日に公開されたバージョン0.5.5でした。この欠陥はバージョン0.5.6rc3までのリリース候補にも存在し、10月7日時点では開発ブランチにも残っていました。重要なのは、10月8日の時点で公開されたパッチが確認できなかったことです。
研究者らは、管理者に対し、分散構成のLMCacheサーバーの設定を直ちに点検し、トランスポートポートへのアクセスを大幅に制限するよう強く推奨しています。包括的なパッチが公開されるまで最も安全な方法は、ZeroMQにlocalhostか、厳格に管理された内部ネットワークからのみアクセスできるようにしておくことです。堅牢なファイアウォールは攻撃者になり得る対象を減らす効果はあるものの、脆弱性そのものをなくすことはできません。ポートへのアクセスを許可されたネットワーク上の参加者であれば、誰でも危険なメッセージを送信できてしまいます。
翻訳元: https://meterpreter.org/critical-lmcache-vulnerability-cve-2026-105192/