Critical LMCache RCE Vulnerability Remains Unpatched, Public PoC Exploit Available
2026/10/08 gbhackers — LMCache に存在する深刻な脆弱性 CVE-2026-105192 (CVSS 9.8) を悪用する未認証の攻撃者は、安全でない Python pickle のデシリアライズを介して、ネットワーク経由でアクセス可能なマルチプロセス環境で任意のコード実行を引き起こす可能性がある。JFrog は 2026年10月7日に、この脆弱性に関するセキュリティ・アドバイザリと概念実証 (PoC) コードを公開したが、その時点で修正版は提供されていないと説明している。

この脆弱性を発見したのは、JFrog Security Research Team の Yuval Moravchick であり、アドバイザリ JFSA-2026-001694382 に詳細が記載されている。脆弱なデコード処理が導入されたのはバージョン 0.3.9 であり、0.5.5/0.5.6rc3 に至るまでのすべてのリリース候補版および、10月7日に調査された開発ブランチに存在している。
LMCache の RCE 脆弱性
LMCache のマルチプロセス・モードは分散モードとも呼ばれ、ワーカープロセスがキーバリュー・キャッシュのブロックを登録/共有するための ZeroMQ ROUTER ソケットを開く。
この通信経路は、同じ LMCache 環境に属するプロセス間の通信を想定して設計されている。しかし、CURVE/ZAP/パスワードによる保護などの認証機構が存在しないため、外部から接続可能なインスタンスにおいては、信頼できないメッセージによる攻撃を受ける恐れがある。
この通信経路はデフォルトで localhost を使用する。運用担当者は、-host オプションでルーティング可能なアドレスを指定することで、ノード間の接続を有効化できる。
JFrog が強調しているのは、ネットワーク経由でアクセス可能な構成に対してのみ、CVSS 9.8 という深刻度が適用される点である。つまり、他のマシンからアクセスできない、デフォルトの単一ホスト構成には当てはまらない。また、vLLM プロセス内だけで動作する LMCache は、影響を受けるポートを開かない。
受信メッセージには MessagePack が使用され、拡張コード 1 が DeviceIPCWrapper に関連付けられている。デコード時には、lmcache/v1/multiprocess/custom_types.py 内の拡張フックが、埋め込まれたデータを lmcache/v1/platform/base/ipc_wrapper.py の DeviceIPCWrapper.Deserialize に渡す。この関数が pickle.loads を呼び出すため、攻撃者が制御するシリアライズ済みオブジェクトにより、コード実行が引き起こされる可能性がある。
重要なのは、リクエスト・ハンドラの実行前の段階で、サーバが REGISTER_KV_CACHE の引数を処理する前に、デシリアライズが行われる点である。そのため、後続の引数チェック/ハンドラで発生するエラーでは、デコード中に実行されるコードを阻止できない。
JFrog が公開した実証コードは、ZeroMQ DEALER ソケットを通じて、細工したマルチパート・メッセージを通信経路のデフォルト・ポートである 5555 に送信する。キャッシュのペイロードには、オブジェクトの再構築時に OS コマンドを実行する、悪意の pickle オブジェクトを格納した MessagePack 拡張データが含まれている。
この PoC で確認されたのは、id コマンドの出力を /tmp/zmq_pwn に書き込むことで、LMCache プロセスのアカウント権限でコードが実行されることだ。公式コンテナ・イメージでは、このプロセスが root 権限で動作するため、コンテナ内での root 権限によるコード実行が確認されている。ただし、基盤となるホストへのコンテナ・エスケープを実証するものではない。
コード実行後、ハンドラは想定されるラッパー・オブジェクトではなく、コマンドの戻り値を受け取るため、サーバのログには型エラーが記録される。しかし、このエラーが発生する時点では、すでに脆弱性の悪用が成立している。
JFrog が推奨するのは、ネットワーク経由で受信したデータに対して、pickle ベースのデシリアライズから安全なシリアライズ形式に変更し、CURVE/メッセージ単位の HMAC 検証などにより ZeroMQ の通信経路に認証を導入することである。認証が設定されていない場合には、ルーティング可能なアドレスへのバインドを許可すべきではないとしている。
これらの変更が実装されるまでの間、運用担当者に求められるのは、ルーティング可能なアドレスを指定する -host 設定を避け、可能な限り localhost へのバインドを維持し、必要なクラスタ間アクセスをファイアウォール・ルールで制限することである。ネットワーク分離により外部からの攻撃リスクは軽減できるが、脆弱性そのものが修正されるわけではない。脆弱な通信経路に接続できるシステムであれば、LMCache プロセスの権限でコードを実行できる状態が残る。
この記事は、LMCache における深刻な欠陥 CVE-2026-105192 について解説するものです。ZeroMQ 通信経路における認証機能の欠如と不適切なデータ処理に起因して、外部から接続可能な環境において悪意のある要求による任意のプログラム実行/コンテナ内での root 権限奪取といった被害が発生する危険性があります。修正版が提供されるまでの間、ルーティング可能な設定の回避/バインド先を localhost へ限定する運用/アクセス経路の制限などの対応策が求められます。
You must be logged in to post a comment.