Impact
psd-tools is a Python library for handling Adobe Photoshop PSD files. In versions prior to 1.17.1 the SmartObject.save() routine writes an embedded smart object to a file path taken verbatim from the PSD file. Because that filename is attacker-controlled and unsanitised, an untrusted PSD can cause an arbitrary write to any location the attacker specifies, including absolute paths or paths containing traversal sequences such as '../'. A second flaw in SmartObject.open() for external‑kind smart objects allows the attacker-controlled fullPath descriptor to be treated as an arbitrary file read, enabling the content of any file accessible to the process to be exfiltrated to the controlled write destination. Both problems together allow an attacker to create or overwrite files at arbitrary locations on the host system, potentially leading to privilege escalation or persistence when the process runs with elevated privileges.
Affected Systems
The vulnerability affects the psd-tools library in all releases before v1.17.1. Any system that imports and uses psd-tools to process untrusted PSD files is at risk. Upgrading to release v1.17.1 or later mitigates the flaw.
Risk and Exploitability
The CVSS score of 4.6 indicates a moderate severity. The EPSS score is not available, and the vulnerability is not listed in the CISA KEV catalog, suggesting no widespread exploitation to date. However, the flaw can be exploited locally by any process that loads an attacker‑crafted PSD file — a common scenario in code that processes user‑generated content. The lack of a remote attack surface limits the immediate risk, but the ability to write arbitrary files can lead to privilege escalation or persistence if the process runs with elevated privileges.
OpenCVE Enrichment
Github GHSA