目标达成 感谢每一位支持者 — 我们达成了 100% 目标!

目标: 1000 元 · 已筹: 1359 元

100%

CVE-2026-90589— 线程栈内存映射未释放耗尽内核地址空间

一分钟漏洞结论

影响对象
zephyrproject zephyr
利用判断
尚无明确在野利用证据,仍需结合暴露面评估
建议动作
优先检查厂商安全公告和参考链接中的修复版本;无法立即升级时,限制受影响服务暴露并加强监测。

当启用 配置时,每个线程的栈都会被映射到内核虚拟地址空间中,并在其两侧各设置一个保护页;该映射会在中止清理过程中被释放。 中的 函数包含两条执行路径:一条是用于“自我中止”的延迟路径,它将映射信息暂存于 和 变量中;另一条是用于“被其他线程中止”的立即路径。该立即路径调用了 ,但此函数忽略了传入的线程参数,仅对暂存的地址执行取消映射操作——而该暂存值仅在自我中止路径中被填充。因此,被其他线程中止的线程,其已映射的栈区域从未被正确取消映射。 任何对非当前线程调用的 都会导致该线程的栈区域及其两侧的两个保护页从内核虚拟

CVSS 5.5 · Medium
获取后续新漏洞提醒 登录后订阅

一、 漏洞 CVE-2026-90589 基础信息

漏洞信息

对漏洞内容有疑问?看看神龙的深度分析是否有帮助!
查看神龙十问 ↗

尽管我们使用了先进的大模型技术,但其输出仍可能包含不准确或过时的信息。神龙努力确保数据的准确性,但请您根据实际情况进行核实和判断。

Vulnerability Title
Memory-mapped thread stack is never unmapped when a thread is aborted by another thread, exhausting kernel virtual address space
来源: CVE Program / CVE List V5
Vulnerability Description
When CONFIG_THREAD_STACK_MEM_MAPPED is enabled, each thread stack is mapped into the kernel virtual address space with a guard page on either side, and the mapping is released during abort cleanup. k_thread_abort_cleanup() in kernel/thread.c has two paths: a deferred one for self-abort, which stashes the mapping in thread_cleanup_stack_addr/thread_cleanup_stack_sz, and an immediate one for a thread aborted by some other thread. The immediate path called do_thread_cleanup(), which ignored its thread argument and only ever unmapped the stashed address — a value populated exclusively by the self-abort path. The mapped stack of a thread aborted by another thread was therefore never unmapped. Every k_thread_abort() of a non-current thread leaks the thread's stack region plus its two guard pages from the kernel virtual address space. Threads that end by returning from their entry function take the working self-abort path, so the leak is specific to explicit cancellation — k_thread_abort(), pthread_cancel(), osThreadTerminate(), or the kernel thread kill shell command. Both k_thread_create() and k_thread_abort() are system calls, so with CONFIG_USERSPACE an unprivileged user-mode thread that has been granted a thread object and a user-capable stack object can drive the leak from user mode, consuming a kernel-side resource it cannot otherwise touch. With CONFIG_KERNEL_VM_SIZE defaulting to 8 MB, a few hundred create/abort cycles exhaust the runtime mapping region. k_mem_map_phys_guard() then returns NULL, and map_thread_stack() guards that only with __ASSERT_NO_MSG(), which is compiled out of production builds; thread creation proceeds to write through a NULL-derived stack base and faults in kernel mode. The impact is a persistent denial of service — a kernel fatal error requiring a reboot — with no memory disclosure or corruption, and it is limited to configurations where memory-mapped thread stacks are enabled (x86 targets with X86_MMU and demand paging disabled, where the option is implied by default).
来源: CVE Program / CVE List V5
CVSS Information
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
来源: CVE Program / CVE List V5
Vulnerability Type
在移除最后引用时对内存的释放不恰当(内存泄露)
来源: CVE Program / CVE List V5

受影响产品

厂商 产品 影响版本 CPE 订阅
zephyrproject zephyr 3.7.0 ~ 4.3.2 -

二、漏洞 CVE-2026-90589 的公开POC

# POC 描述 源链接 神龙链接
AI 生成 POC 高级

未找到公开 POC。

登录以生成 AI POC

三、漏洞 CVE-2026-90589 的情报信息

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

CVE-2026-90589 其他参考 (2)

同批安全公告 · zephyrproject · 2026-11-09 · 共 7 条

CVE-2026-90586 7.8 HIGH Xtensa MMU 越界写漏洞
CVE-2026-90591 7.5 HIGH NXP ENET-QOS 驱动数据包丢弃时 DMA 地址被破坏
CVE-2026-90590 6.5 MEDIUM NXP ENET QoS 驱动链路断开后发送功能永久丢失
CVE-2026-90587 4.6 MEDIUM Zephyr USB 主机栈空指针解引用漏洞
CVE-2026-90585 4.6 MEDIUM Renesas RA SCI UART 驱动中断风暴导致 CPU 锁死漏洞
CVE-2026-90588 3.7 LOW Zephyr HTTP 客户端调试日志越界读取漏洞

IV. Related Vulnerabilities