CVE-2026-112895
validatedZero produced an exploit or a check.GHSA-p4wg-p73j-c528 ↗EUVD-2026-104657 ↗
description
Pillow versions 5.1.0 through 12.x can exhaust stack, CPU, or memory while parsing an existing PDF during a PDF append operation. An attacker can cause denial of service by supplying a malformed PDF to an application that uses Image.save with PDF append enabled.
mitigation
Upgrade Pillow to version 13.0.0 or later. Until upgraded, do not append to untrusted existing PDFs and isolate or resource-limit PDF-processing workloads.
fixed in 13.0.0
outcome
Contextual check: a technique exists and was validated, but no deterministic check could cover this one.
source signals
Public signals that triggered or updated the pipeline. These are inputs for the deltas above.
- 2026-10-17 10:36Zghsa: trigger signal, started the run
- 2026-10-17 10:36Z
- 2026-10-19 21:57Zcve.org record for CVE-2026-112895
this entry in the feed
GET /api/v1/feed/CVE-2026-112895
{ "etk_id": "ETK-2026-2497", "cve_id": "CVE-2026-112895", "display_id": "CVE-2026-112895", "ghsa_id": "GHSA-p4wg-p73j-c528", "euvd_id": "EUVD-2026-104657", "status": "published", "anchor_state": "anchored", "title": "Unbounded recursion in Pillow PDF append parsing", "summary": "Pillow versions 5.1.0 through 12.x can exhaust stack, CPU, or memory while parsing an existing PDF during a PDF append operation. An attacker can cause denial of service by supplying a malformed PDF to an application that uses `Image.save` with PDF append enabled.", "mitigation": "Upgrade Pillow to version 13.0.0 or later. Until upgraded, do not append to untrusted existing PDFs and isolate or resource-limit PDF-processing workloads.", "vendor": "pip", "product": "Pillow", "affected": [ { "affected_notes": [ "5.1.0 - 12.3.0" ], "affected_ranges": [], "ecosystem": "pip", "fixed_versions": [ "13.0.0" ], "package_name": "pillow", "purl": "pkg:pypi/pillow" } ], "cwes": null, "cvss_score": 8.7, "cvss_src": "cna_vendor", "cvss_vector": "CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N", "epss_score": null, "epss_percentile": null, "epss_asof": null, "automation": "contextual", "check": true, "check_confidence_basis": "assessed", "exploit": false, "pipeline_minutes": 7.137525416666667, "t0_at": "2026-10-19T21:57:14.207000+00:00", "signals": { "check": { "at": "2026-10-22T20:54:10.776981+00:00", "days": 2.9562103007060183, "is_lower_bound": false, "measured_at": "2026-10-19T21:57:14.207000+00:00", "url": null }, "public_poc": { "at": "2026-10-17T10:36:08+00:00", "days": -2.4729885069444446, "is_lower_bound": false, "measured_at": "2026-10-19T21:57:14.207000+00:00", "url": "https://github.com/python-pillow/Pillow/security/advisories/GHSA-p4wg-p73j-c528" }, "trigger_signal": { "at": "2026-10-17T10:36:08+00:00", "days": -2.4729885069444446, "is_lower_bound": false, "measured_at": "2026-10-19T21:57:14.207000+00:00", "url": "https://github.com/python-pillow/Pillow/security/advisories/GHSA-p4wg-p73j-c528" } } }
published 2026-10-22 20:46Z
last change 2026-10-22 21:37Z
Need the technical details behind an entry?
Every entry here shows what we attempted and when. The technical details, the generated exploit that fired it and the evidence behind the verdict are not public. Tell us about your use case and we’ll get back to you about extended API access.