{"id":"CVE-2026-118753","kind":"vulnerability","aliases":["CVE-2026-118753"],"related":[],"title":"FreeImage fork: crafted GIF frame overflows heap and corrupts memory","description":"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.","summary":"The danoli3 fork of FreeImage does not clip GIF frame rectangles to the logical screen size in PluginGIF.cpp. A crafted GIF whose frame extends past the canvas makes the playback compositing code write beyond the canvas heap allocation when it is loaded with GIF_PLAYBACK.","severity":"high","cvss":8.5,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["c++","freeimage","image-processing","package","self-hosted"],"not_affected_if":["default-config","trusted-input-only"],"how_to_check":"- Check whether the application links the danoli3 FreeImage fork and its version, for example `grep -ri freeimage` in the build files or package manifest\n- Check whether GIF loading uses the `GIF_PLAYBACK` flag in the FreeImage_Load call sites","fix":"- Move the danoli3 FreeImage fork to `3.19.25` or later\n- Until upgraded, stop loading untrusted GIFs with `GIF_PLAYBACK`","status":"open","published_at":"2026-10-28T22:17:14+00:00","first_seen_at":"2026-10-28T22:35:34+00:00","triaged_at":"2026-10-28T22:36:40+00:00","updated_at":"2026-10-28T22:36:40+00:00","category":"package","confidence":0.6,"triage":{"at":"2026-10-28T22:36:40Z","model":"claude-haiku-5-5","output":{"fix":"- Move the danoli3 FreeImage fork to `3.19.25` or later\n- Until upgraded, stop loading untrusted GIFs with `GIF_PLAYBACK`","reach":"internet","title":"FreeImage fork: crafted GIF frame overflows heap and corrupts memory","impact":"high","summary":"The danoli3 fork of FreeImage does not clip GIF frame rectangles to the logical screen size in PluginGIF.cpp. A crafted GIF whose frame extends past the canvas makes the playback compositing code write beyond the canvas heap allocation when it is loaded with GIF_PLAYBACK.","category":"package","nicknames":[],"who_cares":["freeimage","c++","image-processing","self-hosted"],"confidence":0.6,"needs_auth":"no","worst_case":"Attacker corrupts heap memory while a GIF is decoded, possibly running code","analyst_note":"Confirm the exact GIF_PLAYBACK trigger conditions and whether code execution is demonstrated; check the danoli3 fork's release notes for 3.19.25 at https://nvd.nist.gov/vuln/detail/CVE-2026-118753.","how_to_check":"- Check whether the application links the danoli3 FreeImage fork and its version, for example `grep -ri freeimage` in the build files or package manifest\n- Check whether GIF loading uses the `GIF_PLAYBACK` flag in the FreeImage_Load call sites","needs_analyst":true,"not_affected_if":["default-config","trusted-input-only"],"who_is_affected":"Applications that embed the danoli3 FreeImage fork before 3.19.25 and decode GIF files from untrusted sources with the GIF_PLAYBACK flag. Systems that only decode trusted local images, or that use upstream FreeImage builds rather than this fork, can skip it.","user_interaction":"no","needs_special_setup":"yes","severity_if_unknown":"high"},"cost_usd":0.00068,"input_tokens":3398,"output_tokens":681,"severity_before":"high"},"analyst_status":null,"analyst_note":null,"search":"'-118753':13A,16A '-2026':12A,15A '3.19.25':75C 'alloc':63B,92C 'allow':85C 'attack':86C,98C 'beyond':59B 'buffer':79C 'c':17B 'canva':52B,61B,91C 'caus':113C 'clip':33B 'code':57B 'composit':56B 'contain':76C 'corrupt':9A,118C 'craft':3A,45B,100C 'cve':11A,14A 'danoli3':27B,72C 'exceed':108C 'extend':49B 'fork':2A,28B,73C 'frame':5A,35B,48B,96C,104C 'freeimag':1A,18B,30B,71C 'gif':4A,34B,46B,69B,95C,102C,124C 'gifplaybackcompositefram':114C 'gifplaybackfillrect':116C 'heap':7A,62B,78C,119C 'host':25B 'imag':20B 'image-process':19B 'left':105C 'load':67B,122C 'logic':39B,110C 'make':53B 'memori':10A,120C 'overflow':6A,80C 'packag':22B 'past':50B,89C 'playback':55B,70B,125C 'plugingif.cpp':43B,83C 'plus':106C 'process':21B 'rectangl':36B,97C 'screen':40B,111C 'self':24B 'self-host':23B 'size':41B 'unclip':94C 'via':93C 'vulner':81C 'whose':47B,103C 'width':107C,112C 'write':58B,88C","nicknames":[],"mitigations":[],"who_affected":"Applications that embed the danoli3 FreeImage fork before 3.19.25 and decode GIF files from untrusted sources with the GIF_PLAYBACK flag. Systems that only decode trusted local images, or that use upstream FreeImage builds rather than this fork, can skip it.","tier":"B","verified":{},"analyst_revisit_at":null,"first_public_at":"2026-10-28T22:17:14+00:00","kev":null,"cvss_vector":"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/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X","cvss_by":"disclosure@vulncheck.com","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-118753","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-118753","severity":null,"published_at":"2026-10-28T22:17:14+00:00","modified_at":"2026-10-28T22:17:14+00:00","first_seen_at":"2026-10-28T22:35:34+00:00","fetched_at":"2026-10-28T22:35:34+00:00","note":null}],"documents":[],"notice":"Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai"}