Description
psd-tools is a Python package for working with Adobe Photoshop PSD files. Prior to 1.17.4, PSDImage.composite() and PSDImage.numpy() allocated output buffers from attacker-controlled PSD header geometry, including width, height, channels, depth, and per-layer rectangles, before validating those values against the available file data. A tiny crafted PSD could therefore cause multi-gigabyte memory allocation, and PSDImage.composite() could return a black image with only a warning instead of raising an exception. Services that composite untrusted PSD files could be terminated by out-of-memory handling. This issue is fixed in version 1.17.4.
Published: 2026-09-22
Score: 7.5 High
EPSS: < 1% Very Low
KEV: No
Impact: Denial of Service
Action: Apply Patch
AI Analysis

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.

Generated by OpenCVE AI on September 22, 2026 at 21:01 UTC.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Upgrade psd‑tools to version 1.17.4 or newer, where buffer allocation validation has been fixed.
  • Restrict use of composite() and numpy() to files from trusted sources or add explicit geometry validation before calling these functions, preventing processing of large or malformed dimensions.
  • Apply resource limits or memory quotas to processes that invoke psd‑tools so that even if an oversized allocation is attempted, the host or service can recover before system resources are exhausted.

Generated by OpenCVE AI on September 22, 2026 at 21:01 UTC.

Tracking

Sign in to view the affected projects.

Advisories
Source ID Title
Github GHSA Github GHSA GHSA-8q6g-vjhf-jp8m psd-tools composite/numpy has uncontrolled memory allocation via crafted PSD geometry
History

Tue, 22 Sep 2026 20:45:00 +0000

Type Values Removed Values Added
First Time appeared Psd-tools
Psd-tools psd-tools
Vendors & Products Psd-tools
Psd-tools psd-tools

Tue, 22 Sep 2026 20:30:00 +0000

Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'yes', 'Exploitation': 'poc', 'Technical Impact': 'partial'}, 'version': '2.0.3'}


Tue, 22 Sep 2026 19:30:00 +0000

Type Values Removed Values Added
Description psd-tools is a Python package for working with Adobe Photoshop PSD files. Prior to 1.17.4, PSDImage.composite() and PSDImage.numpy() allocated output buffers from attacker-controlled PSD header geometry, including width, height, channels, depth, and per-layer rectangles, before validating those values against the available file data. A tiny crafted PSD could therefore cause multi-gigabyte memory allocation, and PSDImage.composite() could return a black image with only a warning instead of raising an exception. Services that composite untrusted PSD files could be terminated by out-of-memory handling. This issue is fixed in version 1.17.4.
Title psd-tools: Uncontrolled memory allocation in psd-tools composite/numpy via crafted PSD geometry
Weaknesses CWE-789
References
Metrics cvssV3_1

{'score': 7.5, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H'}


Subscriptions

Psd-tools Psd-tools
cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-09-22T19:37:39.755Z

Reserved: 2026-07-07T19:41:00.005Z

Link: CVE-2026-59991

cve-icon Vulnrichment

Updated: 2026-09-22T19:37:34.572Z

cve-icon NVD

Status : Awaiting Analysis

Published: 2026-09-22T20:17:04.123

Modified: 2026-09-23T18:12:04.247

Link: CVE-2026-59991

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-09-22T21:15:07Z

Weaknesses
  • CWE-789

    Memory Allocation with Excessive Size Value