CVE-2026-59087
Executive Summary
CVE-2026-59087 is a critical heap overflow vulnerability in the GIMP image manipulation program, specifically within its Seattle Filmworks (SFW) file loader. An attacker can exploit this flaw by crafting a malicious Seattle Filmworks file and tricking a user into opening it, resulting in the writing of several kilobytes of controlled data beyond the intended memory buffer. This memory corruption can lead to arbitrary code execution or a denial of service on affected systems. The vulnerability affects all versions of GIMP shipping the vulnerable Seattle Filmworks loader, and as of this report, no patch is available.
This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.
No signup required
Technical Analysis
The Seattle Filmworks (SFW) format is a legacy image format used by Seattle FilmWorks, a former photo-processing service that provided software for viewing developed photos on personal computers. GIMP retains a dedicated file loader for this format, located in plug-ins/file-sfw/sfw.c. The loader parses the file's header and body to reconstruct the image.
The vulnerability resides in how the loader handles image width and height fields during decompression of the planar data. Specifically, the loader allocates a heap buffer based on the dimensions declared in the SFW header structure:
/* sfw.c pseudo-code */
sfw_header_t *header = (sfw_header_t *) buf;
gint width = header->width;
gint height = header->height;
gint bpp = header->bpp;
guchar *pixels = g_malloc(width * height * bpp); /* insufficient allocation */
The flaw occurs because the loader does not properly validate the relationship between the declared image dimensions and the actual quantity of encoded raster data contained within the file. When the loader decompresses RLE-compressed scanlines, it calculates output offsets using the transformed image height and width. An adversarial file can declare a smaller buffer allocation (e.g., via crafted height/width fields that underflow or result in a smaller malloc), while the subsequent decompression loop writes run-length-encoded data for each scanline. By controlling the RLE opcodes — specifically, by emitting "repeat" and "copy" instructions that write beyond the computed row stride — the attacker can overflow the allocated heap buffer by several kilobytes.
The overflow is a classic CWE-787 (Out-of-bounds Write) with attacker-controlled content. The attacker controls both the length of the overrun (up to several kilobytes) and the data content (pixel values are copied verbatim from the RLE stream into memory). This distinguishes it from a single-byte overflow: the attacker can overwrite adjacent heap metadata, function pointers, or other heap-allocated objects. On modern glibc systems, a multi-kilobyte controlled heap overwrite is a well-exploitable primitive, often enabling arbitrary code execution via heap grooming (targeting GIMP's many GObject structures, which contain virtual method pointers).
The attack surface is triggered by user interaction: the victim must open the crafted SFW file, either via the GUI (File → Open) or by passing it as a command-line argument (e.g., gimp file.sfw). The parser runs in the context of the GIMP process with the user's privileges, making the vulnerability locally exploitable with social engineering required for initial access.
Exploitation Scenarios
Attack Chain — Crafted SFW File Compromise
Reconnaissance / Target Selection: The attacker identifies targets among graphic artists, photographers, and design professionals who frequently use GIMP on Linux or Windows. The attacker may harvest email addresses or monitor design forums. For enterprise targeting, the attacker identifies individuals whose machines contain high-value data (source code, credentials, customer PII).
Weaponization: The attacker constructs a malicious SFW file:
- Header construction: Writes an SFW header declaring a small width (e.g., 10 px) and height (e.g., 10 px), causing an undersized heap allocation of ~100 bytes.
- RLE payload design: Builds a decompression stream containing a long sequence of RLE "copy" opcodes that specify a large number of bytes (e.g., 0xFFFF) to copy verbatim into the target buffer. The attacker arranges the RLE data such that the decompressor writes 100–200 bytes of valid pixel data, then continues writing 4–8 KB of attacker-controlled bytes beyond the buffer boundary.
- Heap grooming payload: The overflow data is aligned to overwrite a GObject virtual table pointer or a
GStringstructure adjacent to the heap allocation. The attacker embeds a payload (e.g., a reverse shell command) in the overflow bytes, and crafts the overwritten pointer to redirect execution to either a ROP chain or asystem()call via a GObject class method invocation.
Delivery / Trigger: The attacker emails the malicious
.sfwfile with a compelling filename (e.g.,2026_project_photos.sfw) or hosts it on a compromised website. The victim downloads and opens the file in GIMP. The loader parses the header, performs the undersized allocation, and begins RLE decompression, immediately overflowing the buffer.Payload Execution: The overflow corrupts the heap. When the loader finishes and GIMP's object system finalizes the affected GObject, the corrupted vtable pointer is invoked, transferring control to the attacker's ROP chain. The chain executes
execve("/bin/sh", ...)or a Windows equivalent, spawning a shell with the victim's privileges.Post-Exploitation Impact: From the shell, the attacker:
- Dumps GIMP's process memory to extract recently opened files or document thumbnails.
- Escalates laterally within the network using harvested credentials.
- Installs a persistent backdoor (e.g., a cron job or modified GIMP plugin).
- Exfiltrates sensitive data via HTTPS, blending with normal traffic.
Impact Assessment
CVSS Score Breakdown (7.8 High, CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H):
- Attack Vector (Local): The attacker must deliver a file to the local system; no network-facing service is involved. This limits remote zero-click exploitation but expands the phishing attack surface.
- Impact (High/High/High): Full confidentiality, integrity, and availability compromise. Arbitrary code execution with user privileges allows data theft, malware installation, and process disruption.
Affected Systems: All GIMP installations with the Seattle Filmworks loader enabled. This includes:
- Windows, macOS, and Linux desktop distributions.
- Enterprise environments where GIMP is installed for graphics teams or bundled in software packages.
- CI/CD or automated image-processing pipelines that invoke GIMP headlessly (
gimp -i -b).
Blast Radius: Moderate. The attack requires user interaction (phishing), but the payload is executed with the victim's privilege level. In a workstation context, this can expose the user's documents, SSH keys, and local credentials. In rare cases where GIMP runs with elevated privileges (e.g., sudo execution), the impact expands to full system compromise. The vulnerability is unpatched, meaning all current GIMP versions are at risk, increasing the practical impact and urgency.
Detection Guidance
Sigma Rule
title: Suspicious GIMP Command Line with SFW File
id: 7e2f6c8b-3b6a-4d6e-9a0f-4e8b7a1c2d3e
status: experimental
description: Detect GIMP invocation with a Seattle Filmworks file, potentially indicating a crafted malicious file delivery.
logsource:
category: process_creation
product: windows
detection:
selection:
Image|endswith: '\\gimp-2.10.exe' # adjust for version path
CommandLine|contains:
- '.sfw'
- '.SFW'
condition: selection
level: medium
falsepositives:
- Legitimate users opening SFW files from legacy archives
tags:
- attack.t1204
- attack.initial-access
YARA Rule
rule GIMP_SFW_Heap_Overflow_Pattern
{
meta:
author = "ValtersIT Threat Intel"
description = "Detects SFW files containing oversized RLE copy operations indicative of heap overflow payload."
cve = "CVE-2026-59087"
date = "2026-01-15"
strings:
$sfw_magic = { 53 46 57 20 } // "SFW " header magic
$rle_long_copy = { 00 FF FF } // RLE opcode with 0xFFFF length (potential overflow trigger)
$rle_medium_copy = { 00 10 00 } // RLE copy length 4096
condition:
$sfw_magic at 0 and (1 of ($rle*)) and filesize < 10MB
}
Suricata IDS Rule
alert http any any -> any any (msg:"ET EXPLOIT GIMP SFW Heap Overflow Payload Download"; flow:established,to_client; file.data; content:"SFW "; depth:4; content:"|00 ff ff|"; within:2048; classtype:attempted-user; sid:202659087; rev:1;)
Note: Network detection is limited; the exploit occurs locally. This rule flags SFW downloads from HTTP sources with oversized RLE headers.
Elastic Detection
process where event.action == "exec" and
process.name == "gimp*" and
process.args : "*.sfw"
Splunk SPL Query
index=windows sourcetype=ProcessCreation
| search process_name=gimp*.exe OR process_name=gimp CommandLine="*.sfw"
| stats count by User, CommandLine, parent_process_name, _time
| sort - _time
Wazuh OSSEC Rule
<group name="gimp,">
<rule id="100587" level="8">
<decoded>gimp</decoded>
<match>\.sfw</match>
<description>GIMP opened a Seattle Filmworks file - possible CVE-2026-59087 exploit attempt.</description>
<group>gimp, exploit_attempt,</group>
</rule>
</group>
Mitigation & Patch Guidance
Patch Confidence: 0/4 — UNPATCHED — no patch evidence from any tracked source.
Immediate Mitigations (workarounds only):
- Disable/Remove the SFW Loader: Locate the
file-sfwplugin binary (e.g.,file-sfw.exeon Windows,libsfw.soon Linux) and rename or remove it from GIMP's plugin directory. GIMP will skip the loader and display an "Unknown file type" error. - File Parser Restrictions: Use GIMP's
safe-modestartup flag (gimp --safe-mode) for untrusted files, which disables third-party plugin loading. - User Education: Instruct users to never open
.sfwor.SFWattachments from unverified senders. SFW is a legacy format rarely used since the early 2000s; any modern delivery is suspect. - Perimeter Filtering: Block file extensions
.sfwand.SFWat email gateways and web proxies.
- Disable/Remove the SFW Loader: Locate the
Patch/Upgrade Steps:
- No upstream patch exists. Monitor GIMP security advisories (https://www.gimp.org/security/) and distribution trackers (Debian, Fedora, Ubuntu security mailing lists) for backported fixes.
- When available, update to the patched GIMP version (e.g., ≥2.10.40 or 3.0.x after fix) and verify the SFW loader's dimension validation.
Long-Term Hardening:
- Principle of Least Privilege: Run GIMP in a sandbox (Firejail, Bubblewrap, Windows Sandbox) or a dedicated non-privileged user account for parsing trusted-untrusted image files.
- Application Control: Use Microsoft AppLocker or Linux AppArmor to restrict GIMP's execution context and file write permissions.
- Memory Error Mitigations: Enable ASLR, DEP, and (on Linux) compile AppArmor profiles with
attach_disconnectedto limit post-exploitation impact. - Anomaly Monitoring: Deploy FIM (File Integrity Monitoring) to detect modified GIMP binaries or unusual plugin directory content.
- Version Pinning: If using GIMP in embedded environments, pin to a verified build and audit the SFW loader source code if internal recompilation is possible.
References
- NVD Entry (Primary): https://nvd.nist.gov/vuln/detail/CVE-2026-59087 — Official CVE description and severity metadata.
- GIMP Official Security Advisories: https://www.gimp.org/security/ — Monitor for vendor patch announcements.
- MITRE ATT&CK Technique T1204 — User Execution: https://attack.mitre.org/techniques/T1204/ — Relevant to the social engineering delivery vector.
- CWE-787 Out-of-bounds Write: https://cwe.mitre.org/data/definitions/787.html — Vulnerability class details and common mitigations.
- CISA Known Exploited Vulnerabilities Catalog: https://www.cisa.gov/known-exploited-vulnerabilities-catalog — Checked 2026-01-15; CVE-2026-59087 is NOT listed. No known in-the-wild exploitation has been confirmed by CISA, FIRST.org, or commercial threat intel feeds at the time of writing.
Threat Actor Campaigns: No campaigns have been publicly attributed to this CVE. The vulnerability's premium suitability for phishing in graphic-arts verticals makes it a likely candidate for future targeted attacks; continued monitoring of dark web exploit markets (e.g., XSS, ExploitDB submission queues) is recommended.
💣 PoC CODE AVAILABLE
Exploit code for this CVE is tracked in our database.
Access poc_code via API Pro.