Analysis and contextual insights are available on OpenCVE Cloud.
Vendor Solution
Upgrade to LMCache 0.5.6 or later. That release replaces pickle in device IPC descriptors with versioned, typed MessagePack descriptors. Descriptors are validated before use, the wrapper type is chosen from a fixed local allowlist, and there is no pickle fallback. The change covers the ZeroMQ and gRPC paths. The wire format changed, so upgrade workers and servers together. The fix is PR #5644 and it is in the v0.5.6 tag. PR #5684, which binds the example Kubernetes deployment to localhost, and PR #5685, which runs the official images as a non-root user, were merged after the v0.5.6 tag was cut and are included in v0.5.7rc2. The v0.5.6 example deployment still passes --host 0.0.0.0, and the v0.5.6 images still run as root.
Tracking
Sign in to view the affected projects.
| Source | ID | Title |
|---|---|---|
Github GHSA |
GHSA-w5f2-9q9c-ff4h | LMCache: Remote code execution via unsafe deserialization in multiprocess mode transport |
Thu, 29 Oct 2026 10:30:00 +0000
| Type | Values Removed | Values Added |
|---|---|---|
| Description | LMCache multiprocess mode, also called distributed mode, opens an unauthenticated ZeroMQ ROUTER so worker processes can register and share KV cache blocks. Messages on that socket are msgpack. Extension code 1 is passed to DeviceIPCWrapper.Deserialize, which calls pickle.loads, while the server is still decoding request arguments and before the handler runs. A single unauthenticated ZMQ DEALER message to the transport port (default 5555) therefore executes code as the user the LMCache process runs as. Official container images run that process as root. The transport binds to localhost unless the operator sets a routable address with --host, which is how multi-node deployments let peers connect. | LMCache multiprocess mode, also called distributed mode, opens an unauthenticated ZeroMQ ROUTER so worker processes can register and share KV cache blocks. Messages on that socket are msgpack. Extension code 1 is passed to DeviceIPCWrapper.Deserialize, which calls pickle.loads, while the server is still decoding request arguments and before the handler runs. A single unauthenticated ZMQ DEALER message to the transport port (default 5555) therefore executes code as the user the LMCache process runs as. Official container images run that process as root. The transport binds to localhost unless the operator sets a routable address with --host, which is how multi-node deployments let peers connect. The decode path shipped in v0.3.9 and is present through v0.5.5, including the v0.5.6 release candidates. v0.5.6, published on 2026-10-14, removes pickle.loads from this path. |
| References |
|
|
Wed, 07 Oct 2026 19:30:00 +0000
| Type | Values Removed | Values Added |
|---|---|---|
| Metrics |
ssvc
|
Wed, 07 Oct 2026 11:45:00 +0000
| Type | Values Removed | Values Added |
|---|---|---|
| First Time appeared |
Lmcache
Lmcache lmcache |
|
| Vendors & Products |
Lmcache
Lmcache lmcache |
Wed, 07 Oct 2026 10:00:00 +0000
| Type | Values Removed | Values Added |
|---|---|---|
| Description | LMCache multiprocess mode, also called distributed mode, opens an unauthenticated ZeroMQ ROUTER so worker processes can register and share KV cache blocks. Messages on that socket are msgpack. Extension code 1 is passed to DeviceIPCWrapper.Deserialize, which calls pickle.loads, while the server is still decoding request arguments and before the handler runs. A single unauthenticated ZMQ DEALER message to the transport port (default 5555) therefore executes code as the user the LMCache process runs as. Official container images run that process as root. The transport binds to localhost unless the operator sets a routable address with --host, which is how multi-node deployments let peers connect. | |
| Title | LMCache Unauthenticated RCE in multiprocess mode via pickle deserialization | |
| Weaknesses | CWE-306 CWE-502 |
|
| References |
| |
| Metrics |
cvssV3_1
|
Status: PUBLISHED
Assigner: JFROG
Published:
Updated: 2026-10-29T10:24:45.984Z
Reserved: 2026-10-04T11:50:41.213Z
Link: CVE-2026-105192
Updated: 2026-10-07T17:48:33.165Z
Status : Deferred
Published: 2026-10-07T10:17:32.647
Modified: 2026-10-29T11:17:24.523
Link: CVE-2026-105192
No data.
OpenCVE Enrichment
Updated: 2026-10-29T13:00:22Z
Github GHSA