<?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/"><channel><title>Avro/V2 — CraftedSignal Threat Feed</title><link>https://feed.craftedsignal.io/products/avro/v2/</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>Mon, 18 May 2026 13:02:19 +0000</lastBuildDate><atom:link href="https://feed.craftedsignal.io/products/avro/v2/feed.xml" rel="self" type="application/rss+xml"/><item><title>Avro Map Decoder Vulnerable to Denial-of-Service via Unbounded Memory Allocation</title><link>https://feed.craftedsignal.io/briefs/2026-05-avro-map-dos/</link><pubDate>Mon, 18 May 2026 13:02:19 +0000</pubDate><author>hello@craftedsignal.io</author><guid isPermaLink="true">https://feed.craftedsignal.io/briefs/2026-05-avro-map-dos/</guid><description>The Avro map decoder accepted attacker-controlled block-element counts, leading to unbounded map growth and potential denial-of-service via memory exhaustion; upgrading to v2.33.0 requires explicit configuration of MaxMapAllocSize to mitigate the vulnerability.</description><content:encoded><![CDATA[<p>The Avro map decoder in <code>iskorotkov/avro/v2</code> prior to version 2.33.0 is vulnerable to a denial-of-service attack due to unbounded memory allocation. The decoder processes attacker-controlled block-element counts from the wire format without enforcing an upper bound on the map size. This allows a malicious producer to declare an arbitrarily large map, either in a single block or chunked across multiple blocks, leading to excessive memory consumption and potentially crashing the application due to out-of-memory errors. The vulnerability exists because the map decoder lacked the <code>Config.MaxMapAllocSize</code> limit that was present in the slice decoder to prevent similar attacks against arrays. To mitigate this, version 2.33.0 introduces <code>Config.MaxMapAllocSize</code>, but it&rsquo;s opt-in, requiring explicit configuration to activate the limit.</p>
<h2 id="attack-chain">Attack Chain</h2>
<ol>
<li>Attacker crafts a malicious Avro payload with an extremely large map size declaration.</li>
<li>The payload is sent to a vulnerable Avro decoder instance.</li>
<li>The decoder reads the initial block header, which specifies a large element count.</li>
<li>Without <code>MaxMapAllocSize</code> configured, the decoder attempts to allocate memory for the map based on the attacker-controlled size.</li>
<li>If the initial block isn&rsquo;t large enough to exhaust memory, the attacker splits the large map into smaller blocks, each declaring element counts below a per-block threshold.</li>
<li>The decoder reads subsequent block headers and continues allocating memory, growing the map incrementally.</li>
<li>The cumulative memory allocation exceeds available resources.</li>
<li>The application crashes due to an out-of-memory (OOM) error, resulting in a denial-of-service.</li>
</ol>
<h2 id="impact">Impact</h2>
<p>Successful exploitation of this vulnerability can lead to a denial-of-service condition. The affected service becomes unavailable, impacting all users. The severity depends on the resources allocated to the affected service and the size of the map specified in the malicious payload. If not properly configured, applications using affected versions of the Avro decoder are susceptible to memory exhaustion, potentially leading to service outages.</p>
<h2 id="recommendation">Recommendation</h2>
<ul>
<li>Upgrade to <code>github.com/iskorotkov/avro/v2</code> version 2.33.0 or later and explicitly set a non-zero value for <code>Config.MaxMapAllocSize</code> based on your schema&rsquo;s requirements as described in the mitigation section.</li>
<li>If using <code>github.com/hamba/avro/v2</code>, migrate to <code>github.com/iskorotkov/avro/v2 &gt;= v2.33.0</code> and configure <code>MaxMapAllocSize</code> due to the archived nature of the original module.</li>
<li>Deploy the Sigma rule &ldquo;Detect Avro Decoder Unbounded Map Allocation Attempt&rdquo; to monitor for unusually large map allocation attempts in Avro decoding processes.</li>
<li>Implement resource constraints, such as memory limits within child processes or cgroups, to contain potential OOM errors if immediate upgrades are not feasible.</li>
<li>Reject inputs from untrusted sources lacking resource controls to prevent potential exploitation attempts.</li>
</ul>
]]></content:encoded><category domain="severity">medium</category><category domain="type">advisory</category><category>denial-of-service</category><category>memory-exhaustion</category><category>avro</category><category>data-serialization</category></item></channel></rss>