macOS의 Docker Model Runner에 있는 MLX 추론 백엔드는 MLX-LM 라이브러리를 사용합니다. 이 라이브러리는 config.json의 model_file 구성 필드를 통해 모델 디렉터리에서 임의의 Python 파일을 무조건 가져오고 실행합니다. 모델의 config.json이 Python 파일을 가리키는 model_file을 지정하면 MLX-LM은 importlib를 사용하여 trust_remote_code 게이트 또는 동등한 안전 확인 없이 이를 로드하고 실행합니다. MLX 백엔드는 샌드박싱 없이 실행되므로 Docker에서 임의 코드가 실행됩니다.
macOS의 Docker Model Runner에 있는 MLX 추론 백엔드는 MLX-LM 라이브러리를 사용합니다. 이 라이브러리는 config.json의 model_file 구성 필드를 통해 모델 디렉터리에서 임의의 Python 파일을 무조건 가져오고 실행합니다. 모델의 config.json이 Python 파일을 가리키는 model_file을 지정하면 MLX-LM은 importlib를 사용하여 trust_remote_code 게이트 또는 동등한 안전 확인 없이 이를 로드하고 실행합니다. MLX 백엔드는 샌드박싱 없이 실행되므로 Docker 호스트에서 Docker Desktop 사용자로 임의 코드가 실행됩니다.
Docker 네트워크의 모든 컨테이너는 model-runner.docker.internal API를 호출하여 공격자가 제어하는 OCI 레지스트리에서 악성 모델을 가져와 추론을 요청함으로써 이를 트리거할 수 있습니다.
왜 이 VPI인가 (설명가능 · 실험적)
VPI 산정 기준
| 영향도 | 88.00 |
| 악용 신호(추가 악용신호 없음) | ×1.00 |
| VPI | 88.00 |
VPI 공식 vpi-v1 기준
| 소스 | CVSS 버전 | 기본 점수 | 심각도 | 벡터 문자열 | 평가일 |
|---|---|---|---|---|---|
| NVDNIST | 4.0 | 8.8 | HIGH | CVSS:4.0/AV:L/AC:L/AT:P/PR:L/UI:N/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X | 2026. 06. 02. |
| NVDNIST | 3.1 |
| 8.2 |
HIGH |
| CVSS:3.1/AV:L/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:H |
| 2026. 06. 02. |