Back to blog
PythonPillowCPythontarfileCVE-2026-112900

Python in October 2026: Pillow 13.0.0 fixes a Ghostscript argument injection, CPython fixes tarfile and zipfile

Published on 2026-10-20 · Updated on 2026-10-246 min readCleanIssue

> TL;DR: Pillow 13.0.0, released October 16, 2026, fixes CVE-2026-112900 (CVSS 9.2): an argument injection into the Ghostscript call for EPS files, which can lead to code execution. It also fixes a FlashPix heap overflow (CVE-2026-112398), a JPEG thumbnail buffer overflow and TIFF encoding memory corruption. Earlier in October, CPython 3.10.22, 3.11.17, 3.12.15, 3.13.16 and 3.14.8 fixed several archive extraction and TLS flaws.

Pillow: the danger is in the file name

PIL.EpsImagePlugin.Ghostscript() builds the Ghostscript command line with the file path, unsanitized. A file name starting with - is read by Ghostscript as an option. To run commands, the attacker needs a name starting with @ and control of the referenced text file.

The key point: the EPS content does not need to be malicious. A perfectly benign EPS file triggers the injection if the name passed to Image.open() is attacker-influenced. Blocking suspicious EPS files therefore does not protect you.

  • Affected versions: Pillow 2.6.0 to 12.3.0.
  • Conditions: attacker-influenced file name, EPS processing path, Ghostscript installed.
  • If you cannot upgrade: disable the EPS and FPX plugins. Note that Pillow 13.0.0 drops Python 3.10.
  • CPython: archives and TLS

    The October 1 release series fixes, among others:

  • tarfile: bypassable extraction filters (CVE-2026-19672, CVE-2026-82049, CVE-2026-87910) that could create directories or expose files outside the destination;
  • zipfile: unbounded decompression of bzip2, LZMA and Zstandard members (CVE-2026-15310), letting a small archive exhaust memory;
  • ssl and urllib: hostname validation (CVE-2026-19553) and HTTPS credentials reused for HTTP (CVE-2026-15806).
  • Python 3.10.22 is the final 3.10 release; the branch is now end of life.

    What to do now

  • Upgrade Pillow to 13.0.0 wherever it processes outside files.
  • Never pass a user-supplied file name as is to a system call or library: rename received files with a generated identifier.
  • Upgrade CPython to the latest release of your branch and move off 3.10.
  • What this means for an AI agent

    An agent that receives attachments, generates thumbnails or unpacks archives to read them often relies on Pillow, tarfile and zipfile. If the file name comes from an email, a ticket or a page the agent read, the attacker controls part of the call. It is a classic injection, triggered by content the agent read.

    Building software? CleanIssue performs security audits for your product in real-world conditions, no source code access needed. For a first read of your exposure, start with an external review of your application.

    Want to know what your AI agent can do?

    Tell us about your agent, its tools, and client context. We will come back with the right review scope.

    Discuss your audit