<?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>Nds — CraftedSignal Threat Feed</title><link>https://feed.craftedsignal.io/tags/nds/</link><description>Trending threats, MITRE ATT&amp;CK coverage, and detection metadata — refreshed continuously.</description><generator>Hugo</generator><language>en</language><managingEditor>hello@craftedsignal.io</managingEditor><webMaster>hello@craftedsignal.io</webMaster><lastBuildDate>Thu, 02 May 2024 12:00:00 +0000</lastBuildDate><atom:link href="https://feed.craftedsignal.io/tags/nds/feed.xml" rel="self" type="application/rss+xml"/><item><title>Zserio Runtime Unbounded Memory Allocation Vulnerability</title><link>https://feed.craftedsignal.io/briefs/2024-05-zserio-oom/</link><pubDate>Thu, 02 May 2024 12:00:00 +0000</pubDate><author>hello@craftedsignal.io</author><guid isPermaLink="true">https://feed.craftedsignal.io/briefs/2024-05-zserio-oom/</guid><description>A crafted payload can force memory allocations of up to 16 GB, leading to a denial-of-service condition in applications using the Zserio serialization framework, including those within the automotive Navigation Data Standard (NDS).</description><content:encoded><![CDATA[<p>A critical vulnerability exists within the Zserio runtime library, a serialization framework used in various applications, including the Navigation Data Standard (NDS) for automotive systems. This flaw allows a malicious actor to trigger an unbounded memory allocation by providing a specially crafted input. A payload as small as 4-5 bytes can cause memory allocations of up to 16 GB, resulting in a denial-of-service (DoS) condition due to an out-of-memory (OOM) error. This issue affects Zserio versions 2.18.0 and earlier. The vulnerability stems from insufficient validation of the declared size of data structures during deserialization, leading to excessive memory reservation. Exploitation could disrupt critical systems relying on Zserio, particularly within the automotive sector where NDS is widely deployed.</p>
<h2 id="attack-chain">Attack Chain</h2>
<ol>
<li>An attacker crafts a malicious NDS data payload.</li>
<li>The payload includes a &ldquo;varsize&rdquo; field claiming an extremely large size (e.g., 2,147,483,647 bytes).</li>
<li>The vulnerable Zserio runtime attempts to deserialize the payload.</li>
<li>The <code>Array.h</code> or <code>Array.java</code> code calls <code>reserve()</code> or <code>reset()</code> with the attacker-controlled size.</li>
<li>The system attempts to allocate a large block of memory (up to 16 GB), based on the attacker-specified size.</li>
<li>Memory allocation fails, or consumes excessive resources.</li>
<li>The application crashes due to an out-of-memory (OOM) error.</li>
<li>The denial-of-service condition prevents the application from functioning correctly.</li>
</ol>
<h2 id="impact">Impact</h2>
<p>The vulnerability affects applications utilizing the Zserio serialization framework, including the Navigation Data Standard (NDS) used by 43 member companies, including Toyota, BMW, Volkswagen, and Mercedes-Benz. Successful exploitation can lead to a denial-of-service (DoS) condition, potentially impacting millions of cars on the road that rely on NDS for map updates and navigation data. Attack vectors include NDS.Live cloud map updates, map data supply chain compromise, and backend data processing pipelines. On 32-bit automotive ECUs, this could affect ADAS functionality. A 4-byte payload can trigger the allocation of 762MB of memory, and a 5-byte payload triggers an allocation of 16GB, leading to a system crash.</p>
<h2 id="recommendation">Recommendation</h2>
<ul>
<li>Apply the patch available in Zserio version 2.18.1 to remediate the vulnerability (<a href="https://github.com/ndsev/zserio/releases/tag/v2.18.1">https://github.com/ndsev/zserio/releases/tag/v2.18.1</a>).</li>
<li>Implement input validation to ensure that the declared size of data structures during deserialization does not exceed the remaining size of the input stream, as suggested in the advisory.</li>
<li>Deploy the Sigma rule <code>Detect Zserio Large Memory Allocation</code> to identify potential exploitation attempts in environments where Zserio is used.</li>
</ul>
]]></content:encoded><category domain="severity">medium</category><category domain="type">advisory</category><category>zserio</category><category>denial-of-service</category><category>memory-allocation</category><category>nds</category></item></channel></rss>