flawopen.com/AI Security/lmcache-multiprocess-pickle-deserialization-cve-2026-105192
CVE-2026-105192:LMCache マルチプロセスモードの未認証 pickle デシリアライズ
CVE-2026-105192 では、LMCache のマルチプロセス通信に到達できる未認証の相手が、安全でない pickle デシリアライズを発生させる可能性があります。ZMQ エンドポイントの到達性を確認し、アクセスを制限して、ベンダーの修正を確認してください。[1], [2]
💡 わかりやすい解説 (ELI5)
LMCache はネットワーク上の相手から封印された荷物を受け取り、中に隠された指示を実行し得る方法で開封します。サーバーが荷物の申告するメッセージ種別を確認する前に問題が起きます。[1], [2]
主要な概念と専門用語
LMCache マルチプロセスモード- LMCache コンポーネントが ZeroMQ 通信で連携するモードです。CVE レコードは未認証の ROUTER エンドポイントを説明しています。[2], [5]
MessagePack 拡張- デコード中の MessagePack 拡張値は、リクエスト種別の振り分け前に DeviceIPCWrapper.Deserialize へ渡されます。[2], [4], [3]
CWE-306:重要機能の認証欠如- CVE レコードは、ZeroMQ ROUTER が接続ピアを認証しない点から
CWE-306も割り当てています。これは pickle による安全でない復元(CWE-502)とは別の、トランスポート境界の弱点です。影響には endpoint への到達性が必要であり、既定の localhost バインドだけではリモートから到達できません。[2]
フレームワーク対応
ステップ・バイ・ステップの攻撃フロー
ステップ 3
デプロイ条件と対応
| 条件 | 評価 |
|---|---|
| マルチプロセスモード無効 | この CVE の経路は有効になりません。 |
| loopback のみで bind | 遠隔の相手は通常到達できません。ホストネットワークとローカルの信頼境界を確認してください。 |
| 到達可能な bind またはクラスターポート公開 | 到達可能な可能性があるものとして扱い、アクセスとプロセス権限を確認してください。 |
| 影響するバージョン | 開示では、2026年10月7日時点で 0.3.9〜0.5.5、0.5.6 のリリース候補および開発ブランチが影響するとされています。 |
ソースコード比較:脆弱 vs 堅牢化
CVE Program の記録は CVE-2026-105192 を JFrog に帰属させ、MessagePack 拡張 → DeviceIPCWrapper.Deserialize → pickle.loads の経路、localhost の既定 bind、到達可能な --host、CVSS 9.8 を記載しています。上流コードもデシリアライズ呼び出しを確認できます。本記事に武器化 pickle はなく、ベンダー修正が公開済みとも主張しません。エンドポイントへの到達が必要であり、localhost の既定 bind だけで遠隔到達可能になるわけではありません。一時的なコード例はデコード経路を停止するもので、LMCache にそのまま適用できるパッチではありません。影響を評価し、サポートされた修正までネットワークを隔離してください。[2], [1], [3], [4], [5]
脆弱な実装
@staticmethod
def Deserialize(data: bytes) -> DeviceIPCWrapper:
return pickle.loads(data)
堅牢化されたセキュアパッチ
@staticmethod
def Deserialize(data: bytes) -> DeviceIPCWrapper:
# 一時的なフェイルクローズ型の封じ込め策であり、upstream のパッチではありません。
raise PermissionError("LMCache peer deserialization disabled pending vendor fix")
エンジニアリング&システム堅牢化チェックリスト
- ✓LMCache の利用環境を棚卸しし、マルチプロセス/分散モードの有無とパッケージ・コンテナーのバージョンを記録します。[1], [2]
- ✓実際の ZMQ bind アドレスとネットワーク経路を確認します。信頼できないワークロードやテナントが到達できるなら、プライベートネットワークだけでは不十分です。[2], [5]
- ✓ベンダー修正が出るまで可能ならマルチプロセス通信を無効化します。単一ホストで足りる場合は loopback のみにします。複数ノードが必須なら、明示的に信頼した相手だけにポートを許可します。到達性は下がりますが pickle が安全になるわけではありません。 今後、ルーティング可能な環境へ展開する場合は、ZMQ ピア認証(CURVE またはメッセージごとの HMAC など)を必須にし、pickle を検証済みのデータ専用形式へ置き換えます。ファイアウォールの許可リストは認証の代わりになりません。
- ✓専用の非特権ユーザーでサービスを実行し、不要なコンテナー機能を削除します。CVE レコードによると公式コンテナーは root で動作します。[2]
- ✓LMCache のセキュリティ告知とリリースを確認します。
CVE-2026-105192の修正が明記されたバージョンへ更新してください。確認した開示資料には修正版が記載されていません。[1], [2] - ✓マルチプロセス通信ポート(CVE レコードでは既定 5555)への不審な接続を確認し、侵害を断定する前に露出を調査します。[2], [5]
参考資料
- JFrog Security Research: CVE-2026-105192 mechanics and mitigations
- CVE Program record CVE-2026-105192 (JFrog CNA record)
- LMCache upstream: DeviceIPCWrapper deserialization source
- LMCache upstream: MessagePack extension decoding
- LMCache upstream: multiprocess ZeroMQ transport
- The Hacker News: critical LMCache pickle deserialization disclosure