{"id":"CVE-2026-123614","kind":"vulnerability","aliases":["CVE-2026-123614"],"related":[],"title":"imgproxy: ICO loader integer overflow lets remote images corrupt memory","description":"imgproxy from 4.0.0 before 4.0.16 contains an integer overflow in the ICO loader that allows remote attackers to trigger a heap buffer overflow via a crafted data_size value. Attackers can submit a crafted ICO image whose data_size wraps the allocation in vips/icoload.c, corrupting heap memory to crash the process or achieve code execution.","summary":"imgproxy versions 4.0.0 before 4.0.16 have an integer overflow in the ICO image loader. A crafted ICO image can make a heap buffer overflow, crashing the process or potentially running code.","severity":"critical","cvss":9.8,"epss":null,"exploited":false,"exploited_at":null,"products":[{"name":"imgproxy","fixed":["4.0.16"],"affected":">= 4.0.0, <= 4.0.15","ecosystem":"vendor"}],"ecosystems":[],"tags":["image-processing","imgproxy","package","self-hosted"],"not_affected_if":["no-ico-input","version-4.0.16-or-later"],"how_to_check":"Run 'imgproxy version' or check your container image tag; versions 4.0.0 through 4.0.15 are vulnerable. Also check whether the instance accepts image URLs from untrusted users or sources (the ICO loader is reached when a file starts with the ICO magic bytes 00 00 01 00, whatever its extension).","fix":"Upgrade imgproxy to 4.0.16 or later (maintainer's patched version). Later 4.0.x releases (4.0.17, 4.0.21) fix further ICO/BMP loader bugs, so move to the latest 4.0.x.","status":"open","published_at":"2026-11-08T02:16:56+00:00","first_seen_at":"2026-11-08T02:21:14+00:00","triaged_at":"2026-11-08T02:22:34+00:00","updated_at":"2026-11-08T02:23:45+00:00","category":"package","confidence":0.85,"triage":{"at":"2026-11-08T02:22:34Z","model":"claude-haiku-5-5","output":{"fix":"- imgproxy: move to `4.0.16` or later.","reach":"internet","title":"imgproxy: ICO loader integer overflow lets remote images corrupt memory","impact":"high","summary":"imgproxy versions 4.0.0 before 4.0.16 have an integer overflow in the ICO image loader. A crafted ICO image can make a heap buffer overflow, crashing the process or potentially running code.","audience":"businesses","category":"package","nicknames":[],"who_cares":["imgproxy","self-hosted","image-processing"],"confidence":0.7,"fix_status":"available","needs_auth":"no","worst_case":"Remote attacker crashes imgproxy or runs code on the server","analyst_note":"Confirm whether ICO decoding is enabled by default and check the maintainer's advisory for the exact affected configuration.","how_to_check":"- Check the imgproxy version in use, for example `imgproxy version` or the image tag in your deployment.\n- Confirm whether the image is one of `4.0.0` through `4.0.15`.","plain_action":"","needs_analyst":true,"not_affected_if":["version-4.0.16-or-later","no-ico-input"],"who_is_affected":"Any deployment running imgproxy from 4.0.0 before 4.0.16 that accepts image sources from outside, since a crafted ICO image can reach the vulnerable loader. Internal-only deployments that never process untrusted ICO files are lower risk, but the sources do not say how the loader is reached by default. unknown for anything beyond that.","user_interaction":"no","needs_special_setup":"unknown","severity_if_unknown":"critical"},"cost_usd":0.000714,"input_tokens":4300,"output_tokens":568,"severity_before":"critical"},"analyst_status":"done","analyst_note":"Confirm whether ICO decoding is enabled by default and check the maintainer's advisory for the exact affected configuration.","search":"'-123614':13A,16A '-2026':12A,15A '4.0.0':28B,59C '4.0.16':30B,61C 'achiev':109C 'alloc':98C 'allow':71C 'attack':73C,86C 'buffer':48B,78C 'code':56B,110C 'contain':62C 'corrupt':9A,101C 'craft':41B,82C,90C 'crash':50B,105C 'cve':11A,14A 'data':83C,94C 'execut':111C 'heap':47B,77C,102C 'host':25B 'ico':2A,37B,42B,68C,91C 'imag':8A,19B,38B,43B,92C 'image-process':18B 'imgproxi':1A,21B,26B,57C 'imgproxy':17A 'integ':4A,33B,64C 'let':6A 'loader':3A,39B,69C 'make':45B 'memori':10A,103C 'overflow':5A,34B,49B,65C,79C 'packag':22B 'potenti':54B 'process':20B,52B,107C 'remot':7A,72C 'run':55B 'self':24B 'self-host':23B 'size':84C,95C 'submit':88C 'trigger':75C 'valu':85C 'version':27B 'via':80C 'vips/icoload.c':100C 'whose':93C 'wrap':96C","nicknames":[],"mitigations":[],"who_affected":"Any imgproxy instance running 4.0.0 through 4.0.15 that processes images from sources an attacker can influence, such as user-supplied URLs or uploads in a bucket. The ICO loader is chosen from the file's content, and the docs list ICO as a supported source format. Instances on 4.0.16 or later, and those only fetching trusted images, can skip it or treat it as lower risk.","tier":"B","verified":{"fix":{"at":"2026-11-08T02:23:45Z","by":"analyst","doc":"https://github.com/imgproxy/imgproxy/releases/tag/v4.0.16","run_id":2158},"products":{"at":"2026-11-08T02:23:45Z","by":"analyst","doc":"https://github.com/imgproxy/imgproxy/releases/tag/v4.0.16","run_id":2158},"who_affected":{"at":"2026-11-08T02:23:45Z","by":"analyst","doc":"https://github.com/imgproxy/imgproxy/releases/tag/v4.0.16","run_id":2158}},"analyst_revisit_at":null,"fix_status":"available","audience":"businesses","plain_action":null,"pkeys":["imgproxy"],"ptokens":["imgproxy"],"labels":["critical","imageprocessing","imgproxy","package","selfhosted"],"campaign_type":null,"search_a":"'-123614':13A,16A '-2026':12A,15A 'corrupt':9A 'cve':11A,14A 'ico':2A 'imag':8A 'imgproxi':1A 'imgproxy':17A 'integ':4A 'let':6A 'loader':3A 'memori':10A 'overflow':5A 'remot':7A","search_b":"'4.0.0':28B '4.0.16':30B 'buffer':48B 'code':56B 'craft':41B 'crash':50B 'heap':47B 'host':25B 'ico':37B,42B 'imag':19B,38B,43B 'image-process':18B 'imgproxi':21B,26B 'integ':33B 'loader':39B 'make':45B 'overflow':34B,49B 'packag':22B 'potenti':54B 'process':20B,52B 'run':55B 'self':24B 'self-host':23B 'version':27B","search_c":"'4.0.0':59C '4.0.16':61C 'achiev':109C 'alloc':98C 'allow':71C 'attack':73C,86C 'buffer':78C 'code':110C 'contain':62C 'corrupt':101C 'craft':82C,90C 'crash':105C 'data':83C,94C 'execut':111C 'heap':77C,102C 'ico':68C,91C 'imag':92C 'imgproxi':57C 'integ':64C 'loader':69C 'memori':103C 'overflow':65C,79C 'process':107C 'remot':72C 'size':84C,95C 'submit':88C 'trigger':75C 'valu':85C 'via':80C 'vips/icoload.c':100C 'whose':93C 'wrap':96C","first_public_at":"2026-10-06T15:30:41+00:00","kev":null,"cvss_vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/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-123614","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-123614","severity":null,"published_at":"2026-11-08T02:16:56+00:00","modified_at":"2026-11-08T02:16:56+00:00","first_seen_at":"2026-11-08T02:21:14+00:00","fetched_at":"2026-11-08T02:21:14+00:00","note":null},{"source":"analyst","external_id":"CVE-2026-123614:2158","url":"https://docs.imgproxy.net/image_formats_support","severity":null,"published_at":"2026-11-08T02:23:45+00:00","modified_at":"2026-11-08T02:23:45+00:00","first_seen_at":"2026-11-08T02:23:45+00:00","fetched_at":"2026-11-08T02:23:45+00:00","note":"Read maintainer GHSA-hff9-5pqw-6w9f: affected >=4.0.0 <=4.0.15, patched 4.0.16 (release notes linked). ICO is a supported source format in the docs; no setting to disable it found, so ICO decoding appears on by default (docs list it, advisory silent). No exploitation or PoC seen. Changelog shows later ICO/BMP loader fixes in 4.0.17 and 4.0.21, so advise latest 4.0.x. Not marking mitigations; none stated.","cites":["https://docs.imgproxy.net/image_formats_support"]}],"documents":[{"id":26678,"url":"https://github.com/imgproxy/imgproxy/security/advisories/GHSA-hff9-5pqw-6w9f","title":"Maintainer's advisory: github.com","kind":"vendor","source":"ghsa","publisher":"vendor","text":null,"published_at":"2026-10-06T15:30:41+00:00","relation":"advisory","confidence":null,"note":"Vendor advisory: github.com"},{"id":99381,"url":"https://www.vulncheck.com/advisories/imgproxy-4.0.0-before-4.0.16-heap-buffer-overflow-via-ico-loader-integer-overflow","title":"Third-party advisory: www.vulncheck.com","kind":"advisory","source":"nvd","publisher":"research","text":null,"published_at":null,"relation":"advisory","confidence":null,"note":"Third-party advisory: www.vulncheck.com"},{"id":26521,"url":"https://github.com/imgproxy/imgproxy/releases/tag/v4.0.16","title":"imgproxy v4.0.16","kind":"release","source":"ghsa","publisher":"vendor","text":null,"published_at":null,"relation":"fix","confidence":null,"note":null},{"id":99392,"url":"https://docs.imgproxy.net/image_formats_support","title":"imgproxy image formats support","kind":"vendor","source":"analyst","publisher":null,"text":null,"published_at":null,"relation":"describes","confidence":null,"note":null}],"exploit_sources":[],"notice":"Free to read, with fair use of about 60 pages a minute. For higher limits or API access: sales@infrastack.ai"}