{ "dataType": "CVE_RECORD", "dataVersion": "5.2", "cveMetadata": { "cveId": "CVE-2026-105192", "assignerOrgId": "48a46f29-ae42-4e1d-90dd-c1676c1e5e6d", "state": "PUBLISHED", "assignerShortName": "JFROG", "dateReserved": "2026-10-04T11:50:41.213Z", "datePublished": "2026-10-07T09:40:11.449Z", "dateUpdated": "2026-10-07T17:48:50.681Z" }, "containers": { "cna": { "providerMetadata": { "orgId": "48a46f29-ae42-4e1d-90dd-c1676c1e5e6d", "shortName": "JFROG", "dateUpdated": "2026-10-07T09:40:11.449Z" }, "title": "LMCache Unauthenticated RCE in multiprocess mode via pickle deserialization", "problemTypes": [ { "descriptions": [ { "lang": "en", "cweId": "CWE-502", "description": "CWE-502: Deserialization of Untrusted Data", "type": "CWE" } ] }, { "descriptions": [ { "lang": "en", "cweId": "CWE-306", "description": "CWE-306: Missing Authentication for Critical Function", "type": "CWE" } ] } ], "affected": [ { "vendor": "LMCache", "product": "LMCache", "collectionURL": "https://pypi.org/project/lmcache/", "packageName": "lmcache", "repo": "git://github.com/LMCache/LMCache", "programFiles": [ "lmcache/v1/multiprocess/transport/zmq_impl/mq.py", "lmcache/v1/multiprocess/mq.py", "lmcache/v1/multiprocess/custom_types.py", "lmcache/v1/platform/base/ipc_wrapper.py", "lmcache/v1/platform/base_ipc_wrapper.py" ], "versions": [ { "status": "affected", "version": "0.3.9", "lessThanOrEqual": "*", "versionType": "python" } ], "defaultStatus": "unaffected" } ], "descriptions": [ { "lang": "en", "value": "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.", "supportingMedia": [ { "type": "text/html", "base64": false, "value": "
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.
" } ] } ], "references": [ { "url": "https://github.com/LMCache/LMCache", "name": "LMCache repository", "tags": [ "product" ] }, { "url": "https://pypi.org/project/lmcache/", "name": "lmcache on PyPI", "tags": [ "product" ] }, { "url": "https://github.com/LMCache/LMCache/blob/v0.5.5/lmcache/v1/platform/base/ipc_wrapper.py", "name": "DeviceIPCWrapper.Deserialize calls pickle.loads (v0.5.5)", "tags": [ "technical-description" ] }, { "url": "https://github.com/LMCache/LMCache/blob/v0.3.9/lmcache/v1/multiprocess/custom_types.py", "name": "msgpack extension code 1 decoded with pickle (v0.3.9)", "tags": [ "technical-description" ] } ], "metrics": [ { "format": "CVSS", "scenarios": [ { "lang": "en", "value": "Multiprocess mode bound to a routable address, the documented multi-node deployment" } ], "cvssV3_1": { "version": "3.1", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "NONE", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "HIGH", "integrityImpact": "HIGH", "availabilityImpact": "HIGH", "baseSeverity": "CRITICAL", "baseScore": 9.8, "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H" } } ], "timeline": [ { "time": "2025-10-29T21:47:00.000Z", "lang": "en", "value": "LMCache v0.3.9 ships the multiprocess ZMQ transport and the pickle-backed msgpack extension" } ], "credits": [ { "lang": "en", "value": "Yuval Moravchick", "type": "finder" }, { "lang": "en", "value": "JFrog Security Research", "type": "coordinator" } ], "source": { "discovery": "EXTERNAL" }, "x_generator": { "engine": "Vulnogram 1.0.5" } }, "adp": [ { "metrics": [ { "other": { "type": "ssvc", "content": { "timestamp": "2026-10-07T17:47:55.401134Z", "id": "CVE-2026-105192", "options": [ { "Exploitation": "none" }, { "Automatable": "yes" }, { "Technical Impact": "total" } ], "role": "CISA Coordinator", "version": "2.0.3" } } } ], "title": "CISA ADP Vulnrichment", "providerMetadata": { "orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0", "shortName": "CISA-ADP", "dateUpdated": "2026-10-07T17:48:50.681Z" } } ] } }