CVE-2026-31703Linux内核中的writeback子系统存在一个释放后重用(UAF)漏洞。该漏洞源于inode_switch_wbs_work_fn函数中的循环逻辑。当该函数处理完所有切换回写上下文的项目后,列表可能为空,此时如果工作项仍处于挂起状态,wb结构体可能会被释放,导致后续访问时发生释放后重用错误。攻击者可利用此漏洞造成系统崩溃或潜在的权限提升。
漏洞位于Linux内核的writeback机制中,具体涉及inode_switch_wbs_work_fn函数与wb_queue_isw函数之间的交互。wb_queue_isw通过llist_add将项目添加到wb->switch_wbs_ctxs链表中,并调度工作队列。inode_switch_wbs_work_fn负责处理这些项目,其原始实现包含一个循环,不断从链表中删除并处理项目,直到链表为空。问题在于,当循环处理完所有项目导致链表为空时,如果此时工作队列项wb->switch_work恰好处于挂起状态尚未执行完毕,由于链表已空,wb的引用计数可能归零,导致wb被释放。当工作队列后续代码继续执行时,就会访问已释放的内存,从而触发Use-After-Free漏洞。这种竞态条件允许本地攻击者通过特定的触发时序,导致内核崩溃或可能实现权限提升。