Pillow: Invalid free in FreeType glyph rendering with active stroker
Summary
Pillow, a Python imaging library, contains an invalid free of a FreeType glyph pointer when text is drawn with a non-zero stroke width. An attacker who can supply a malformed font file as untrusted bytes to an application that renders text with stroke can trigger the glyph-load error path. Successful exploitation can corrupt memory or crash the process, resulting in a Denial of Service.
Affected
- Pillow 10.0.0 up to and including 12.3.0
- Pillow is often a transitive dependency, so check indirect installations and container images
Fixed in
- Pillow 13.0.0 (upstream fix, commit a7416de7f3a43128179d2cf68df3240ea8dafe13)
- Pillow 13.0.0 requires Python 3.11 or newer
- Unknown: whether a backport to earlier versions will be released; the release notes say backports should not be expected
Workaround
- No vendor-documented workaround.
- Analyst suggestion: do not render untrusted font files with a non-zero stroke width until patched.
- Analyst suggestion: restrict font uploads or run font rendering in an isolated worker process.
Exploitation
- Not listed in CISA KEV.
- No known in-the-wild exploitation reported.
- The GHSA advisory is public and describes the trigger path; a public PoC is referenced in the advisory.
- CISA SSVC: exploitation status poc, automatable yes, technical impact partial.
Our recommendation
- Inventory Python environments, container images and wheels for Pillow 10.0.0 to 12.3.0, including transitive dependencies.
- Upgrade to Pillow 13.0.0 or later and plan for Python 3.11 or newer.
- Prioritize systems that render user-supplied fonts with stroke, such as document generators or image services.
- Rebuild container images that bundle an older copy.
Public exploits
PoC-in-GitHub, Metasploit and Exploit-DB list nothing for this CVE.
Research sources
- GitHub Security Advisory GHSA-j4m9-6w36-pw47 github.com
- Pillow fix commit a7416de7f3a43128179d2cf68df3240ea8dafe13 github.com
- Pillow release 13.0.0 github.com
- OpenCVE CVE-2026-112893 app.opencve.io
- Rapid7 CVE-2026-112893 www.rapid7.com
Researched and written up in English and German by an AI (Claude by Anthropic) based on NVD, CISA, EPSS and the sources listed. The vendor information is authoritative. Researched on 1 Nov 2026, 15:38.
Original description (NVD)
Pillow is a Python imaging library. From 10.0.0 until 13.0.0, Pillow can free an invalid glyph pointer during FreeType rendering with an active stroker. If FT_Load_Glyph fails, cleanup may call FT_Done_Glyph on an uninitialized or stale glyph variable. An attacker can supply a malformed font as untrusted bytes to an application that draws text with a nonzero stroke width, forcing the glyph-load failure path. This can corrupt memory or crash the process. This issue is fixed in version 13.0.0.
NVD references (4)
- https://github.com/python-pillow/Pillow/commit/a7416de7f3a43128179d2cf68df3240ea8dafe13
- https://github.com/python-pillow/Pillow/releases/tag/13.0.0
- https://github.com/python-pillow/Pillow/security/advisories/GHSA-j4m9-6w36-pw47
- https://github.com/python-pillow/Pillow/security/advisories/GHSA-j4m9-6w36-pw47
Sources
The tracker combines official, freely usable data sources – updated continuously:
- NVD (NIST) – CVEs, rating (CVSS), affected products
- CISA KEV – vulnerabilities confirmed by CISA as actively exploited
- CISA Vulnrichment – CISA assessment (SSVC) in the official CVE record
- FIRST EPSS – probability of exploitation
- Microsoft MSRC – Patch Tuesday: vulnerabilities, severity, updates
- PoC-in-GitHub – public proof-of-concept repositories
- Metasploit (Rapid7) – modules of the Metasploit Framework
- Exploit-DB (OffSec) – archive of public exploits (links only)
- Patch days: official vendor pages (linked per vendor) (Vendor patch days)
This product uses data from the NVD API but is not endorsed or certified by the NVD. EPSS data © FIRST.org.
Affected? We can help.
We check whether your systems are affected, install updates and close the gap – continuously with the System Health Checker if you wish.
