무슨 일이 있었나
LMCache의 다중 프로세스/분산 모드는 인증 없는 ZeroMQ ROUTER(기본 포트 5555)를 열어 워커들이 KV 캐시 블록을 공유할 수 있게 합니다. 메시지는 msgpack이며, 확장 코드 1은 DeviceIPCWrapper.Deserialize에 전달되어 요청 인자를 디코딩하는 동안 pickle.loads를 호출합니다. 따라서 다중 노드 배포처럼 전송이 라우팅 가능한 주소에 바인딩되면, 단일 인증 없는 ZMQ 메시지가 LMCache 프로세스(공식 컨테이너 이미지에서는 root)로 코드를 실행합니다.
왜 중요한가
LMCache는 많은 팀이 vLLM 추론 서버에 부착하는 KV-캐시 계층입니다; 전송 포트에 접근할 수 있는 공격자는 모델 서빙 호스트에서 사전 인증 RCE를 얻고, 모델 가중치와 프롬프트 캐시를 읽고/쓸 수 있으며, 서빙 클러스터로 피벗할 수 있습니다. 이는 분명한 AI 서빙 인프라 결함입니다. 관련 문제(CVE-2026-107204)와 선택적 /run_script 엔드포인트는 노출 범위를 넓힙니다.
공격 경로
전송 포트로 전송되는 단일 인증 없는 ZMQ DEALER 메시지로, pickle.loads를 트리거하는 조작된 msgpack 확장을 포함
영향받는 시스템
vLLM의 KV-캐시 계층으로 사용되는 LMCache 0.3.9 ~ 0.5.5 (및 0.5.6 릴리스 후보); ZeroMQ 전송이 라우팅 가능한 주소에 바인딩될 때 / 예제 K8s 매니페스트가 모든 인터페이스에 바인딩할 때 노출됨
완화 방안
LMCache 0.5.6으로 업그레이드 (pickle을 버전이 지정된 타입드 MessagePack으로 대체; 예제 K8s 매니페스트는 이제 localhost에 바인딩, 이미지는 비루트로 실행). 그 전까지는 전송을 localhost/신뢰된 클러스터에 유지하고, 포트 5555를 방화벽으로 차단하며, 비루트로 실행하십시오.