<?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>Zephyr RTOS (&lt; Patched Version) - CraftedSignal Threat Feed</title><link>https://feed.craftedsignal.io/products/zephyr-rtos--patched-version/</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>Tue, 03 Nov 2026 16:01:06 +0000</lastBuildDate><atom:link href="https://feed.craftedsignal.io/products/zephyr-rtos--patched-version/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>Zephyr RTOS: Use-after-free in CAN subsystem (CVE-2026-85035)</title><link>https://feed.craftedsignal.io/briefs/2026-11-zephyr-can-uaf/</link><pubDate>Tue, 03 Nov 2026 16:01:06 +0000</pubDate><author>hello@craftedsignal.io</author><guid isPermaLink="true">https://feed.craftedsignal.io/briefs/2026-11-zephyr-can-uaf/</guid><description>A use-after-free vulnerability in the Zephyr RTOS CAN subsystem allows unprivileged user-mode threads to trigger kernel heap corruption via dangling pointers in the can_add_rx_filter_msgq() system call.</description><content:encoded><![CDATA[<p>CVE-2026-85035 is a use-after-free vulnerability in the Zephyr RTOS CAN subsystem. The system call <code>can_add_rx_filter_msgq()</code> fails to validate the lifetime of <code>struct k_msgq</code> objects passed as <code>user_data</code> for filter callbacks. When <code>CONFIG_USERSPACE</code> and <code>CONFIG_DYNAMIC_OBJECTS</code> are enabled, an unprivileged thread can register a dynamically allocated message queue, release the object while the kernel retains a pointer to it, and trigger heap corruption when a CAN frame is processed. This enables potential privilege escalation by overwriting kernel structures.</p>
<h2 id="attack-chain">Attack Chain</h2>
<ol>
<li>Attacker ensures <code>CONFIG_USERSPACE</code> and <code>CONFIG_DYNAMIC_OBJECTS</code> are active in the target Zephyr image.</li>
<li>Attacker obtains permission to interface with a CAN device.</li>
<li>Attacker allocates a message queue using <code>k_object_alloc(K_OBJ_MSGQ)</code> and <code>k_msgq_alloc_init()</code>.</li>
<li>Attacker registers the queue via <code>can_add_rx_filter_msgq()</code>, which places a raw pointer to the queue in the kernel filter table.</li>
<li>Attacker calls <code>k_object_release()</code> or terminates, causing the kernel to free the queue memory while the filter remains active.</li>
<li>Attacker grooms the kernel heap to place controlled data in the memory previously occupied by the queue.</li>
<li>A CAN frame matching the filter is received, triggering <code>can_msgq_put()</code> in supervisor context against the now-controlled memory, leading to heap corruption.</li>
</ol>
<h2 id="recommendation">Recommendation</h2>
<ul>
<li>Apply the official Zephyr Project patch that enforces <code>K_SYSCALL_OBJ_STATIC()</code> validation for <code>can_add_rx_filter_msgq()</code>.</li>
<li>For firmware developers, ensure that dynamically allocated message queues are not used in conjunction with CAN RX filters in user-mode contexts.</li>
</ul>
]]></content:encoded><category domain="severity">high</category><category domain="type">advisory</category><category>kernel-vulnerability</category><category>use-after-free</category><category>zephyr</category></item></channel></rss>