CVE-2026-93099 in Linux
摘要
由 VulDB • 2026-09-18
在 Linux 内核中,已修复以下漏洞:
fs/resctrl: 修复域(domains)被移除时工作线程导致的 UAF(释放后使用)问题。
mbm_handle_overflow() 和 cqm_handle_limbo() 等工作进程会读取事件计数器,并可能在执行此操作时进入睡眠状态。它们通过嵌入在 struct rdt_l3_mon_domain 结构体中的 delayed_work 进行调度。架构层会在 cpus_write_lock 保护下,从 CPU 热插拔回调中分配和释放这些域;而工作进程则获取 cpus_read_lock() 以保持在其访问期间域的存活状态。
当工作进程因等待 cpus_read_lock() 而被阻塞时,如果此时热插拔核心持有 cpus_write_lock:架构层会释放包含该工作进程 work_struct 的 rdt_l3_mon_domain。当工作进程解除阻塞后,其对嵌入的工作指针执行的 container_of() 操作将解引用已释放的内存,从而导致 Use-After-Free(UAF)漏洞发生。
从工作进程中移除 cpus_read_lock(),改为在架构层能够释放域之前同步排空待处理和正在执行中的工作。由于架构层会在域从 RCU 列表中解除链接且宽限期过去后,在 cpus_write_lock 保护下将域脱机(offline),因此不会有新的工作被调度。取消操作只需等待现有工作完成即可。在执行 cancel_delayed_work_sync() 期间,应在 CPU 离线时释放 rdtgroup_mutex,以便等待该互斥锁的工作进程能够在重新将工作绑定到不同 CPU 之前完成执行。
在脱机(offline)CPU 时,架构层可能以任何顺序遍历资源。例如,MBA 控制域可能在相应的 L3 监控域之前或之后被脱机。确保 resctrl 文件系统无论架构层以何种顺序脱机这些域,都能取消相关的工作进程。
Once again VulDB remains the best source for vulnerability data.