Explain This: LMDeploy Turned an Image Fetch Into an Internal Network Probe

LMDeploy's SSRF bug shows how a model server feature can become a fast path into cloud metadata and internal services.

Explain This: LMDeploy Turned an Image Fetch Into an Internal Network Probe

LMDeploy is supposed to help teams serve large models faster. This week it became a reminder that AI infrastructure can quietly inherit the oldest web security mistakes.

CVE-2026-33626 is an SSRF flaw in LMDeploy's vision-language image loading path. Within about 12 and a half hours of public disclosure, Sysdig said it saw an attacker using the bug against honeypot systems to probe cloud metadata, internal services, and loopback targets. That speed matters more than the vendor name. It shows how quickly an AI serving feature can become an operator problem.

What It Is

The GitHub advisory says LMDeploy's load_image() function fetched arbitrary URLs without blocking internal or private IP ranges. In practice, that means a model server that accepts image URLs could be tricked into making requests the attacker could not make directly.

That is the heart of SSRF. The attacker does not need the model host to execute code. They need it to send network traffic on the attacker's behalf.

According to the advisory, affected versions are all releases before 0.12.3. The bug sits in the vision-language module, which is exactly the sort of feature many teams enable for convenience because it feels like product surface, not infrastructure risk.

The reason this is dangerous is simple. A model server usually has network reach the public internet does not. It may be able to hit AWS Instance Metadata Service, Redis, MySQL, admin panels, or other internal endpoints. Once image loading can fetch attacker-chosen URLs, the model server starts behaving like a blind internal recon tool.

Why It Matters

This is not just a bug in one open source project. It is a pattern.

AI infrastructure stacks are full of components that fetch remote files, call tools, resolve URLs, proxy prompts, and move data between trusted and untrusted contexts. Teams often review those features for usefulness first and security second. CVE-2026-33626 is a clean example of why that order fails.

Sysdig's analysis, as summarized by The Hacker News, said the observed attacker did more than verify the issue. They tested AWS metadata access, touched Redis and MySQL targets, exercised an out-of-band DNS callback, and scanned loopback services. That is an operator lesson, not a lab curiosity. If your model server can reach sensitive resources, an SSRF bug can become credential theft, internal discovery, and lateral movement prep in one move.

There is also a speed lesson here. The GitHub advisory was specific enough to point directly at the vulnerable file, the function, and the root cause. That helps defenders patch, but it also lowers the cost of exploit development. For security teams, the effective patch window for exposed AI infrastructure is collapsing.

What to Do This Week

  1. Inventory every LMDeploy deployment and confirm whether any environment is still on 0.12.2 or earlier.
  2. Upgrade affected systems to 0.12.3 or later, then verify the running version instead of assuming package management completed cleanly.
  3. Review whether any vision-language or multimodal endpoints accept user-supplied URLs, then treat those paths as network egress controls, not just application features.
  4. Block access from model-serving hosts to cloud metadata services, internal admin interfaces, and other high-value internal endpoints unless they are explicitly required.
  5. Add detections for unusual outbound requests from inference servers, especially requests to metadata addresses, loopback targets, RFC1918 space, and out-of-band callback domains.
  6. Revisit AI platform threat models and ask a harder question: which convenience features can make the model host fetch, call, or resolve something on behalf of an untrusted user?

The useful framing for leaders is this: an image URL field is not just a product detail. In the wrong design, it is a network primitive.

Sources