IPBUF安全漏洞报告
English
CVE-2026-43285 CVSS 5.5 中危

CVE-2026-43285: Linux内核slab死锁漏洞

披露日期: 2026-05-08
来源: 416baaa9-dc9f-4396-8d5f-8c081fb06d67

漏洞信息

漏洞编号
CVE-2026-43285
漏洞类型
拒绝服务
CVSS评分
5.5 中危
攻击向量
本地 (AV:L)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Linux Kernel

相关标签

Linux Kernel拒绝服务DoSNMI内存管理死锁

漏洞概述

Linux内核mm/slab模块存在安全漏洞。当`get_from_any_partial()`在NMI上下文中被调用时,会访问`current->mems_allowed_seq`。由于该变量使用非NMI安全的自旋锁保护,这违反了seqlock的使用规范,导致Lockdep警告并可能引发死锁,进而造成系统拒绝服务。

技术细节

该漏洞源于Linux内核在NMI(不可屏蔽中断)上下文中对内存分配策略的处理不当。`get_from_any_partial()`函数在处理内存分配时会读取`current->mems_allowed_seq`以检查内存节点允许策略。然而,该序列计数器基于`seqcount_spinlock_t`实现,其写入操作依赖自旋锁进行串行化。在NMI上下文中,如果中断发生时CPU正持有该自旋锁,NMI处理函数再次尝试读取该序列号或触发相关锁逻辑将导致死锁,因为NMI具有最高优先级且无法被调度。Lockdep检测到了这种从`INITIAL USE`到`IN-NMI`的不一致锁状态。根据内核文档,此类场景不应使用NMI不安全的seqcount。修复方案是在NMI上下文中跳过对该序列号的访问,避免重试逻辑,从而消除死锁风险。

攻击链分析

STEP 1
触发NMI上下文
攻击者通过特定机制(如硬件性能计数器或perf事件)触发内核进入NMI(不可屏蔽中断)上下文。
STEP 2
执行内存分配
在NMI处理函数中,执行内存分配操作,导致内核调用`get_from_any_partial()`函数。
STEP 3
访问非安全锁
`get_from_any_partial()`尝试访问`current->mems_allowed_seq`,该变量使用`seqcount_spinlock_t`保护,不适合在NMI中访问。
STEP 4
引发死锁或警告
由于NMI不可抢占,如果此时涉及自旋锁操作,会导致死锁或触发Lockdep警告,使系统崩溃或挂起。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
/* * Conceptual Proof of Concept for CVE-2026-43285 * Triggering slab allocation in NMI context to reproduce the lockdep warning. */ #include <linux/module.h> #include <linux/kernel.h> #include <linux/perf_event.h> #include <linux/nmi.h> // Dummy NMI handler to simulate the condition static void trigger_nmi_alloc(struct perf_event *event, struct perf_sample_data *data, struct pt_regs *regs) { // This allocation may eventually call get_from_any_partial() // which accesses current->mems_allowed_seq unsafely in NMI context. void *ptr = kmalloc(1024, GFP_ATOMIC); if (ptr) { kfree(ptr); } } static int __init poc_init_module(void) { printk(KERN_INFO "Loading PoC for CVE-2026-43285\n"); // In a real scenario, setup a perf event to call trigger_nmi_alloc frequently return 0; } static void __exit poc_cleanup_module(void) { printk(KERN_INFO "Unloading PoC for CVE-2026-43285\n"); } module_init(poc_init_module); module_exit(poc_cleanup_module); MODULE_LICENSE("GPL");

影响范围

Linux Kernel < commit 144080a5823b2dbd635acb6decf7ab23182664f3

防御指南

临时缓解措施
建议限制非特权用户触发高频NMI上下文的能力,例如通过配置内核参数或使用`perf_event_paranoid`设置来限制perf事件的使用,从而降低漏洞被利用的风险。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表