Critical (AgentArmorHQ estimate)Remote code execution

LMDeploy has Remote Code Execution by Pickle Deserialization via handle_zmq_recv in lmdeploy/lmdeploy/pytorch/disagg/conn/engine_conn.py

Product
lmdeploy
CVE
CVE-2025-66455
Affected
lmdeploy >= 0.9.2, < 0.16.0
Fixed in
0.16.0

Last verified against sources: October 26, 2026

Am I affected?

lmdeploy: affected lmdeploy >= 0.9.2, < 0.16.0. Fixed in 0.16.0.

  • Check your version: run pip show lmdeploy. Versions >= 0.9.2, < 0.16.0 of lmdeploy are affected. [1]

What to do now

  1. Upgrade to the fixed version: run pip install --upgrade "lmdeploy>=0.16.0" (first patched version 0.16.0). [1]
  2. Upgrade to LMDeploy 0.16.0 or later. [1]
  3. Prevent untrusted clients from reaching /distserve/* endpoints. [1]
  4. Restrict the DistServe HTTP and ZeroMQ control planes to trusted cluster networks. [1]
  5. Configure API-key authentication. [1]

General practice, not from the source: if the affected software could read tokens or credentials, rotate them after upgrading; pin versions and review changes before updating tools your agents run.

Discuss this incident

What happened

  • LMDeploy's DistServe control plane used recv_pyobj() to read messages from a ZeroMQ socket, and that function uses Python pickle, which can run code while rebuilding an object. [1]
  • The address of the other side came from the POST /distserve/p2p_connect HTTP endpoint. [1]
  • An attacker who could reach an affected DistServe API server could make it connect to an attacker-controlled ZeroMQ endpoint and deserialize a crafted pickle payload. [1]
  • API-key authentication is off unless the operator turns it on. [1]

Impact

  • An attacker could run arbitrary code as the LMDeploy serving process. [1]
  • This can expose model weights, prompts, credentials, attached storage, cluster-network services, and host or GPU resources. [1]
  • An attacker may also modify or terminate the serving process. [1]
  • Affected DistServe deployments without API keys allowed unauthenticated remote code execution with the privileges of the LMDeploy serving process. [1]

What was done

  • The maintainers replaced the pickle-based ZeroMQ protocol with JSON serialization. [1]
  • Received objects are validated using the DistServeCacheFreeRequest Pydantic schema before use. [1]
  • Invalid or off-schema messages are rejected without terminating the receive loop. [1]
  • The fix was released in LMDeploy 0.16.0. [1]

Sources

  1. GHSA-2vh9-42vm-xmv2 — GitHub Advisory Database

Every statement above was checked against these sources before publishing. Spotted an error? Tell us and we will correct it with a dated note.

Share advisory brief with your team

Copy a plain-text summary for Slack, GitHub issues, or team security channels.

Brief
[CVE-2025-66455] LMDeploy has Remote Code Execution by Pickle Deserialization via handle_zmq_recv in lmdeploy/lmdeploy/pytorch/disagg/conn/engine_conn.py
Product: lmdeploy | Affected: lmdeploy >= 0.9.2, < 0.16.0 | Fixed in: 0.16.0
Summary: LMDeploy's DistServe control plane used recv_pyobj() to read messages from a ZeroMQ socket, and that function uses Python pickle, which can run code while rebuilding an object.
Source & remediation on AgentArmorHQ: https://agentarmorhq.com/incidents/2026/09/cve-2025-66455-lmdeploy
Was this page useful?

Corrections

Report an error or request a correction. We review requests within 5 business days and add a dated correction note.

10 to 2,000 characters. A link to a source helps. Stored as plain text.

Discussions for CVE-2025-66455

Ask questions or share configuration tips. Governed by our Community Rules & Terms.

No posts match this filter yet.

Be the first to ask a question or share a working tip.

Check before you install

Paste a package name or a GitHub link and get a clear answer in seconds: Block, Review or No known issues. No account needed.

Check a package

Questions? Contact us