{ "dataType": "CVE_RECORD", "dataVersion": "5.2", "cveMetadata": { "cveId": "CVE-2026-56671", "assignerOrgId": "a0819718-46f1-4df5-94e2-005712e83aaa", "state": "PUBLISHED", "assignerShortName": "GitHub_M", "dateReserved": "2026-06-22T16:39:01.043Z", "datePublished": "2026-07-31T04:21:54.417Z", "dateUpdated": "2026-07-31T23:19:15.408Z" }, "containers": { "cna": { "title": "ComfyUI: Path traversal in /experiment/models/preview allows arbitrary image file read", "problemTypes": [ { "descriptions": [ { "cweId": "CWE-22", "lang": "en", "description": "CWE-22: Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal')", "type": "CWE" } ] } ], "metrics": [ { "cvssV3_1": { "attackComplexity": "LOW", "attackVector": "NETWORK", "availabilityImpact": "NONE", "baseScore": 7.5, "baseSeverity": "HIGH", "confidentialityImpact": "HIGH", "integrityImpact": "NONE", "privilegesRequired": "NONE", "scope": "UNCHANGED", "userInteraction": "NONE", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N", "version": "3.1" } } ], "references": [ { "name": "https://github.com/Comfy-Org/ComfyUI/security/advisories/GHSA-pj59-g5vv-74q4", "tags": [ "x_refsource_CONFIRM" ], "url": "https://github.com/Comfy-Org/ComfyUI/security/advisories/GHSA-pj59-g5vv-74q4" }, { "name": "https://github.com/Comfy-Org/ComfyUI/pull/14734", "tags": [ "x_refsource_MISC" ], "url": "https://github.com/Comfy-Org/ComfyUI/pull/14734" }, { "name": "https://github.com/Comfy-Org/ComfyUI/releases/tag/v0.28.0", "tags": [ "x_refsource_MISC" ], "url": "https://github.com/Comfy-Org/ComfyUI/releases/tag/v0.28.0" } ], "affected": [ { "vendor": "Comfy-Org", "product": "ComfyUI", "versions": [ { "version": "< 0.28.0", "status": "affected" } ] } ], "providerMetadata": { "orgId": "a0819718-46f1-4df5-94e2-005712e83aaa", "shortName": "GitHub_M", "dateUpdated": "2026-07-31T04:21:54.417Z" }, "descriptions": [ { "lang": "en", "value": "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." } ], "source": { "advisory": "GHSA-pj59-g5vv-74q4", "discovery": "UNKNOWN" } }, "adp": [ { "metrics": [ { "other": { "type": "ssvc", "content": { "timestamp": "2026-07-31T23:18:53.402759Z", "id": "CVE-2026-56671", "options": [ { "Exploitation": "none" }, { "Automatable": "yes" }, { "Technical Impact": "partial" } ], "role": "CISA Coordinator", "version": "2.0.3" } } } ], "title": "CISA ADP Vulnrichment", "providerMetadata": { "orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0", "shortName": "CISA-ADP", "dateUpdated": "2026-07-31T23:19:15.408Z" } } ] } }