Death by Pixels: Unpacking CVE-2026-27809 in psd-tools
Vulnerability ID: CVE-2026-27809
CVSS Score: 6.8
Published: 2026-02-26
A deep dive into a series of memory corruption and logic flaws within the psd-tools Python library. This vulnerability exploits the complex nature of Adobe's PSD format to trigger massive memory exhaustion (Zip Bombs), integer overflows in Cython modules, and bypasses critical integrity checks in production environments. It highlights the dangers of parsing untrusted binary formats without strict bounds checking.
TL;DR
The psd-tools library prior to 1.12.2 is vulnerable to Denial of Service via malicious PSD files. Attackers can trigger Zip bombs or massive memory allocations by manipulating file headers. Fix involves enforcing strict dimension limits and safe decompression practices.
⚠️ Exploit Status: POC
Technical Details
- Attack Vector: Network (via File Upload)
- CVSS v4.0: 6.8 (Medium)
- Weakness: CWE-400 (Uncontrolled Resource Consumption)
- Weakness: CWE-190 (Integer Overflow)
- Platform: Python / Cython
- Exploit Status: PoC Available
Affected Systems
- Python applications processing user-uploaded PSD/PSB files
- Digital Asset Management (DAM) systems
- Image processing pipelines using psd-tools
-
psd-tools: < 1.12.2 (Fixed in:
1.12.2)
Code Analysis
Commit: 6c0a78f
Fix decompression and RLE decoding vulnerabilities
- cdef int i = 0
+ cdef Py_ssize_t i = 0
- assert len(result) == length
+ if len(result) != length: raise ValueError
Mitigation Strategies
- Input Validation: Validate file headers against strict maximum dimensions before allocation.
- Resource Limits: Enforce decompression limits (max_length) for zlib streams.
- Environment Hardening: Avoid relying on
assertfor security-critical checks in Python. - Type Safety: Ensure C/Cython extensions use appropriate types (Py_ssize_t) for buffer indexing.
Remediation Steps:
- Identify vulnerable installations:
pip list | grep psd-tools - Upgrade to the fixed version:
pip install --upgrade psd-tools>=1.12.2 - Restart any services or worker queues (Celery, RQ) that utilize the library.
- If immediate patching is impossible, implement file size limits on uploads to reject large PSD/PSB files at the gateway.
References
Read the full report for CVE-2026-27809 on our website for more details including interactive diagrams and full exploit analysis.
Top comments (0)