<?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>Exifreader (&lt;= 4.41.0) - CraftedSignal Threat Feed</title><link>https://feed.craftedsignal.io/products/exifreader--4.41.0/</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>Thu, 17 Sep 2026 19:14:14 +0000</lastBuildDate><atom:link href="https://feed.craftedsignal.io/products/exifreader--4.41.0/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>ExifReader Denial of Service via Crafted HEIC/AVIF Files</title><link>https://feed.craftedsignal.io/briefs/2026-09-exifreader-dos/</link><pubDate>Thu, 17 Sep 2026 19:14:14 +0000</pubDate><author>hello@craftedsignal.io</author><guid isPermaLink="true">https://feed.craftedsignal.io/briefs/2026-09-exifreader-dos/</guid><description>ExifReader version 4.41.0 is susceptible to a heap exhaustion denial-of-service vulnerability due to an unbounded object allocation loop when parsing malicious ISO-BMFF iloc box structures.</description><content:encoded><![CDATA[<p>ExifReader 4.41.0 contains a vulnerability in its ISO-BMFF container parsing logic that can be leveraged to cause a denial-of-service (DoS) condition. The vulnerability resides within the <code>getItems()</code> function of <code>src/image-header-iso-bmff-iloc.js</code>. Specifically, when parsing the <code>iloc</code> (Item Location) box of HEIC or AVIF image files, the library reads configuration fields (<code>offsetSize</code>, <code>lengthSize</code>, <code>baseOffsetSize</code>, and <code>indexSize</code>) which control how the parser iterates through data extents.</p>
<p>When an attacker provides a crafted file where these size fields are set to zero, the library's extent-parsing loop fails to advance the buffer offset while simultaneously pushing new objects onto the <code>item.extents</code> array for every iteration defined by the <code>itemCount</code> and <code>extentCount</code> headers. This leads to unbounded memory consumption. A malicious file as small as 652 bytes can trigger 400MB of heap growth, while files in the kilobyte range result in an out-of-memory (OOM) crash, effectively terminating the Node.js process. This poses a significant risk to any service or application utilizing this library for processing user-provided imagery.</p>
<h2 id="attack-chain">Attack Chain</h2>
<ol>
<li>Attacker crafts a malicious HEIC/AVIF file container following the ISO-BMFF specification.</li>
<li>The <code>iloc</code> box is populated with an <code>itemCount</code> and <code>extentCount</code> set to the maximum allowed values (up to 65535 each).</li>
<li>The <code>offsetSize</code>, <code>lengthSize</code>, and <code>baseOffsetSize</code> fields in the <code>iloc</code> header are set to zero, signaling that these values are absent in the byte stream.</li>
<li>The victim application receives the malicious image and passes the buffer to <code>ExifReader.load()</code>.</li>
<li>The library's <code>getItems()</code> function initiates a nested loop, iterating based on the attacker-controlled <code>itemCount</code> and <code>extentCount</code>.</li>
<li>Within the loop, the parser performs unconditional object allocations for each extent without advancing the buffer offset.</li>
<li>The heap usage of the Node.js process expands rapidly until it reaches the memory limit defined by the environment.</li>
<li>The process crashes with a JavaScript heap out-of-memory error, resulting in a successful denial-of-service against the host application.</li>
</ol>
<h2 id="impact">Impact</h2>
<p>Successful exploitation results in an immediate denial-of-service for the application process. This vulnerability affects any service (such as web servers, backend media processors, or mobile app backends) that accepts and processes HEIC or AVIF images using ExifReader 4.41.0. Given that a crash-inducing payload is less than 2KB, this is highly effective against internet-facing services, potentially causing significant downtime or resource contention across shared infrastructure.</p>
<h2 id="recommendation">Recommendation</h2>
<ol>
<li>Upgrade to a patched version of ExifReader once available.</li>
<li>Implement a per-item or global extent allocation limit in <code>src/image-header-iso-bmff-iloc.js</code> to bound the memory growth.</li>
<li>Apply an input validation gate to skip the extent parsing loop if <code>offsetSize</code>, <code>lengthSize</code>, and <code>baseOffsetSize</code> are all zero, as per the suggested fix in the advisory.</li>
<li>Implement memory resource monitoring and limits for Node.js worker processes that handle image parsing to mitigate potential OOM crashes.</li>
</ol>
]]></content:encoded><category domain="severity">low</category><category domain="type">advisory</category><category>denial-of-service</category><category>vulnerability</category><category>memory-exhaustion</category></item></channel></rss>