Diffusers는 사전 훈련된 확산 모델을 위한 라이브러리입니다. 0.38.0 이전에는 DiffusionPipeline.from_pretrained의 trust_remote_code 우회를 통해 사용자가 trust_remote_code=False를 전달하거나 기본값인 생략에도 불구하고 임의의 원격 코드 실행을 허용했습니다. 이 취약점에는 세 가지 변형이 있으며 모두 동일한 근본 원인을 공유합니다. trust_remote_code 게이트는 실제 동적 모듈 로드 사이트가 아닌 DiffusionPipeline.download() 내부에서 구현되었으므로 우회하는 모든 코드 경로
Diffusers는 사전 훈련된 확산 모델을 위한 라이브러리입니다. 0.38.0 이전에는 DiffusionPipeline.from_pretrained의 trust_remote_code 우회를 통해 사용자가 trust_remote_code=False를 전달하거나 기본값인 생략에도 불구하고 임의의 원격 코드 실행을 허용했습니다. 이 취약점에는 세 가지 변형이 있으며 모두 동일한 근본 원인을 공유합니다. trust_remote_code 게이트는 실제 동적 모듈 로드 사이트가 아닌 DiffusionPipeline.download() 내부에서 구현되었으므로 download()를 우회하거나 단락시킨 코드 경로도 보안 검사를 우회했습니다. DiffusionPipeline.from_pretrained('repoA', custom_pipeline='attacker/repoB', trust_remote_code=False) — 게이트는 repoB가 아닌 repoA의 파일 목록에 대해 평가되었으므로 repoB의 파이프라인.py가 로드되고 실행되었습니다. DiffusionPipeline.from_pretrained('/local/snapshot', custom_pipeline='attacker/repoB', trust_remote_code=False) — 로컬 경로 분기는 download()를 호출하지 않았으므로 게이트에 도달하지 않았고 repoB의 원격 코드가 실행되었습니다. DiffusionPipeline.from_pretrained('/local/snapshot', trust_remote_code=False) 여기서 스냅샷에는 model_index.json에서 참조된 사용자 지정 구성 요소 파일(예: unet/my_unet_model.py)이 포함되어 있습니다. — 동일한 근본 원인입니다. 로컬 경로가 download()를 건너뛰고 사용자 정의 구성 요소 코드가 실행되었습니다. 이 취약점은 0.38.0에서 수정되었습니다.
왜 이 VPI인가 (설명가능 · 실험적)
VPI 산정 기준
| 영향도 | 88.00 |
| 악용 신호(PoC 존재) | ×1.20 |
| VPI | 100.00 |
VPI 공식 vpi-v1 기준
| 소스 | CVSS 버전 | 기본 점수 | 심각도 | 벡터 문자열 | 평가일 |
|---|---|---|---|---|---|
| NVDNIST | 3.1 | 8.8 | HIGH | CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H | 2026. 05. 14. |
| OSV3rd | 3.1 | 8.8 |
| CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H |
| 2026. 05. 13. |