🔍 CVE-2026-24779

7.1
CVSS Score
HIGH
2026-01-27
2026-07-21 12:17
✅ 완료

🇰🇷 한글 설명

vLLM 프로젝트의 멀티모달 기능 세트 내에서 Server-Side Request Forgery (SSRF) 취약점이 존재합니다. 이는 MediaConnector 클래스에서 사용자 제공 URL로부터 미디어를 로드하고 처리하는 load_from_url 및 load_from_url_async 메서드에서 발생합니다. 두 파싱 라이브러리의 백슬래시 해석 차이로 인해 호스트 이름 제한을 우회할 수 있습니다. 이로 인해 공격자는 vLLM 서버를 내부 네트워크 리소스에 대한 임의의 요청을 보내도록 강제할 수 있습니다.

💡 쉬운 설명

vLLM 서버에 SSRF 취약점이 있어 공격자가 내부 네트워크를 스캔하거나 민감한 데이터에 접근할 수 있습니다. 이는 컨테이너화된 환경에서 특히 致命적입니다. 공격자는 vLLM 서버를 내부 관리 엔드포인트에 악의적인 요청을 보내게 하여 시스템 불안정을 유발할 수 있습니다.

🇺🇸 원문 (English)

vLLM is an inference and serving engine for large language models (LLMs). Prior to version 0.14.1, a Server-Side Request Forgery (SSRF) vulnerability exists in the `MediaConnector` class within the vLLM project's multimodal feature set. The load_from_url and load_from_url_async methods obtain and process media from URLs provided by users, using different Python parsing libraries when restricting the target host. These two parsing libraries have different interpretations of backslashes, which allows the host name restriction to be bypassed. This allows an attacker to coerce the vLLM server into making arbitrary requests to internal network resources. This vulnerability is particularly critical in containerized environments like `llm-d`, where a compromised vLLM pod could be used to scan the internal network, interact with other pods, and potentially cause denial of service or access sensitive data. For example, an attacker could make the vLLM pod send malicious requests to an internal `llm-d` management endpoint, leading to system instability by falsely reporting metrics like the KV cache state. Version 0.14.1 contains a patch for the issue.

📍 영향받는 시스템

vLLM 버전 0.14.1 이전

⚔️ 공격 벡터

사용자 제공 URL을 통해 MediaConnector 클래스의 load_from_url 및 load_from_url_async 메서드를 악용

🛡️ 대응 방법

vLLM 버전 0.14.1 이상으로 업그레이드

🔧 검증 코드

로컬 시스템에서 Python 3.x를 설치하고, requests 라이브러리를 설치한 후 verification_code를 실행합니다. 로컬 vLLM 서버가 실행 중이어야 하며, 8080 포트를 사용하는 것으로 가정합니다. verification_code의 결과는 JSON 형식으로 출력됩니다.

Shell / Script
import requests
response = requests.get('http://localhost:8080/load_from_url?url=http://example.com')
if response.status_code == 200:
    print({"result": "취약", "reason": "MediaConnector 클래스의 load_from_url 메서드에서 사용자 제공 URL을 처리하는 중 SSRF 취약점이 존재"})
else:
    print({"result": "양호", "reason": "MediaConnector 클래스의 load_from_url 메서드에서 사용자 제공 URL을 처리하는 중 SSRF 취약점이 존재하지 않음"})

📊 CVSS Vector String

CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:L

💻 영향받는 소프트웨어

Python