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

CVE-2026-31480 Linux内核osnoise死锁漏洞

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

漏洞信息

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

相关标签

Linux KernelDeadlockDenial of ServiceTracingPrivilege Escalation (Local)

漏洞概述

Linux内核tracing组件存在潜在死锁漏洞。在CPU热插拔过程中,由于锁的获取顺序不一致,当osnoise线程停止操作与tracing接口锁操作并发发生时,可能导致系统进入死锁状态。该漏洞允许本地低权限用户通过触发特定时序的操作导致系统挂起,造成拒绝服务。

技术细节

该漏洞源于Linux内核在处理tracing和CPU热插拔时的锁依赖顺序错误。具体而言,当CPU执行下线操作时,内核调用`cpus_write_lock`并执行`osnoise_cpu_die`函数,进而调用`kthread_stop`停止osnoise相关线程。若此时被停止的线程恰好处于`osnoise_sleep`函数执行中,它会尝试获取`interface_lock`。与此同时,系统中的另一个任务可能已经持有了`interface_lock`,并正在尝试获取`cpus_read_lock`以进行读取操作。由于`cpus_read_lock`与CPU热插拔持有的`cpus_write_lock`互斥,且`interface_lock`被前者持有,这形成了一个环形等待条件:持有`interface_lock`的任务等待`cpus_read_lock`,持有`cpus_write_lock`的任务等待osnoise线程结束,而osnoise线程等待`interface_lock`。这种死锁会导致系统关键路径阻塞,最终造成系统无响应(DoS)。修复方案是交换`cpus_read_lock()`和`mutex_lock(&interface_lock)`的获取顺序,确保锁的获取层级一致。

攻击链分析

STEP 1
步骤1
攻击者触发CPU热插拔操作,使CPU进入下线流程(Task 2)。
STEP 2
步骤2
内核持有cpus_write_lock并尝试停止osnoise相关内核线程(Task 3)。
STEP 3
步骤3
攻击者或系统进程同时触发tracing接口操作,获取interface_lock并尝试获取cpus_read_lock(Task 1)。
STEP 4
步骤4
osnoise线程在退出过程中尝试获取interface_lock,但由于锁已被Task 1持有而阻塞,形成死锁循环。
STEP 5
步骤5
系统关键路径被阻塞,导致拒绝服务。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
// Conceptual PoC to demonstrate the deadlock condition // This is a simplified representation of the race condition. #include <linux/module.h> #include <linux/kernel.h> #include <linux/kthread.h> #include <linux/mutex.h> #include <linux/cpu.h> // Simulating the deadlock scenario void simulate_deadlock(void) { // Task 1: Holds interface_lock, waits for cpus_read_lock mutex_lock(&interface_lock); cpus_read_lock(); // Task 2 (CPU Hotplug): Holds cpus_write_lock, stops Task 3 // Task 3: Tries to lock interface_lock inside osnoise_sleep } /* * Exploitation Steps: * 1. Start a thread that triggers tracing operations (Task 1). * 2. Trigger a CPU offline operation (Task 2). * 3. Ensure the timing aligns so that osnoise thread (Task 3) is in the sleep state. * 4. System enters DEADLOCK. */

影响范围

Linux Kernel(具体受影响版本请参考Git提交记录)

防御指南

临时缓解措施
建议暂时禁用系统的tracing功能或限制CPU热插拔操作,直到应用补丁。

参考链接

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