IPBUF安全漏洞报告
English
CVE-2026-43415 CVSS 4.7 中危

CVE-2026-43415: Linux内核UFS驱动竞态漏洞

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

漏洞信息

漏洞编号
CVE-2026-43415
漏洞类型
竞态条件
CVSS评分
4.7 中危
攻击向量
本地 (AV:L)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Linux Kernel

相关标签

Race ConditionLinux KernelDoSUFSKernel PanicSCSI

漏洞概述

Linux内核中的scsi: ufs: core组件存在一个竞态条件漏洞。在UFS设备执行挂起操作期间,由于代码逻辑错误,取消延迟工作的操作被放置在了`ufshcd_vops_suspend`之后。这导致`ufshcd_rtc_work`函数可能在设备挂起流程仍在进行时被调度执行。在不支持时钟门控的特定硬件条件下,RTC更新工作与时钟门控操作发生冲突,最终触发异步SError中断,导致内核恐慌和系统崩溃。

技术细节

该漏洞的核心在于Linux内核UFS驱动中`__ufshcd_wl_suspend`函数的实现存在时序缺陷。正常逻辑下,在执行设备挂起前应取消所有可能访问硬件的延迟工作。然而,`cancel_delayed_work_sync()`被错误地置于`ufshcd_vops_suspend`之后执行。这产生了一个竞态窗口:当`ufshcd_vops_suspend`正在执行时钟门控操作时,`ufshcd_rtc_work`可能恰好被唤醒并尝试通过`ufshcd_update_rtc()`访问硬件寄存器。如果设备不支持`UFSHCD_CAP_CLK_GATING`,系统会尝试进行RTC更新,此时时钟已被门控或电源状态改变,导致非法内存访问或总线错误,进而触发CPU的SError异常。攻击者可通过本地操作触发UFS设备的电源状态转换来利用此漏洞,导致系统拒绝服务。

攻击链分析

STEP 1
步骤1:获取本地访问权限
攻击者需要在目标系统上拥有低权限的本地访问能力。
STEP 2
步骤2:触发UFS挂起流程
通过系统调用或触发电源管理事件,诱导内核执行UFS设备的挂起流程(__ufshcd_wl_suspend)。
STEP 3
步骤3:触发竞态条件
在挂起流程中,由于延迟工作取消时机滞后,ufshcd_rtc_work在时钟门控期间被调度执行。
STEP 4
步骤4:导致内核恐慌
RTC更新操作与时钟门控冲突,触发异步SError中断,导致系统崩溃(Kernel Panic)。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
/* * PoC Concept for CVE-2026-43415 * This code demonstrates the logic flaw in the UFS suspend path. * Actual exploitation requires triggering system suspend on vulnerable hardware. */ #include <linux/module.h> #include <linux/workqueue.h> // Simulating the vulnerable race condition logic void vulnerable_suspend_logic(struct device *dev) { // Vulnerability: Cancel work is called AFTER suspend ops // 1. Execute suspend operations (clock gating) // ufshcd_vops_suspend(hba, pm_op, POST_CHANGE); printk(KERN_INFO "Suspending device and gating clocks...\n"); // 2. Race window exists here where rtc_work might fire // 3. Cancel work (Too late!) // cancel_delayed_work_sync(&hba->rtc_work); printk(KERN_INFO "Cancelling delayed work...\n"); } void fixed_suspend_logic(struct device *dev) { // Fix: Cancel work BEFORE suspend ops // 1. Cancel work first // cancel_delayed_work_sync(&hba->rtc_work); printk(KERN_INFO "Cancelling delayed work...\n"); // 2. Execute suspend operations safely // ufshcd_vops_suspend(hba, pm_op, POST_CHANGE); printk(KERN_INFO "Suspending device and gating clocks...\n"); } // In a real scenario, triggering this requires: // echo mem > /sys/power/state or similar PM interactions.

影响范围

Linux Kernel < commit 2fcc2fc21cae7a0cbe73053f7fc70680ce2a7f69
Linux Kernel < commit a6a894413b043704b77a6294c379c93b1477e48d

防御指南

临时缓解措施
由于该漏洞涉及内核底层驱动,最有效的临时缓解措施是限制系统挂起操作的触发权限,或尽可能保持系统唤醒状态,避免UFS设备频繁进入挂起模式,直到应用内核补丁。

参考链接

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