Read the docs
TI-2026-83407 Aliases CVE-2026-62297

Uncontrolled memory allocation in ag-psd from declared PSD sizes

Priority HIGH 72CWE-789Published · Updated

Key facts

Attack vector
Network
Privileges required
None
User interaction
None
Attack complexity
Low
Impact type
Denial of service
Confidentiality · integrity · availability
None · None · High
Fix status
Fixed

Attack profile from CVSS 3.1 · CNA. Fix status from CNA. Impact type from CWE-789.

Summary

ag-psd before 31.0.0 is a JavaScript library for reading and writing Photoshop Document files. The readPsd() function allocates image and layer buffers from declared PSD dimensions before checking them against the actual data or sane limits, an excessive memory allocation flaw (CWE-789). A remote attacker who supplies a tiny crafted PSD file can force multi-gigabyte memory allocation, which can terminate the process and cause denial of service for services that read untrusted PSDs. The sources list exploitation as a proof of concept according to CISA SSVC.

Written with Claude Haiku 5.5 from the sources below · 2026-11-02

Description from the CNA

ag-psd is a JavaScript library for reading and writing Photoshop Document files. Before the allocation-limit remediation attempt in version 31.0.0, `readPsd()` commits image and layer buffers from attacker-declared PSD geometry before validating the declarations against the actual available data or sane allocation limits. The `psdReader.js` implementation sizes off-heap typed arrays using `width`, `height`, `channels`, `depth` and `per-layer rectangles`, so a tiny PSD declaring enormous geometry can force multi-gigabyte memory allocation before a later bounds error. The reported 52-byte input on Node 24 produced approximately 3.17 GB peak RSS before a RangeError; under memory pressure the process can be terminated before the error can be caught, and concurrent inputs can exhaust memory. Services reading untrusted PSDs are exposed to denial of service. This differs from genuinely large PSD files whose memory demand is proportional to real input content. Version 31.0.0 adds a composite-image allocation limit, but complete coverage of the separately described layer-rectangle allocation path is not established and requires curator residual/scope review.

Why it matters now

Exploitation Proof of concept CISA SSVC · not in CISA KEV
EPSS 0.00339 27th percentileScored 2026-11-07
Fix Fixed ag-psd (Agamnentzar): 31.0.0

SSVC decision points

CISA ADP · SSVC 2.0.3

Exploitation
Poc
Automatable
Yes
Technical impact
Partial

The decision (Track, Attend, Act) also depends on your mission and well-being impact; see CISA's SSVC guide.

Affected products

VendorProductAffected versionsFixed inStatusSource
Agamnentzarag-psdbefore 31.0.031.0.0Patch availableCNA
  • ag-psd VendorAgamnentzar Affected before 31.0.0 Fixed in 31.0.0 Patch available CNA

Remediation

The sources list no fixed version for ag-psd. Version 31.0.0 adds a composite-image allocation limit, but the sources do not establish that the layer-rectangle allocation path is fully covered.

Written with Claude Haiku 5.5 from the sources below · 2026-11-02

  • Fix · CNA ag-psd (Agamnentzar) Fixed in 31.0.0

Timeline

  1. 2026-10-30 Threatist record created from CVE-2026-62297
  2. 2026-11-01 Priority changed: MEDIUM → LOW
  3. 2026-11-02 CISA SSVC decision points changed
  4. 2026-11-02 Priority changed: LOW → HIGH

References

  • TI-2026-84496 Uncontrolled memory allocation in ag-psd PSD layer decoding CVSS 3.1HIGH 7.5

Sources

This product uses the NVD API but is not endorsed or certified by the NVD. Sources and licences