<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:webfeeds="http://webfeeds.org/rss/1.0"><channel><title>Imgproxy - CraftedSignal Threat Feed</title><link>https://feed.craftedsignal.io/vendors/imgproxy/</link><description>Trending threats, MITRE ATT&amp;CK coverage, and detection metadata. Fed continuously.</description><generator>Hugo</generator><language>en</language><managingEditor>hello@craftedsignal.io</managingEditor><webMaster>hello@craftedsignal.io</webMaster><lastBuildDate>Sun, 01 Nov 2026 02:45:30 +0000</lastBuildDate><atom:link href="https://feed.craftedsignal.io/vendors/imgproxy/feed.xml" rel="self" type="application/rss+xml"/><image><url>https://feed.craftedsignal.io/favicon-32x32.png</url><title>CraftedSignal Threat Feed</title><link>https://feed.craftedsignal.io/</link><width>32</width><height>32</height></image><webfeeds:icon>https://feed.craftedsignal.io/favicon.svg</webfeeds:icon><item><title>imgproxy: Out-of-bounds heap write in ICO loader</title><link>https://feed.craftedsignal.io/briefs/2026-11-imgproxy-ico-crash/</link><pubDate>Sun, 01 Nov 2026 02:45:30 +0000</pubDate><author>hello@craftedsignal.io</author><guid isPermaLink="true">https://feed.craftedsignal.io/briefs/2026-11-imgproxy-ico-crash/</guid><description>An out-of-bounds heap write vulnerability in the imgproxy ICO loader allows unauthenticated attackers to trigger a deterministic worker crash (DoS) by supplying a crafted image file.</description><content:encoded><![CDATA[<p>imgproxy versions 3.3.0 through 4.0.15 contain an out-of-bounds heap write vulnerability in the ICO loader (<code>vips/icoload.c</code>). When processing an ICO file with a small declared image data size, the loader performs OOB reads and writes while reconstructing the BMP header. This causes memory corruption in the heap, specifically overwriting the size field of adjacent heap chunks. This corruption leads to a glibc <code>munmap_chunk()</code> error, causing the Go worker to abort (SIGABRT) and exit (exit code 2).</p>
<h2 id="attack-chain">Attack Chain</h2>
<ol>
<li>Attacker crafts a malicious ICO file containing a small <code>data_size</code> and specific header parameters.</li>
<li>Attacker sends an HTTP request to an exposed imgproxy endpoint to process the malicious ICO.</li>
<li>imgproxy passes the request to the underlying <code>vips</code> library.</li>
<li>The <code>vips_foreign_load_ico_header</code> function allocates a small heap buffer based on the malicious <code>data_size</code>.</li>
<li>The loader performs OOB reads from the malformed header and performs OOB writes during BMP reconstruction.</li>
<li>The size field of the following heap chunk is corrupted during the OOB write.</li>
<li>The application invokes <code>free()</code> on the corrupted chunk.</li>
<li>The glibc allocator detects the corruption and triggers <code>munmap_chunk(): invalid pointer</code>, leading to worker termination.</li>
</ol>
<h2 id="impact">Impact</h2>
<p>Successful exploitation results in a persistent denial of service (DoS) for the specific worker process. Since a single request can trigger the abort, an attacker can crash workers at a rate proportional to the volume of requests sent to the vulnerable endpoint.</p>
<h2 id="recommendation">Recommendation</h2>
<ol>
<li>Upgrade to imgproxy version 4.0.17 or later to incorporate the patch for the ICO loader heap memory corruption.</li>
<li>Implement request size limits and file validation filters to block unknown or suspicious ICO files before they reach the processing layer.</li>
<li>Deploy monitoring for worker process exit codes; alert on high frequencies of exit code 2 in imgproxy worker pods.</li>
</ol>
]]></content:encoded><category domain="severity">high</category><category domain="type">advisory</category><category>denial-of-service</category><category>heap-overflow</category><category>memory-corruption</category></item></channel></rss>