{"id":"CVE-2026-56671","summary":"ComfyUI: Path traversal in /experiment/models/preview allows arbitrary image file read","details":"ComfyUI is a modular diffusion model GUI, api and backend with a graph/nodes interface. Prior to 0.28.0, get_model_preview in app/model_manager.py joins an unrestricted filename route capture to a selected model directory without a containment check, allowing an unauthenticated remote attacker to use traversal, encoded traversal, absolute paths, or an unbounded path_index to read image-decodable files and enumerate host paths. get_model_preview (app/model_manager.py) built the path with os.path.join(folder, filename) where filename is an unrestricted {filename:.*} route capture. Literal ../, percent-encoded %2e%2e%2f, and absolute paths all escaped the model directory; path_index was also unbounded. The target file is piped through Pillow and re-encoded as WEBP, so disclosure is limited to image-decodable files plus a file-existence/enumeration oracle (and internal-path leakage via path_index errors). This issue is fixed in version 0.28.0.","aliases":["GHSA-pj59-g5vv-74q4"],"modified":"2026-08-04T11:51:12.992685117Z","published":"2026-07-31T04:21:54.417Z","database_specific":{"cna_assigner":"GitHub_M","cwe_ids":["CWE-22"],"osv_generated_from":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/56xxx/CVE-2026-56671.json"},"references":[{"type":"WEB","url":"https://github.com/Comfy-Org/ComfyUI/releases/tag/v0.28.0"},{"type":"ADVISORY","url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/56xxx/CVE-2026-56671.json"},{"type":"ADVISORY","url":"https://github.com/Comfy-Org/ComfyUI/security/advisories/GHSA-pj59-g5vv-74q4"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-56671"},{"type":"FIX","url":"https://github.com/Comfy-Org/ComfyUI/pull/14734"}],"affected":[{"ranges":[{"type":"GIT","repo":"https://github.com/comfy-org/comfyui","events":[{"introduced":"0"},{"fixed":"700821e1364eaab0e8f21c538a2131719fec57bf"}],"database_specific":{"extracted_events":[{"introduced":"0"},{"fixed":"0.28.0"}],"source":"AFFECTED_FIELD"}}],"versions":["v0.27.0","v0.26.0","v0.25.0","v0.24.0","v0.23.0","v0.22.0","v0.21.1","v0.21.0","v0.20.1","v0.20.0","v0.19.3","v0.19.2","v0.19.1","v0.19.0","v0.18.1","v0.18.0","v0.17.0","v0.16.4","v0.16.3","v0.16.2","v0.16.1","v0.16.0","v0.15.1","v0.15.0","v0.14.1","v0.14.0","v0.13.0","v0.12.3","v0.12.2","v0.12.1","v0.12.0","v0.11.1","v0.11.0","v0.10.0","v0.9.2","v0.9.1","v0.9.0","v0.8.2","v0.8.1","v0.8.0","v0.7.0","v0.6.0","v0.5.1","v0.5.0","v0.4.0","v0.3.76","v0.3.75","v0.3.74","v0.3.73","v0.3.72","v0.3.71","v0.3.70","v0.3.69","v0.3.68","v0.3.67","v0.3.66","v0.3.65","v0.3.64","v0.3.63","v0.3.62","v0.3.61","v0.3.60","v0.3.59","v0.3.58","v0.3.52","v0.3.57","v0.3.56","v0.3.55","v0.3.54","v0.3.53","v0.3.51","v0.3.50","v0.3.49","v0.3.48","v0.3.47","v0.3.46","v0.3.45","v0.3.44","v0.3.43","v0.3.42","v0.3.41","v0.3.40","v0.3.39","v0.3.38","v0.3.37","v0.3.36","v0.3.35","v0.3.34","v0.3.33","v0.3.32","v0.3.31","v0.3.30","v0.3.29","v0.3.28","v0.3.27","v0.3.26","v0.3.25","v0.3.24","v0.3.23","v0.3.22","v0.3.21","v0.3.20","v0.3.19","v0.3.18","v0.3.17","v0.3.16","v0.3.15","v0.3.14","v0.3.13","v0.3.12","v0.3.11","v0.3.10","v0.3.9","v0.3.8","v0.3.7","v0.3.6","v0.3.5","v0.3.4","v0.3.3","v0.3.2","v0.3.1","v0.3.0","v0.2.7","v0.2.6","v0.2.5","v0.2.4","v0.2.3","v0.2.2","v0.2.1","v0.2.0","v0.1.3","v0.1.2","v0.1.1","v0.1.0","v0.0.8","v0.0.7","v0.0.6","v0.0.5","v0.0.4","v0.0.2","v0.0.1","latest"],"database_specific":{"source":"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-56671.json"}}],"schema_version":"1.8.0","severity":[{"type":"CVSS_V3","score":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N"}]}