CVE-2026-10677: dos in zephyrproject zephyr
The CONFIG_USERSPACE syscall verifier z_vrfy_k_poll() in kernel/poll.c allocates a kernel-side copy of the user-supplied k_poll_event[] via z_thread_malloc() and then validates each event's object handle. Before this fix, validation used K_OOPS(K_SYSCALL_OBJ(...)) inline inside the loop, which kills the calling thread without freeing events_copy. A user thread can pass num_events >= 1 with a forged object handle to leak the allocation; because newly spawned user threads inherit the parent's resource_pool (kernel/thread.c), an attacker spawns sacrificial threads to repeat the leak until the shared kernel heap is exhausted. Once depleted, legitimate kernel allocations from that pool (k_queue alloc nodes, k_msgq buffers, future k_poll calls, etc.) fail, causing a system-level denial of service. The fix replaces each inline K_OOPS with a conditional goto oops_free so the buffer is freed before the thread is killed. Affects Zephyr releases from v1.12.0 (when k_poll was first exposed to user mode) through v4.4.1.
AI Analysis
Technical Summary
The vulnerability exists in the CONFIG_USERSPACE syscall verifier function z_vrfy_k_poll() in kernel/poll.c of Zephyr. It allocates a kernel-side copy of the user-supplied k_poll_event array using z_thread_malloc(), then validates each event's object handle. Prior to the fix, if an invalid handle was detected, the code would kill the calling thread without freeing the allocated buffer, causing a memory leak. Because user threads inherit the parent's resource pool, an attacker can spawn multiple threads to repeatedly leak memory until the kernel heap is exhausted. This leads to failure of legitimate kernel allocations and a system-level denial of service. The fix replaces the inline K_OOPS calls with a conditional goto that frees the buffer before killing the thread. The vulnerability affects Zephyr releases from v1.12.0 through v4.4.1.
Potential Impact
Exploitation results in a denial of service due to kernel heap exhaustion. Legitimate kernel allocations such as k_queue allocation nodes, k_msgq buffers, and future k_poll calls fail once the heap is depleted. There is no impact on confidentiality or integrity. The CVSS 3.1 base score is 6.5 (medium severity), reflecting local attack vector, low complexity, low privileges required, no user interaction, scope changed, no confidentiality or integrity impact, and high availability impact.
Mitigation Recommendations
Patch status is not yet confirmed — check the vendor advisory for current remediation guidance. The described fix replaces inline K_OOPS calls with a conditional free before thread termination to prevent memory leaks. Until an official fix is available, consider restricting untrusted user threads from invoking k_poll syscalls or limit the number of spawned threads to mitigate heap exhaustion. Monitor vendor communications for an official patch or update.
CVE-2026-10677: dos in zephyrproject zephyr
Description
The CONFIG_USERSPACE syscall verifier z_vrfy_k_poll() in kernel/poll.c allocates a kernel-side copy of the user-supplied k_poll_event[] via z_thread_malloc() and then validates each event's object handle. Before this fix, validation used K_OOPS(K_SYSCALL_OBJ(...)) inline inside the loop, which kills the calling thread without freeing events_copy. A user thread can pass num_events >= 1 with a forged object handle to leak the allocation; because newly spawned user threads inherit the parent's resource_pool (kernel/thread.c), an attacker spawns sacrificial threads to repeat the leak until the shared kernel heap is exhausted. Once depleted, legitimate kernel allocations from that pool (k_queue alloc nodes, k_msgq buffers, future k_poll calls, etc.) fail, causing a system-level denial of service. The fix replaces each inline K_OOPS with a conditional goto oops_free so the buffer is freed before the thread is killed. Affects Zephyr releases from v1.12.0 (when k_poll was first exposed to user mode) through v4.4.1.
CVSS v3.1
Score 6.5medium
Affected software
Run on your own infrastructure? Check whether these packages are installed with threat-finder — our free open-source scanner.
AI-Powered Analysis
Machine-generated threat intelligence
Technical Analysis
The vulnerability exists in the CONFIG_USERSPACE syscall verifier function z_vrfy_k_poll() in kernel/poll.c of Zephyr. It allocates a kernel-side copy of the user-supplied k_poll_event array using z_thread_malloc(), then validates each event's object handle. Prior to the fix, if an invalid handle was detected, the code would kill the calling thread without freeing the allocated buffer, causing a memory leak. Because user threads inherit the parent's resource pool, an attacker can spawn multiple threads to repeatedly leak memory until the kernel heap is exhausted. This leads to failure of legitimate kernel allocations and a system-level denial of service. The fix replaces the inline K_OOPS calls with a conditional goto that frees the buffer before killing the thread. The vulnerability affects Zephyr releases from v1.12.0 through v4.4.1.
Potential Impact
Exploitation results in a denial of service due to kernel heap exhaustion. Legitimate kernel allocations such as k_queue allocation nodes, k_msgq buffers, and future k_poll calls fail once the heap is depleted. There is no impact on confidentiality or integrity. The CVSS 3.1 base score is 6.5 (medium severity), reflecting local attack vector, low complexity, low privileges required, no user interaction, scope changed, no confidentiality or integrity impact, and high availability impact.
Mitigation Recommendations
Patch status is not yet confirmed — check the vendor advisory for current remediation guidance. The described fix replaces inline K_OOPS calls with a conditional free before thread termination to prevent memory leaks. Until an official fix is available, consider restricting untrusted user threads from invoking k_poll syscalls or limit the number of spawned threads to mitigate heap exhaustion. Monitor vendor communications for an official patch or update.
Technical Details
- Data Version
- 5.2
- Assigner Short Name
- zephyr
- Date Reserved
- 2026-06-02T15:26:07.313Z
- Cvss Version
- 3.1
- State
- PUBLISHED
- Remediation Level
- null
Threat ID: 6a5fe6ba9c2644c7f8cb00c5
Added to database: 07/21/2026, 21:38:02 UTC
Last enriched: 07/22/2026, 10:08:41 UTC
Last updated: 07/31/2026, 19:22:57 UTC
Views: 7
Community Reviews
0 reviewsCrowdsource mitigation strategies, share intel context, and vote on the most helpful responses. Sign in to add your voice and help keep defenders ahead.
Want to contribute mitigation steps or threat intel context? Sign in or create an account to join the community discussion.
Actions
Updates to AI analysis require Pro Console access. Upgrade inside Console → Billing.
Need more coverage?
Upgrade to Pro Console for AI refresh and higher limits.
For incident response and remediation, OffSeq services can help resolve threats faster.
Latest Threats
Check if your credentials are on the dark web
Instant breach scanning across billions of leaked records. Free tier available.