GHSA-4rm8-3hmm-39fg
Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessSupply crafted PILfont file
-
ExploitApplication loads font and measures text
-
ExecutionInteger underflow in width calculation
-
ImpactCrash or out-of-bounds read (DoS)
Vulnerability Assessment
| Weakness |
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Integer overflow checks
MITRE ATT&CK
1 technique across 1 tactic: Execution The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires the application to load and use a legacy PILfont (.pil bitmap font) whose glyph/metric data has been manipulated to trigger the underflow during text-width calculation; it is not reachable through ordinary image decoding. Limiting factors: PILfonts are a legacy, rarely attacker-supplied input (most applications ship trusted fonts), so the attack surface is narrow and typically local file-based rather than remote; the application must specifically load the malicious font and perform text measurement/rendering with it. There is no indication of required authentication from any CVSS vector (none provided), so authentication requirements are not confirmed from available data. |
| Impact | CVE-2026-96641 is one entry (rated Medium by the Pillow project) in the large batch of vulnerabilities fixed in Pillow 13.0.0 - specifically an integer underflow in the PILfont text-width calculation path (GHSA-4rm8-3hmm-39fg). No CVSS vector, CWE, EPSS score, KEV listing, or POC indicator was provided in the input, so several standard prioritization signals are simply absent and cannot be presented as known. Based on the description alone, this is a memory-safety/computation flaw in legacy bitmap-font (.pil) handling, and the realistic worst case is a denial of service or out-of-bounds read when a crafted or malformed PILfont is loaded and used to measure text - not a high-value remote code execution primitive. The signals that exist point to LOW real-world urgency: the vendor itself classified it Medium, the attack requires the application to process an attacker-influenced PILfont (an uncommon untrusted input compared to ordinary image files), and there is no evidence of exploitation or public exploit code. EPSS is unavailable, so exploitation probability cannot be quantified; KEV status is not listed, consistent with no observed active exploitation. Net: despite Pillow's enormous deployment footprint, this specific issue is a patch-in-routine-cycle item rather than an emergency, and it should not be elevated to a high priority absent additional evidence (e.g., a confirmed OOB read leading to information disclosure). |
| Exploit ScenarioDerived | An application using Pillow loads an attacker-supplied legacy PILfont (.pil) file and calls a text-measurement routine (e.g., computing text width for layout); the integer underflow corrupts the width computation, causing a crash or an out-of-bounds read and resulting in denial of service for the processing service. No public exploit code was identified in the provided data, and exploitation depends on the application accepting or rendering with untrusted PILfont data rather than ordinary trusted bundled fonts. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 21, 2026
Integer underflow in Pillow's legacy PILfont text-width calculation (CVE-2026-96641, GHSA-4rm8-3hmm-39fg) can be triggered when an application loads and measures text with a manipulated .pil bitmap font, producing a low-impact availability condition; the Pillow project rates it Medium and fixed it in release 13.0.0. The assessed CVSS 3.1 vector is AV:L/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L, indicating a local attack vector, no privileges required, no user interaction, and impact limited to availability with no confidentiality or integrity effect. No public exploit was identified at time of analysis, and no CISA KEV entry is indicated in the available data.
RemediationAI
Upgrade to Pillow 13.0.0, which contains the vendor-released fix for CVE-2026-96641. If immediate upgrade is not possible, avoid loading PILfont (.pil) files from untrusted sources and restrict applications to trusted, bundled bitmap fonts; specifically, prevent attacker-controlled .pil fonts from reaching Pillow's text measurement/rendering paths. This may break workflows that depend on legacy bitmap fonts, so validate font provenance and convert untrusted bitmap fonts to supported formats before use. Refer to the Pillow 13.0.0 release notes at https://pillow.readthedocs.io/en/stable/releasenotes/13.0.0.html and the oss-security advisory at https://seclists.org/oss-sec/2026/q4/295 for the full set of fixes in that release.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in pypi
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
Pillow is the maintained fork of the Python Imaging Library and provides image-processing primitives as well as legacy font support. PILfont is an older bitmap-font format (.pil) whose glyph and metric data are parsed when text is measured or rendered. CVE-2026-96641 is an integer underflow in that text-width calculation path: manipulated font data can drive the width computation below the intended numeric range, resulting in an availability impact as assessed (CVSS 3.1 AV:L/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L). This is not reachable through ordinary image decoding; exploitation requires the application to load a crafted PILfont and perform text width measurement or rendering with it. No CWE was provided in the input, but the root-cause class is an integer underflow in legacy font metric handling. The affected code is part of Pillow's font/text path rather than its common image decoder surface.
Know when Pillow gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H
Triggered by processing a crafted local PILfont file (AV:L), no privileges needed (PR:N), and the realistic impact is a crash/DoS (A:L) with no confirmed confidentiality or integrity effect.
Primary rating from Vendor (CNA).
CVSS VectorVendor
Lifecycle Timeline
3Description PRE-NVD
Blast Radius
ecosystem impact- 93,931 pypi packages depend on pillow (20,820 direct, 74,698 indirect)
Ecosystem-wide dependent count for version 13.0.0.
Executive ViewAI
A high-severity integer underflow in Pillow, the Python imaging library embedded in many internal and customer-facing image-processing services, can degrade or crash text-rendering workloads when an application loads and measures a tampered legacy .pil bitmap font. Impact is confined to availability, with no confidentiality or integrity exposure, and exploitation requires local access plus the introduction of a malicious font into the processing pipeline. Leadership should care chiefly because Pillow is a pervasive transitive dependency, so unmanaged deployments may persist well after the upstream fix; the practical business risk remains limited.
Apply vendor patch: upgrade to Pillow 13.0.0. Until then, disable legacy .pil bitmap font parsing, reject untrusted .pil uploads at ingestion, validate font files against an allowlist, and restrict local access to font-processing workflows.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
A buffer overflow occurs when a program writes more data to a memory buffer than it was allocated to hold, causing the excess data to spill into adjacent memory regions.
Integer overflow occurs when an arithmetic operation produces a result that exceeds the maximum value a given integer type can store.
libImaging/TgaRleDecode.c in Pillow 9.1.0 has a heap buffer overflow in the processing of invalid TGA image files. Rated
Denial of service in Python Pillow (versions 8.2.0 through 12.2.0) allows remote attackers to exhaust memory during JPEG
Out-of-bounds memory disclosure in Python Pillow before 12.3.0 lets an attacker who supplies a crafted McIdas AREA image
Heap out-of-bounds write in Python Pillow prior to 12.3.0 lets an attacker who controls the rank-filter size parameter c
Denial-of-service and controlled heap corruption in Python's Pillow imaging library (all versions prior to 12.3.0) occur
Denial of service in Python Pillow 12.0.0 through 12.2.0 lets a remote attacker hang an application by supplying a craft
Denial of service (and potential memory corruption) in Python Pillow before 12.3.0 arises when public image coordinate A
Uncontrolled memory allocation in Python Pillow before 12.3.0 lets a crafted BDF font file exhaust available memory and
Uncontrolled memory consumption in Python Pillow (PIL) versions 5.1.0 through 12.2.x allows a remote attacker to cause d
Denial-of-service via memory exhaustion in Python Pillow before 12.3.0 allows a crafted GD-format (.gd) image to trigger
Uncontrolled memory allocation in Python Pillow before 12.3.0 allows a maliciously crafted font file to trigger excessiv
Uncontrolled memory allocation in the Python Pillow imaging library (all versions prior to 12.3.0) allows a crafted PCF
EUVD-2026-107562
NVD
CVE.org
EPSS
Exploit-DB