Uncontrolled memory allocation in ag-psd from declared PSD sizes
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
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
| Vendor | Product | Affected versions | Fixed in | Status | Source |
|---|---|---|---|---|---|
| Agamnentzar | ag-psd | before 31.0.0 | 31.0.0 | Patch available | CNA |
- 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
- 2026-10-30 Threatist record created from CVE-2026-62297
- 2026-11-01 Priority changed: MEDIUM → LOW
- 2026-11-02 CISA SSVC decision points changed
- 2026-11-02 Priority changed: LOW → HIGH
References
More Agamnentzar vulnerabilities
- 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