Description
Pillow is a Python imaging library. Prior to 13.0.0, the TarIO initializer in src/PIL/TarIO.py accepts a negative octal member size and computes a backward seek that returns to the same 512-byte header. When the requested member name does not match, the parser repeatedly reads that header, consumes a full CPU core, and never returns. TarIO is reached only when an application directly uses PIL.TarIO.TarIO rather than the default Image.open() path. This issue is fixed in version 13.0.0.
Published: 2026-10-21
Score: 7.1 High
EPSS: < 1% Very Low
KEV: No
Impact: Denial of Service
Action: Immediate Patch
AI Analysis

Impact

The vulnerability in the Pillow imaging library allows an attacker who can provide a specially crafted tar archive to the TarIO initializer to trigger an infinite CPU‑spinning loop. The bug arises when a tar file header contains a negative octal size field. This causes a backward seek that returns to the same 512‑byte header and, because the member name does not match, the parser repeatedly reads that header. The loop consumes the entire CPU core and never terminates, resulting in a denial of service. The weakness is classified as CWE‑835, an infinite loop leading to resource exhaustion.

Affected Systems

The affected vendor is Python Pillow, versions older than 13.0.0. The library product is Pillow. Any deployment using versions older than 13.0.0 that directly invokes PIL.TarIO rather than the standard Image.open() path is susceptible. No additional product versions are listed in the CNA data.

Risk and Exploitability

The CVSS score of 7.1 indicates a high impact vulnerability, while the EPSS score is not available and the vulnerability is not listed in the CISA KEV catalog, implying no known exploitation activity. The primary attack vector requires local code that explicitly uses PIL.TarIO.TarIO; it is not a remote network‑exposed flaw. An attacker who can supply a malicious tar file programmatically to the vulnerable code will cause the application to consume 100 % of a CPU core indefinitely, potentially affecting all processes on the system. Because the exploit requires direct use of the library rather than typical image opening, the immediate risk is limited to applications that have incorporated this specific code path.

Generated by OpenCVE AI on October 22, 2026 at 07:28 UTC.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Upgrade Pillow to version 13.0.0 or later, which contains the fix for the negative size handling.
  • If an upgrade is not immediately possible, refactor or patch the code to avoid calling PIL.TarIO.TarIO directly, using alternative libraries or custom handlers for tar archives.
  • Implement operating‑system level CPU limits for processes that use Pillow to mitigate the impact of any future resource exhaustion incidents.

Generated by OpenCVE AI on October 22, 2026 at 07:28 UTC.

Tracking

Sign in to view the affected projects.

Advisories
Source ID Title
Github GHSA Github GHSA GHSA-3j72-p6qg-6xp7 Pillow: TarIO negative size field causes infinite CPU-spin loop
History

Fri, 30 Oct 2026 17:30:00 +0000

Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'no', 'Exploitation': 'poc', 'Technical Impact': 'partial'}, 'version': '2.0.3'}


Tue, 27 Oct 2026 14:45:00 +0000

Type Values Removed Values Added
First Time appeared Python
Python pillow
CPEs cpe:2.3:a:python:pillow:*:*:*:*:*:*:*:*
Vendors & Products Python
Python pillow

Thu, 22 Oct 2026 12:30:00 +0000

Type Values Removed Values Added
References
Metrics threat_severity

None

cvssV3_1

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

threat_severity

Moderate


Thu, 22 Oct 2026 07:30:00 +0000

Type Values Removed Values Added
First Time appeared Python-pillow
Python-pillow pillow
Vendors & Products Python-pillow
Python-pillow pillow

Wed, 21 Oct 2026 21:00:00 +0000

Type Values Removed Values Added
Description Pillow is a Python imaging library. Prior to 13.0.0, the TarIO initializer in src/PIL/TarIO.py accepts a negative octal member size and computes a backward seek that returns to the same 512-byte header. When the requested member name does not match, the parser repeatedly reads that header, consumes a full CPU core, and never returns. TarIO is reached only when an application directly uses PIL.TarIO.TarIO rather than the default Image.open() path. This issue is fixed in version 13.0.0.
Title Pillow: TarIO negative size field causes infinite CPU-spin loop
Weaknesses CWE-835
References
Metrics cvssV4_0

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


Subscriptions

Python Pillow
Python-pillow Pillow
cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-10-30T16:07:09.659Z

Reserved: 2026-09-23T14:35:50.130Z

Link: CVE-2026-96642

cve-icon Vulnrichment

Updated: 2026-10-30T16:06:39.240Z

cve-icon NVD

Status : Modified

Published: 2026-10-21T21:20:32.650

Modified: 2026-10-30T17:17:32.240

Link: CVE-2026-96642

cve-icon Redhat

Severity : Moderate

Publid Date: 2026-10-21T20:49:56Z

Links: CVE-2026-96642 - Bugzilla

cve-icon OpenCVE Enrichment

Updated: 2026-10-22T07:30:09Z

Weaknesses
  • CWE-835

    Loop with Unreachable Exit Condition ('Infinite Loop')