Goal Reached Thanks to every supporter — we hit 100%!

Goal: 1000 CNY · Raised: 1359 CNY

100%

CVE-2026-90586— Xtensa MMU userspace: uninitialized thread page-table pointer leads to out-of-bounds supervisor-mode writes

Quick assessment

Affected
zephyrproject zephyr
Exploitation
No confirmed in-the-wild exploitation; assess based on exposure
Recommended action
Check the vendor advisory and references for a fixed version. If immediate upgrade is impossible, restrict exposure and increase monitoring.

Xtensa MMU 用户空间移植版本在创建线程时,从未初始化每线程页表指针 。然而, 中的 函数将该字段非空作为判断“该线程正从另一个内存域迁移”的条件。对于其 支撑内存未被清零的线程,该字段会残留旧数据,导致内核错误地进入迁移分支,并将该残留值作为一级页表的基地址传递给 。出于完全相同的原因,x86 架构的对应字段已在 中显式清零;而 Xtensa 移植版本在采纳该判断条件时,却遗漏了相应的初始化步骤。 该漏洞在启用 、 且支持动态分配内核对象的构建配置下,可由非特权用户模式线程触发。 是一个系统调用,它从调用

CVSS 7.8 · High
Get alerts for future matching vulnerabilities Log in to subscribe

I. Basic Information for CVE-2026-90586

Vulnerability Information

Have questions about the vulnerability? See if Shenlong's analysis helps!
View Shenlong Deep Dive ↗

Although we use advanced large model technology, its output may still contain inaccurate or outdated information.Shenlong tries to ensure data accuracy, but please verify and judge based on the actual situation.

Vulnerability Title
Xtensa MMU userspace: uninitialized thread page-table pointer leads to out-of-bounds supervisor-mode writes
Source: CVE Program / CVE List V5
Vulnerability Description
The Xtensa MMU userspace port never initialized the per-thread page-table pointer thread->arch.ptables during thread setup, while arch_mem_domain_thread_add() in arch/xtensa/core/ptables.c uses a non-NULL value of that field as its "this thread is migrating from another memory domain" predicate. For a thread whose struct k_thread backing memory is not zeroed, the field holds stale data and the kernel takes the migration branch, passing that stale value to reset_region() as the base of a level-1 page table. The equivalent field on x86 is explicitly cleared in z_x86_userspace_prepare_thread() for exactly this reason; the Xtensa port adopted the predicate without the initialization. The condition is reachable from an unprivileged user-mode thread on a build with CONFIG_XTENSA_MMU, CONFIG_USERSPACE and dynamically allocated kernel objects. k_object_alloc(K_OBJ_THREAD) is a system call and allocates the thread object from the caller's resource pool without zeroing it, and the k_thread_create() verifier accepts such an object while forcing the K_USER option, so the migration branch is taken whenever the recycled heap bytes at that offset are non-zero. Because a user thread can also allocate, fill and free other kernel objects from the same heap, the stale bytes are groomable rather than merely random. Walking the bogus table in region_map_update() performs an unguarded index into l2_page_tables_counter[], may copy from and write through the attacker-influenceable level-1 base in dup_l2_table_if_needed(), and finally writes a page-table entry through a second pointer read out of that memory — once per page of the new thread's stack. The result is out-of-bounds reads and writes executed in supervisor mode, ranging from an immediate kernel panic (observed as Xtensa EXCAUSE 13 on Intel ADSP DSP firmware with user threads) to corruption of kernel memory and escape from the user-mode sandbox.
Source: CVE Program / CVE List V5
CVSS Information
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
Source: CVE Program / CVE List V5
Vulnerability Type
使用未经初始化的指针
Source: CVE Program / CVE List V5

Affected Products

Vendor Product Affected Versions CPE Subscribe
zephyrproject zephyr 3.6.0 ~ 4.3.2 -

II. Public POCs for CVE-2026-90586

# POC Description Source Link Shenlong Link
AI-Generated POC Premium

No public POC found.

Login to generate AI POC

III. Intelligence Information for CVE-2026-90586

请登录查看更多情报信息。

Other References for CVE-2026-90586 (2)

Same Patch Batch · zephyrproject · 2026-11-09 · 7 CVEs total

CVE-2026-90591 7.5 HIGH NXP ENET-QOS Ethernet driver re-arms RX descriptors with a clobbered DMA buffer address on
CVE-2026-90590 6.5 MEDIUM Permanent loss of transmit capability in the NXP ENET QoS Ethernet driver after an Etherne
CVE-2026-90589 5.5 MEDIUM Memory-mapped thread stack is never unmapped when a thread is aborted by another thread, e
CVE-2026-90587 4.6 MEDIUM NULL pointer dereference in the Zephyr USB host stack when a device reports zero configura
CVE-2026-90585 4.6 MEDIUM Renesas RA SCI UART driver: unacknowledged receive-error interrupt causes a permanent inte
CVE-2026-90588 3.7 LOW Out-of-bounds read in Zephyr HTTP client debug logging of response header fields

IV. Related Vulnerabilities