<?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>Toyota — CraftedSignal Threat Feed</title><link>https://feed.craftedsignal.io/vendors/toyota/</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>Fri, 01 Nov 2024 12:00:00 +0000</lastBuildDate><atom:link href="https://feed.craftedsignal.io/vendors/toyota/feed.xml" rel="self" type="application/rss+xml"/><item><title>go-zserio Unbounded Memory Allocation Vulnerability</title><link>https://feed.craftedsignal.io/briefs/2024-11-01-go-zserio-memory-allocation/</link><pubDate>Fri, 01 Nov 2024 12:00:00 +0000</pubDate><author>hello@craftedsignal.io</author><guid isPermaLink="true">https://feed.craftedsignal.io/briefs/2024-11-01-go-zserio-memory-allocation/</guid><description>go-zserio versions prior to 0.9.1 are vulnerable to unbounded memory allocation when deserializing data, potentially leading to denial of service.</description><content:encoded><![CDATA[<p>A critical vulnerability exists in the go-zserio library, a tool used for serializing data structures, specifically in versions prior to 0.9.1. The vulnerability stems from how the library handles deserialization of arrays, strings, and byte arrays (blobs). When processing these data types, go-zserio reads a size value directly from the input data stream and uses this value to allocate memory. Because the library trusts the provided size without proper validation, a malicious actor can craft a data file containing an extremely large size value. This causes the go-zserio runtime to allocate an excessive amount of memory, potentially exhausting system resources and resulting in a denial-of-service (DoS) condition. The vulnerable library could be integrated into any application that parses untrusted data using go-zserio.</p>
<h2 id="attack-chain">Attack Chain</h2>
<ol>
<li>Attacker crafts a malicious zserio data file containing an excessively large size value for an array, string, or blob field.</li>
<li>The attacker delivers the malicious data file to a vulnerable application that uses go-zserio for data deserialization. This could be achieved through various means, such as uploading the file to a server, sending it as an attachment, or including it in a network packet.</li>
<li>The vulnerable application receives the malicious data file and attempts to deserialize it using the go-zserio library.</li>
<li>The go-zserio library reads the large size value from the malicious data file.</li>
<li>Based on this untrusted size value, the go-zserio library attempts to allocate a large amount of memory to store the incoming data.</li>
<li>The memory allocation request consumes significant system resources, potentially exhausting available memory.</li>
<li>The system may become unresponsive or crash due to memory exhaustion.</li>
<li>The application experiences a denial-of-service condition, becoming unavailable to legitimate users.</li>
</ol>
<h2 id="impact">Impact</h2>
<p>Successful exploitation of this vulnerability can lead to a denial-of-service condition. The affected application becomes unavailable, impacting business operations and potentially causing data loss or corruption. The severity of the impact depends on the role and importance of the application within the organization&rsquo;s infrastructure. It is not known how many organizations are affected by this vulnerability.</p>
<h2 id="recommendation">Recommendation</h2>
<ul>
<li>Upgrade to go-zserio version 0.9.1 or later to patch the vulnerability.</li>
<li>Implement input validation to check the size of arrays, strings, and blobs before deserialization, preventing excessive memory allocation.</li>
<li>Deploy the Sigma rule <code>Detect Suspicious Large Memory Allocation</code> to identify processes allocating unusually large amounts of memory, which may indicate exploitation attempts.</li>
<li>Monitor applications that use go-zserio for excessive memory consumption using system monitoring tools.</li>
</ul>
]]></content:encoded><category domain="severity">medium</category><category domain="type">advisory</category><category>memory-allocation</category><category>denial-of-service</category><category>go-zserio</category></item><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>