Skip to main content

FreeImage CVE-2026-118753

| EUVDEUVD-2026-112497 HIGH
Out-of-bounds Write (CWE-787)
2026-10-28 VulnCheck GHSA-wr69-568q-rrqg
8.5
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Craft GIF with frame left+width past screen
  2. Delivery
    Deliver file to victim application
  3. Exploit
    App loads it with GIF_PLAYBACK flag
  4. Execution
    GifPlaybackFillRect writes past canvas allocation
  5. Impact
    Heap corruption, potential code execution

Vulnerability Assessment

Weakness
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Bounds checking, write limits
MITRE ATT&CK

2 techniques across 2 tactics: Execution, Privilege Escalation

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 consuming application to load an attacker-supplied GIF via FreeImage's animated-playback path, i.e. with the GIF_PLAYBACK flag set; the crafted GIF must contain a frame whose left offset plus width exceeds the logical screen width (e.g. a frame beginning at or beyond the canvas edge), which drives the unclipped write in GifPlaybackCompositeFrame() and GifPlaybackFillRect(). Limiting factors that reduce real-world reach: the vulnerable compositing code is only reached when GIF_PLAYBACK is used, not during plain single-frame GIF decoding; the attack vector is local (AV:L) and needs the victim to open the file (UI:P, passive interaction); and only the danoli3 FreeImage fork before 3.19.25 is affected - updating to 3.19.25 is the vendor-provided fix.

Impact

Signals point to a genuine but conditional memory-corruption flaw rather than an internet-wide emergency. The supplied CVSS 4.0 vector (AV:L/AC:L/AT:N/PR:N/UI:P, VC:H/VI:H/VA:H) scores 8.5 and reflects a local attack vector requiring passive user interaction with full confidentiality/integrity/availability impact on the vulnerable system - consistent with a client-side image-parsing bug (CWE-787 out-of-bounds write) reached by opening a crafted file, not a remotely sprayable network service. There is no KEV listing and no EPSS score in the input, so active-exploitation and statistical-exploitation signals are simply absent (not low - missing); do not read that absence as safety. The vuln.today Decision label is 'this_week' (not act_now/emergency), which aligns with high technical impact tempered by the local vector and the requirement that the application actually use the GIF_PLAYBACK code path. A vendor patch exists (PR #183, release 3.19.25) and the root cause is confirmed by the diff. Bottom line: a real priority for any product that loads untrusted animated GIFs through the danoli3 FreeImage fork with GIF_PLAYBACK, but its reach is gated by local file delivery plus that specific loading mode, so it is a patch-this-week item rather than a drop-everything network-wormable issue.

Exploit ScenarioDerived

An attacker crafts an animated GIF whose frame left offset plus width exceeds the logical screen width and delivers it to a victim who opens it in an application that loads GIFs through the danoli3 FreeImage fork with the GIF_PLAYBACK flag. During playback compositing, GifPlaybackCompositeFrame() and GifPlaybackFillRect() write past the canvas heap allocation, corrupting adjacent heap memory with attacker-influenced data and potentially leading to code execution. The regression test added in PR #183 (testGifPlaybackBounds.cpp) programmatically builds such an out-of-bounds GIF, so a public PoC reference exists; it is not verified as working weaponized exploit code.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Oct 28, 2026

Heap buffer overflow in the danoli3 FreeImage fork's animated-GIF playback compositor allows memory corruption when a crafted GIF is loaded with the GIF_PLAYBACK flag; versions before 3.19.25 are affected. The flaw is triggered by a frame whose left offset plus width exceeds the logical screen width, causing GifPlaybackCompositeFrame() and GifPlaybackFillRect() to write past the canvas allocation. Exploitation is conditional: an application must load an attacker-supplied GIF through the multi-page playback path, and the victim must open the file (local vector, user interaction), so no public exploit has been identified at time of analysis, though the vendor fix is a straightforward upgrade to 3.19.25.

RemediationAI

Upgrade the danoli3 FreeImage fork to 3.19.25, which contains the clipping fix in PluginGIF.cpp; the changes are visible in PR https://github.com/danoli3/FreeImage/pull/183 and commits https://github.com/danoli3/FreeImage/commit/96f4099f8e307484ba69b4aa14d772b7679a1bfb and https://github.com/danoli3/FreeImage/commit/0da5ddb4d311e5222251348cca1aa988478b1034, and the release is at https://github.com/danoli3/FreeImage/releases/tag/3.19.25. Vendor-released patch: 3.19.25. If immediate rebuild is not possible, the exposure can be cut by avoiding the animated-playback entry points - do not pass GIF_PLAYBACK to FreeImage_LoadMultiBitmap and decode only single frames or re-encode untrusted GIFs through a hardened parser - at the cost of losing animation compositing and per-page playback behavior in the consuming application; alternatively, restrict upload or file-open paths that feed GIFs into FreeImage to trusted sources until the library is rebuilt against 3.19.25.

Affected VersionsENISA

FreeImage 0 ≤3.18.0
FreeImage 0 <3.19.25

Affected Packages

euvd freeimage fix: 3.19.25

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

FreeImage is a widely embedded image-decoding library, and the danoli3 fork ships a GIF animation playback path that is only used when callers pass GIF_PLAYBACK to FreeImage_LoadMultiBitmapFrom*; plain single-frame GIF decoding does not reach the vulnerable code. The root cause is CWE-787 (out-of-bounds write) in Source/FreeImage/PluginGIF.cpp: the compositor derives its per-row copy length from the frame's own pinfo.width and computes a destination row from pinfo.left/pinfo.top without clipping either against the logical screen dimensions of the canvas bitmap. A frame rectangle that starts inside or beyond the canvas and extends past its right edge therefore drives writes beyond the allocated scanline. The upstream fix (PR 183, commits 96f4099f and 0da5ddb4) adds clamping in both GifPlaybackCompositeFrame() and GifPlaybackFillRect(): it computes visible_width as logicalwidth - pinfo.left (zero when left is at or past the edge), caps the loop at frame_width = min(pinfo.width, visible_width), skips zero-width frames, and replaces the scanline index guard with a canvas_y >= logicalheight check. A regression test (testGifPlaybackBounds.cpp) builds a 10x10 logical screen containing a 5x1 frame at x=8, a one-pixel frame at x=60000, and a third page that clears an off-canvas prior frame. CPE data maps both the danoli3 fork (danoli3:freeimage) and the freeimage:freeimage naming to the affected range.

Know when Freeimage 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

Vendor (VulnCheck) PRIMARY 8.5 HIGH
CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:P/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
vuln.today AI 7.8 HIGH

Victim must open a crafted local GIF with GIF_PLAYBACK, so AV:L/UI:R and PR:N; heap out-of-bounds write yields full C/I/A impact.

3.1 AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H
4.0 AV:L/AC:L/AT:N/PR:N/UI:P/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N

Primary rating from Vendor (VulnCheck).

CVSS VectorVendor: VulnCheck

Attack Vector
Local
Attack Complexity
Low
Attack Requirements
None
Privileges Required
None
User Interaction
Passive
Vulnerable system: Confidentiality
High
Vulnerable system: Integrity
High
Vulnerable system: Availability
High
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

DescriptionCVE.org

FreeImage (danoli3 fork) before 3.19.25 contains a heap buffer overflow vulnerability in PluginGIF.cpp that allows attackers to write past the canvas allocation via unclipped GIF frame rectangles. Attackers can craft a GIF whose frame left plus width exceeds the logical screen width, causing GifPlaybackCompositeFrame() and GifPlaybackFillRect() to corrupt heap memory when loaded with GIF_PLAYBACK.

Executive ViewAI

Why It Matters

A heap buffer overflow in the danoli3 FreeImage fork's animated-GIF playback compositor (CVE-2026-118753) allows memory corruption when a crafted GIF is loaded with the GIF_PLAYBACK flag, affecting versions before 3.19.25. Successful exploitation requires a user to open a malicious GIF in an application using the playback path, potentially enabling code execution or crashes. Leadership should prioritize patch deployment across affected systems, particularly in environments where untrusted GIFs are processed, due to the high severity score.

Business Impact: High
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

Prevalence
Medium
image-decoding library embedded in various apps; specific danoli3 fork narrows footprint
Social Media
1
Sightings
Data Quality
4 sources
Confidence: Medium

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.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS N/A
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Small
Automatable· derived
No
Human Impact
High

Priority Score

42
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +42
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

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.

Memory corruption occurs when a program writes data beyond the boundaries of allocated memory regions or accesses memory in unintended ways, violating the integrity of the process's address space.

CVE-2025-70968 CRITICAL POC
9.8 Jan 14

FreeImage 3.18.0 has a use-after-free in the TARGA plugin's loadRLE function. Processing a malicious TGA file can lead t

CVE-2023-47992 HIGH POC
8.8 Jan 09

An integer overflow vulnerability in FreeImageIO.cpp::_MemoryReadProc in FreeImage 3.18.0 allows attackers to obtain sen

CVE-2023-47994 HIGH POC
8.8 Jan 09

An integer overflow vulnerability in LoadPixelDataRLE4 function in PluginBMP.cpp in Freeimage 3.18.0 allows attackers to

CVE-2024-28582 HIGH POC
8.4 Mar 20

Buffer Overflow vulnerability in open source FreeImage v.3.19.0 [r1909] allows a local attacker to execute arbitrary cod

CVE-2024-28581 HIGH POC
8.4 Mar 20

Buffer Overflow vulnerability in open source FreeImage v.3.19.0 [r1909] allows a local attacker to execute arbitrary cod

CVE-2024-28580 HIGH POC
8.4 Mar 20

Buffer Overflow vulnerability in open source FreeImage v.3.19.0 [r1909] allows a local attacker to execute arbitrary cod

CVE-2024-28578 HIGH POC
8.4 Mar 20

Buffer Overflow vulnerability in open source FreeImage v.3.19.0 [r1909] allows a local attacker to execute arbitrary cod

CVE-2024-28566 HIGH POC
8.4 Mar 20

Buffer Overflow vulnerability in open source FreeImage v.3.19.0 [r1909] allows a local attacker to execute arbitrary cod

CVE-2024-28583 HIGH POC
7.8 Mar 20

Buffer Overflow vulnerability in open source FreeImage v.3.19.0 [r1909] allows a local attacker to execute arbitrary cod

CVE-2024-28569 HIGH POC
7.8 Mar 20

Buffer Overflow vulnerability in open source FreeImage v.3.19.0 [r1909] allows a local attacker to execute arbitrary cod

CVE-2024-9029 HIGH POC
7.5 Sep 27

A flaw was found in the freeimage library. Rated high severity (CVSS 7.5), this vulnerability is remotely exploitable, n

CVE-2019-12214 HIGH POC
7.5 May 20

In FreeImage 3.18.0, an out-of-bounds access occurs because of mishandling of the OpenJPEG j2k_read_ppm_v3 function in j

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy