Executive brief
LMDeploy is an inference engine for large language models that supports vision capabilities. The vulnerability allows attackers to send specially crafted requests to cause the server to fetch arbitrary URLs, including cloud credential services and internal systems. This can lead to theft of cloud credentials, access to internal services, and lateral movement within corporate networks.
Technical details
LMDeploy's vision-language module contains a server-side request forgery (SSRF) vulnerability in the `load_image()` and `encode_image_base64()` functions within `lmdeploy/vl/utils.py`. These functions fetch image URLs via HTTP requests without validating or filtering private/internal IP address ranges. An unauthenticated attacker can send a POST request to `/v1/chat/completions` with a malicious image URL pointing to cloud metadata services (e.g., 169.254.169.254), internal networks, or localhost services. The server will fetch and process these URLs, exposing sensitive data. The root cause is the absence of URL validation and IP blocklist functionality. Patches are available in version 0.12.3 and later.
Affected products
- LMDeploy LMDeploy before 0.12.3
Timeline
- 2026-04-21: disclosed: Public disclosure via GitHub Security Advisory GHSA-6w67-hwm5-92mq
- 2026-02-04: other: Vulnerability tested and confirmed on main branch
- 2026: patched: Fix available in LMDeploy version 0.12.3 and later