Executive Summary
In October 2026, security researchers at OX Security disclosed three critical vulnerabilities in Pillow, Python's most widely used image processing library, downloaded approximately 436 million times per month. The most severe flaw, CVE-2026-112900 (CVSS 9.2), allows remote code execution via crafted EPS filenames passed unsanitized to Ghostscript, enabling an attacker who controls a filename to execute arbitrary OS commands on the server. Two additional critical flaws affect JPEG (FPX format) and TIFF in-memory processing pipelines. All three were patched in Pillow 13.0.0 released October 16, 2026. No active exploitation has been confirmed, though a proof-of-concept exists for the TIFF flaw.
These vulnerabilities are emblematic of a broader supply-chain risk pattern: a single transitive dependency embedded across web upload forms, ML pipelines, document processors, and container images can silently expose thousands of applications. As AI-assisted vulnerability research (demonstrated here by Anthropic's Claude) accelerates flaw discovery, organizations must treat open-source image libraries as high-priority attack surface in their software supply chain programs.
Why This Matters Now
Pillow is embedded in virtually every Python application that handles images, including ML training pipelines, web upload services, and document processors, making this a systemic supply-chain risk. With a CVSS 9.2 score, a public TIFF proof-of-concept, and 436 million monthly downloads, unpatched deployments represent an enormous, exploitable footprint. AI-driven vulnerability discovery is accelerating the pace at which critical flaws in foundational libraries are found and disclosed, compressing the window between disclosure and exploitation.
Attack Path Analysis
An attacker exploits CVE-2026-112900 in the Pillow image library by submitting a crafted EPS file with a malicious filename to an internet-facing upload endpoint, causing the server to pass attacker-controlled input to Ghostscript and execute arbitrary OS commands. From that foothold, the attacker escalates privileges within the compromised container or host, moves laterally across workloads sharing the vulnerable Python runtime, establishes outbound command-and-control channels, exfiltrates sensitive data, and ultimately disrupts or destroys services — representing a full supply-chain exploitation lifecycle against any Python-based application bundling an unpatched Pillow version.
Kill Chain Progression
This analysis maps confirmed threat intelligence to the full cloud kill chain to show where defensive gaps would emerge as an attack progresses.
Initial Compromise
Description
Attacker uploads a crafted EPS file whose filename contains Ghostscript interpreter directives (e.g., prefixed with '%!PS' command sequences or using pipe-syntax filenames such as '| malicious_command') to a web upload endpoint that invokes Pillow's Image.open() on user-supplied filenames. Pillow passes the unsanitized filename directly to the gs binary, triggering CVE-2026-112900 and achieving remote code execution on the server. Separately, a crafted FlashPix (FPX) JPEG exploit via Image.open() on untrusted uploads provides a second zero-click RCE path requiring no filename control. Both paths are supply-chain in nature — the vulnerable library was pulled in transitively by the application's dependency tree.
Related CVEs
CVE-2026-112900
CVSS 9.2A filename injection vulnerability in Pillow's EPS image handling allows an attacker who controls the filename passed to Image.open() to execute arbitrary OS commands via Ghostscript argument injection, affecting versions 2.6.0 through 12.3.0.
Affected Products:
Python Pillow Project Pillow – >=2.6.0, <=12.3.0
Exploit Status:
no public exploitReferences:
https://github.com/python-pillow/Pillow/security/advisories/GHSA-w889-685w-c8fhhttps://pillow.readthedocs.io/en/stable/releasenotes/13.0.0.htmlhttps://www.ox.security/blog/three-critical-pillow-cves-rce-and-heap-overflows-in-pythons-imaging-library-cve-2026-112900-cve-2026-112393-cve-2026-112403/https://pypi.org/project/pillow/13.0.0/CVE-2026-112393
CVSS 9.2A heap buffer overflow in Pillow's TIFF encoder when saving compressed TIFF images to an in-memory buffer (e.g., io.BytesIO) can lead to process crash and, when combined with a memory disclosure primitive, arbitrary code execution. Present since 2013.
Affected Products:
Python Pillow Project Pillow – >=2.0.0, <=12.3.0
Exploit Status:
proof of conceptReferences:
https://github.com/python-pillow/Pillow/security/advisories/GHSA-332p-7hrc-92wfhttps://pillow.readthedocs.io/en/stable/releasenotes/13.0.0.htmlhttps://www.ox.security/blog/three-critical-pillow-cves-rce-and-heap-overflows-in-pythons-imaging-library-cve-2026-112900-cve-2026-112393-cve-2026-112403/https://pypi.org/project/pillow/13.0.0/CVE-2026-112403
CVSS 9.2A heap buffer overflow in Pillow's lossless JPEG thumbnail processing (draft() and thumbnail() methods) can cause a crash when handling a crafted JPEG file; remote code execution has not been confirmed independently of the crash.
Affected Products:
Python Pillow Project Pillow – >=2.6.0, <=12.3.0
Exploit Status:
no public exploitReferences:
https://github.com/python-pillow/Pillow/security/advisories/GHSA-8g5g-8vmr-9782https://pillow.readthedocs.io/en/stable/releasenotes/13.0.0.htmlhttps://www.ox.security/blog/three-critical-pillow-cves-rce-and-heap-overflows-in-pythons-imaging-library-cve-2026-112900-cve-2026-112393-cve-2026-112403/https://pypi.org/project/pillow/13.0.0/
MITRE ATT&CK® Techniques
Compromise Software Dependencies and Development Tools
Exploit Public-Facing Application
Command and Scripting Interpreter
Exploitation for Client Execution
Hijack Execution Flow
Process Injection
Endpoint Denial of Service
Ingress Tool Transfer
Potential Compliance Exposure
Mapping incident impact across multiple compliance frameworks.
PCI DSS 4.0 – All System Components Protected from Known Vulnerabilities
Control ID: Requirement 6.3.3
NYDFS 23 NYCRR 500 – Access Privileges and Application Security
Control ID: Section 500.7 / 500.20
DORA (EU 2022/2554) – ICT Risk Management and Third-Party Dependency Resilience
Control ID: Article 9 — ICT Security and Article 11 — ICT Business Continuity
CISA Zero Trust Maturity Model 2.0 – Workload Isolation and Untrusted Input Handling
Control ID: Application Pillar — Advanced / Optimal: Application Security and Least Privilege Execution
NIS2 Directive (EU 2022/2555) – Vulnerability Handling and Open-Source Software Supply Chain Risk
Control ID: Article 21(2)(a) and 21(2)(e) — Risk Management and Supply Chain Security
ISO/IEC 27001:2022 – Third-Party Library Vulnerability Management and Secure Software Development
Control ID: Annex A 8.8 — Management of Technical Vulnerabilities / A 8.28 — Secure Coding
Sector Implications
Industry-specific impact of the vulnerabilities, including operational, regulatory, and cloud security risks.
Computer Software/Engineering
Python Pillow's supply-chain CVE-2026-112900 (CVSS 9.2) exposes software pipelines to RCE via crafted EPS filenames, threatening CI/CD workflows, containerized builds, and ML image-processing dependencies at massive scale.
Health Care / Life Sciences
Medical imaging and DICOM-adjacent Python pipelines using Pillow face critical RCE and heap-overflow risk; HIPAA.164.312 compliance violations loom if untrusted image uploads exploit unpatched EPS or TIFF processing paths.
Financial Services
Document and PDF image pipelines in banking and fintech processing untrusted uploads risk RCE exploitation via Pillow's TIFF and JPEG flaws, with PCI.4.0 and NIST.800-53 compliance exposure compounding lateral movement threats.
Information Technology/IT
IT platforms and managed services embedding Pillow across 436 million monthly downloads face systemic supply-chain compromise; egress exfiltration post-RCE and east-west lateral movement amplify enterprise-wide blast radius significantly.
Sources
- Critical Flaw in Python’s Popular Pillow Image Library Allows Code Execution via a Crafted Imagehttps://thehackernews.com/2026/10/critical-flaw-in-pythons-popular-pillow.htmlVerified
- Three Critical Pillow CVEs: RCE and Heap Overflows in Python's Imaging Library (CVE-2026-112900, CVE-2026-112393, CVE-2026-112403)https://www.ox.security/blog/three-critical-pillow-cves-rce-and-heap-overflows-in-pythons-imaging-library-cve-2026-112900-cve-2026-112393-cve-2026-112403/Verified
- Pillow 13.0.0 Release Noteshttps://pillow.readthedocs.io/en/stable/releasenotes/13.0.0.htmlVerified
- GitHub Security Advisory GHSA-w889-685w-c8fh (CVE-2026-112900 EPS Ghostscript Filename Injection)https://github.com/python-pillow/Pillow/security/advisories/GHSA-w889-685w-c8fhVerified
- GitHub Security Advisory GHSA-332p-7hrc-92wf (CVE-2026-112393 TIFF Heap Overflow)https://github.com/python-pillow/Pillow/security/advisories/GHSA-332p-7hrc-92wfVerified
- GitHub Security Advisory GHSA-8g5g-8vmr-9782 (CVE-2026-112403 JPEG Thumbnail Heap Overflow)https://github.com/python-pillow/Pillow/security/advisories/GHSA-8g5g-8vmr-9782Verified
- Pillow Security Guidance - Official Handbookhttps://pillow.readthedocs.io/en/stable/handbook/security.htmlVerified
- Pillow 13.0.0 on PyPIhttps://pypi.org/project/pillow/13.0.0/Verified
Frequently Asked Questions
Cloud Native Security Fabric Mitigations and ControlsCNSF
Based on the attack progression modeled above, these are the defensive controls that would constrain each stage.
Aviatrix Zero Trust CNSF is directly relevant here because the attacker's progression depends on unrestricted internal reachability and unfiltered outbound paths that Zero Trust segmentation and egress controls would likely constrain. By enforcing workload-level isolation and identity-aware routing across the cloud environment, the blast radius of an initial Pillow RCE would likely be limited well before lateral movement or data exfiltration could succeed.
Control: Cloud Native Security Fabric (CNSF)
Mitigation: CNSF fabric-level visibility into inbound workload traffic could reduce the reachability of the exploited upload service, limiting which external sources may reach the vulnerable endpoint and making anomalous upload activity more likely to surface during inspection.
Control: Zero Trust Segmentation
Mitigation: Zero Trust segmentation could meaningfully reduce the attacker's ability to reach cloud metadata endpoints or adjacent credential stores from the compromised workload, likely constraining how far harvested credentials could be leveraged across the broader environment.
Control: East-West Traffic Security
Mitigation: East-west traffic enforcement would likely constrain the attacker's ability to make arbitrary inter-service API calls across workloads, reducing how easily the exploit could propagate laterally to adjacent microservices sharing the vulnerable Pillow runtime.
Control: Multicloud Visibility & Control
Mitigation: Centralized multicloud visibility could surface anomalous outbound connection patterns from compromised workloads — such as unexpected FQDN destinations or unusual beacon intervals — likely making it harder for the attacker to sustain a persistent C2 channel without detection.
Control: Egress Security & Policy Enforcement
Mitigation: Egress policy enforcement would likely reduce the attacker's ability to transfer large volumes of sensitive data to unauthorized external destinations, constraining the scope of exfiltration that could succeed even from a workload already under attacker control.
If prior Zero Trust segmentation and egress controls were in place, the attacker's reachable blast radius at this stage would likely be significantly reduced — ransomware propagation across workloads and supply-chain poisoning of downstream images would be constrained to workloads the attacker could actually reach, rather than spreading freely across a flat environment.
Impact at a Glance
Affected Business Functions
- Web Application Image Upload and Processing Pipelines
- Machine Learning and AI Data Ingestion Workflows
- Document and PDF Generation Services
- Avatar, Thumbnail, and Media Transcoding Services
Estimated downtime: 3 days
Estimated loss: N/A
Any Python-based web application, ML pipeline, or document processing service using Pillow versions 2.6.0 through 12.3.0 is at risk of remote code execution via crafted EPS filenames, heap overflow via malicious TIFF in-memory encoding, or crash and potential code execution via crafted JPEG thumbnails. Exploitable attack surfaces include server-side data stores, environment variables containing API keys and credentials, internal network configurations, user-uploaded files and PII, and any data accessible to the process running Pillow. Given approximately 436 million monthly downloads, the breadth of potential data exposure across web platforms, SaaS products, and ML systems is extremely broad, though no confirmed exploitation or data breach has been reported. Financial loss is listed as 0 USD as no confirmed incident cost has been reported; however, organizations failing to patch face material risk of compromise at scale.
Recommended Actions
Key Takeaways & Next Steps
- • Enforce egress policy with Cloud Firewall (ACF) and Egress Security controls to block reverse shell and C2 beacon traffic from compromised workloads — apply FQDN-based allowlisting so image-processing services can only reach known, approved destinations, eliminating the attacker's ability to establish outbound command-and-control after exploiting CVE-2026-112900.
- • Deploy Inline IPS (Suricata) signatures for known CVE-2026-112900 exploit patterns at ingress and east-west inspection points to detect and block malicious EPS/FPX/TIFF payloads and crafted filename sequences before they reach the Pillow runtime, reducing the probability of successful initial compromise across the fleet.
- • Apply Zero Trust Segmentation and East-West Traffic Security controls to enforce workload-to-workload identity-based policies that prevent a compromised image-processing pod from making lateral API calls to adjacent microservices or Kubernetes namespaces, containing blast radius to the initially exploited workload.
- • Enable Multicloud Visibility & Control (CoPilot/ThreatIQ) to baseline and alert on anomalous internal traffic patterns — specifically repeated Image.open() invocations against unexpected filenames, unusual outbound connection attempts from Python application workloads, and inter-region traffic spikes — enabling rapid detection of post-exploitation behavior.
- • Activate Encrypted Traffic (HPE) controls for all data-in-transit paths and combine with Egress Security policy enforcement to ensure that even if an attacker exfiltrates data over a covert channel, unencrypted sensitive internal flows cannot be passively sniffed, and outbound transfers to unauthorized destinations are blocked before leaving the cloud environment.



