Impact
psd‑tools performs output buffer allocation based on width, height, channels, depth, and per‑layer rectangle values extracted from the PSD header before it checks those values against the actual data available in the file. A malicious PSD that specifies exceptionally large geometry can cause the library to allocate a multi‑gigabyte buffer. Rather than raising an exception, the vulnerable composite() function returns a warning and a black image, which lets the host application continue running until the operating system terminates it for exceeding memory limits. The result is a denial‑of‑service condition caused by uncontrolled memory consumption, classified as CWE‑789.
Affected Systems
The affected component is the psd‑tools Python package, version 1.17.3 or earlier (i.e., any release before the 1.17.4 fix). Any application that imports psd‑tools and accepts untrusted PSD files—for example, web servers, image‑processing services, or desktop tools—may trigger this vulnerability because it uses composite() or numpy() directly on incoming files.
Risk and Exploitability
The severity is high with a CVSS score of 7.5. No EPSS data is available, and the vulnerability is not listed in the CISA KEV catalog. The attack vector is inferred to be local or application‑driven, where an attacker supplies a malicious PSD file to a service that uses psd‑tools. Successful exploitation would consume large amounts of system memory and trigger an out‑of‑memory condition, leading to service termination or potentially affecting the host if the process is privileged.
OpenCVE Enrichment
Github GHSA