1. LMDeploy

- LLM을 효율적으로 압축, 배포, 서비스하기 위한 오픈소스 툴킷 [1][2]

※ Vision-Language Module(VLM) : 컴퓨터 비전(이미지 이해)과 자연어 처리(텍스트 이해)를 결합하여 이미지와 텍스트를 동시에 이해하고 처리할 수 있는 모델 [3]

2. 취약점

[사진 1] CVE-2026-33626 [4]

- 내부/사설 IP 주소 여부를 검증하지 않고 임의의 URL에서 이미지를 가져와 공격자가 내부 네트워크 및 민감 리소스에 접근할 수 있는 SSRF 취약점 [5]

> 취약점이 공개된 지 13시간 만에 악용 사례 발생

영향받는 버전
- LMDeploy 0.12.0 이하 Vision-Language 지원 기능이 있는 모든 버전

 

- load_image() 및 encode_image_base64()는 URL 스키마 및 내부/사설 IP 주소를 검증하지 않고 임의의 경로에서 이미지를 가져옴 [6][7]

> 또한, 서버가 기본적으로 0.0.0.0에 바인딩되어 외부에서 접근 가능하며, API 인증 비활성화되어 있어 누구나 요청이 가능함 [8]

lmdeploy/vl/utils.py
def encode_image_base64(image: Union[str, Image.Image]) -> str:
	...
            if url_or_path.startswith('http'):
            	response = requests.get(url_or_path, headers=headers, timeout=FETCH_TIMEOUT)
            ...
            
def load_image(image_url: Union[str, Image.Image]) -> Image.Image:
    ...
        elif image_url.startswith('http'):
            response = requests.get(image_url, headers=headers, timeout=FETCH_TIMEOUT)
            ...

 

- 따라서, 공격자는 이를 통해 클라우드 자격 증명 탈취, 내부 서비스 접근, 정보 유출(내부 포트 스캔), 횡적 이동 등이 가능

> 169.254.169.254는 클라우드 환경에서 실행 중인 인스턴스의 메타데이터(Instance Metadata)를 조회하기 위한 링크 로컬 주소

> 인스턴스 ID, AMI ID, IP 주소, 보안 그룹, IAM Role 등 민감한 정보가 포함되며, 탈취 시 클라우드 리소스에 대한 권한 획득으로 이어질 수 있음

POST /v1/chat/completions
{
  "model": "internlm-xcomposer2",
  "messages": [{
    "role": "user", 
    "content": [
      {"type": "text", "text": "Describe this image"},
      {"type": "image_url", "image_url": {"url": "http://169.254.169.254/latest/meta-data/iam/security-credentials/"}}
    ]
  }]
}

3. 대응방안

- 벤더사 제공 업데이트 적용

> _is_safe_url() 함수를 통해 요청을 보내기 전 URL의 안전성을 검증 [9][10]

취약점 제품명 영향받는 버전 해결 버전
CVE-2026-33626 LMDeploy 0.12.0 이하 0.12.3

4. 참고

[1] https://github.com/InternLM/lmdeploy
[2] https://lmdeploy.readthedocs.io/en/latest/index.html
[3] https://www.ibm.com/kr-ko/think/topics/vision-language-models
[4] https://nvd.nist.gov/vuln/detail/CVE-2026-33626
[5] https://github.com/InternLM/lmdeploy/security/advisories/GHSA-6w67-hwm5-92mq
[6] https://github.com/InternLM/lmdeploy/blob/9564876a52d304b485575c495e61f345a57e1a16/lmdeploy/vl/utils.py#L27
[7] https://github.com/InternLM/lmdeploy/blob/9564876a52d304b485575c495e61f345a57e1a16/lmdeploy/vl/utils.py#L64
[8] https://github.com/InternLM/lmdeploy/blob/9564876a52d304b485575c495e61f345a57e1a16/lmdeploy/serve/openai/api_server.py#L1393-L1394
[9] https://github.com/InternLM/lmdeploy/blob/v0.12.3/lmdeploy/vl/utils.py
[10] https://github.com/InternLM/lmdeploy/blob/8ea459f49ed9cd943481073011424919e31e3e3b/lmdeploy/vl/media/connection.py#L25
[11] https://thehackernews.com/2026/04/lmdeploy-cve-2026-33626-flaw-exploited.html

+ Recent posts