CVE-2026-27809

psd-tools: Compression module has unguarded zlib decompression, missing dimension validation, and hardening gaps

Published Feb 25, 2026 CVSS 4.0 · 6.8 Medium EPSS < 1% KEV · Not listed
Description
psd-tools is a Python package for working with Adobe Photoshop PSD files. Prior to version 1.12.2, when a PSD file contains malformed RLE-compressed image data (e.g. a literal run that extends past the expected row size), decode_rle() raises ValueError which propagated all the way to the user, crashing psd.composite() and psd-tools export. decompress() already had a fallback that replaces failed channels with black pixels when result is None, but it never triggered because the ValueError from decode_rle() was not caught. The fix in version 1.12.2 wraps the decode_rle() call in a try/except so the existing fallback handles the error gracefully.

Remediation

No solution or workaround provided in the CVE record

Tracking

Sign in to view the affected projects.

Advisories

Source ID Title
Github GHSA Github GHSA GHSA-24p2-j2jr-386w psd-tools: Compression module has unguarded zlib decompression, missing dimension validation, and hardening gaps
History
Type Values Removed Values Added
First Time appeared Psd-tools Project
Psd-tools Project psd-tools
CPEs cpe:2.3:a:psd-tools_project:psd-tools:*:*:*:*:*:*:*:*
Vendors & Products Psd-tools Project
Psd-tools Project psd-tools
Metrics cvssV3_1

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

Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'yes', 'Exploitation': 'none', 'Technical Impact': 'total'}, 'version': '2.0.3'}

Type Values Removed Values Added
First Time appeared Psd-tools
Psd-tools psd-tools
Vendors & Products Psd-tools
Psd-tools psd-tools
Type Values Removed Values Added
Description psd-tools is a Python package for working with Adobe Photoshop PSD files. Prior to version 1.12.2, when a PSD file contains malformed RLE-compressed image data (e.g. a literal run that extends past the expected row size), decode_rle() raises ValueError which propagated all the way to the user, crashing psd.composite() and psd-tools export. decompress() already had a fallback that replaces failed channels with black pixels when result is None, but it never triggered because the ValueError from decode_rle() was not caught. The fix in version 1.12.2 wraps the decode_rle() call in a try/except so the existing fallback handles the error gracefully.
Title psd-tools: Compression module has unguarded zlib decompression, missing dimension validation, and hardening gaps
Weaknesses CWE-190
CWE-409
CWE-617
CWE-704
CWE-755
CWE-789
References
Metrics cvssV4_0

{'score': 6.8, 'vector': 'CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:H/VA:H/SC:N/SI:N/SA:N/E:U'}

Sources

Status
PUBLISHED
Assigner
GitHub_M
Published
Updated
Feb 26, 2026, 3:17 PM
Reserved
Feb 24, 2026, 2:31 AM
Status
Analyzed
Published
Feb 26, 2026, 12:16 AM
Modified
Jun 17, 2026, 10:27 AM