PatchSiren cyber security CVE debrief
CVE-2026-96644 python-pillow CVE debrief
A heap over-read vulnerability exists in Pillow's WMF/EMF rendering on Windows builds. The issue arises from storing image dimensions without range checks and passing them to the native `drawwmf` handler, which truncates dimensions into 16-bit header fields for allocation but uses full 32-bit dimensions for copying, leading to a potential heap over-read.
- Vendor
- python-pillow
- Product
- pillow
- CVSS
- HIGH 7.1
- CISA KEV
- Not listed in stored evidence
- Original CVE published
- 2026-10-22
- Original CVE updated
- 2026-10-22
- Advisory published
- 2026-10-22
- Advisory updated
- 2026-10-22
Who should care
Defenders responsible for Windows environments where Pillow is used, especially those handling image processing or using Pillow in their applications, should assess exposure and prioritize updating to version 13.0.0 or later.
Why it matters
The vulnerability in Pillow's WMF/EMF rendering on Windows builds can lead to a heap over-read, potentially disclosing sensitive information. Defenders should prioritize verifying exposure, updating to version 13.0.0 or later, and monitoring image processing workflows for potential malicious activity.
- Potential heap over-read leading to information disclosure
- Verification of Pillow version and exposure in Windows environments is crucial
- Updating to version 13.0.0 or later is necessary to address the vulnerability
Technical summary
The vulnerability exists in Pillow's handling of WMF/EMF images on Windows. The code stores image dimensions without checks and passes them to the native `drawwmf` handler. The handler truncates dimensions to 16-bit for allocation but uses 32-bit values for copying, potentially leading to a heap over-read. This issue affects Pillow versions prior to 13.0.0 on Windows builds, and defenders should prioritize verifying exposure, updating to version 13.0.0 or later, and monitoring image processing workflows for potential malicious activity.
Defensive priority
Defenders should prioritize verifying and updating Pillow to version 13.0.0 or later, especially in Windows environments where the vulnerability is exploited. They should also review and monitor image processing workflows for potential malicious metafiles.
Recommended defensive actions
- Verify and update Pillow to version 13.0.0 or later
- Review and monitor image processing workflows for potential malicious metafiles
- Implement additional security measures for Windows environments where Pillow is used
- Track exceptions and retest remediated assets
- Check relevant monitoring, detection, and logs for exposed assets that need extra review
- Review compensating controls for exposed systems while remediation is scheduled and verified
- Confirm whether affected product deployments exist in managed environments and assign an owner for follow-up
Evidence notes
The vulnerability is confirmed in Pillow versions prior to 13.0.0 on Windows builds. The issue is caused by the lack of range checks on image dimensions and the discrepancy between 16-bit and 32-bit dimension handling in the native `drawwmf` handler.
Sources and references
Verified primary and authoritative sources
-
CVE-2026-96644 CVE Program record
Publisher, destination, and source semantics verified
URL: https://www.cve.org/CVERecord?id=CVE-2026-96644
CVE Program - Official CVE Program record with source-provided CVE metadata.
-
CVE-2026-96644 NVD vulnerability detail
Publisher, destination, and source semantics verified
URL: https://nvd.nist.gov/vuln/detail/CVE-2026-96644
NIST National Vulnerability Database - Official NIST NVD detail page and source-specific vulnerability assessment.
Supplemental references
-
Pillow: Heap over-read in WMF/EMF rendering via 16-bit dimension truncation (Windows builds)
Unverified legacy reference
URL: https://storage.googleapis.com/osv-vulnerabilities/PyPI/GHSA-9v9v-9qvf-h2hj.json
osv_dev
-
Source reference
Unverified legacy reference
URL: https://github.com/python-pillow/Pillow/security/advisories/GHSA-9v9v-9qvf-h2hj
Supplemental source
-
Source reference
Unverified legacy reference
URL: https://github.com/python-pillow/Pillow/pull/10120
Supplemental source
-
Source reference
Unverified legacy reference
URL: https://github.com/python-pillow/Pillow/commit/4cf46bee338304c5c8968fd7f132ba0d40c428b7
Supplemental source
-
Source reference
Unverified legacy reference
URL: https://github.com/python-pillow/Pillow
Supplemental source
-
Source reference
Unverified legacy reference
URL: https://github.com/python-pillow/Pillow/releases/tag/13.0.0
Supplemental source
Methodology and review provenance
AI-assisted synthesis based on stored public vulnerability evidence. System validation, approval state, and publication status do not by themselves establish human review of this revision. PatchSiren helps prioritize defensive review and does not prove exposure or remediation on any system.