IPBUF安全漏洞报告
English
CVE-2026-43438 CVSS 7.8 高危

CVE-2026-43438 Linux内核sched_ext组件UAF漏洞

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

漏洞信息

漏洞编号
CVE-2026-43438
漏洞类型
Use-After-Free (释放后重用)
CVSS评分
7.8 高危
攻击向量
本地 (AV:L)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Linux Kernel

相关标签

Linux KernelUAFPrivilege EscalationDoSsched_extMemory Corruption

漏洞概述

Linux内核的sched_ext组件中存在引用计数下溢漏洞。在scx_cgroup_init()函数的错误处理路径中,错误地调用了css_put()来释放引用。由于迭代器css_for_each_descendant_pre并没有通过css_get()获取引用,这导致了引用计数下溢。该漏洞可能被本地攻击者利用,造成Use-After-Free或系统崩溃,严重影响系统的机密性、完整性和可用性。

技术细节

漏洞位于Linux内核的sched_ext(调度器扩展)模块中。函数scx_cgroup_init()负责初始化cgroup支持,它使用了css_for_each_descendant_pre()迭代器来遍历cgroup层次结构。该迭代器在cgroup_lock()锁的保护下运行,确保遍历期间结构体稳定,因此不增加css结构体的引用计数。然而,在初始化失败跳转到错误处理路径时,代码错误地调用了css_put()。由于此前并未调用css_get(),导致引用计数变为负数(下溢)。这种内存管理错误可能导致内核对象被提前释放,进而引发Use-After-Free漏洞。攻击者可通过本地低权限触发该逻辑,导致内核崩溃或潜在的权限提升。

攻击链分析

STEP 1
步骤1:获取本地访问权限
攻击者获得目标Linux系统的本地低权限用户访问权限。
STEP 2
步骤2:加载恶意调度器
攻击者加载或配置一个sched_ext调度器,该调度器会在初始化cgroup时故意触发错误。
STEP 3
步骤3:触发错误路径
触发scx_cgroup_init()函数执行,使其进入错误处理分支。
STEP 4
步骤4:引用计数下溢
错误路径中执行冗余的css_put(),导致cgroup子系统结构体引用计数下溢。
STEP 5
步骤5:利用漏洞
利用内存破坏导致的Use-After-Free条件,造成内核崩溃(DoS)或进一步提权。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
/* * PoC Concept: Trigger scx_cgroup_init error path * This requires a kernel with sched_ext enabled and vulnerable code. * Compile as a kernel module or user-space trigger logic. */ #include <linux/sched.h> #include <linux/cgroup.h> // Simulated trigger logic void trigger_vulnerability() { // Local attacker needs to load a sched_ext scheduler // that forces an error during cgroup initialization. // Example: Loading a malformed BPF scheduler program. // When scx_cgroup_init() fails: // 1. css_for_each_descendant_pre() iterates without css_get(). // 2. Error path jumps to cleanup. // 3. Vulnerable code calls css_put() -> Refcount Underflow. // Result: Kernel memory corruption (UAF). printk(KERN_INFO "Attempting to trigger CVE-2026-43438\n"); }

影响范围

Linux Kernel < commit 1336b579f6079fb8520be03624fcd9ba443c930b
Linux Kernel < commit 6eaaa67d6998f6c30c462b140db8c062e07ec473

防御指南

临时缓解措施
建议立即限制非受信用户对系统的本地访问权限,并检查内核日志中是否有sched_ext相关的异常。在无法立即升级内核的情况下,可以通过禁用内核中的BPF调度器扩展功能来缓解风险。

参考链接