CVE-2026-23004CVE-2026-23004是Linux内核中的一个高危安全漏洞,存在于IPv6路由子系统的rt6_uncached_list相关函数中。该漏洞由syzbot模糊测试工具发现,攻击者可通过本地低权限访问触发竞态条件,导致内核出现use-after-free错误,最终可能造成系统崩溃或潜在的内核代码执行。漏洞的CVSS评分为7.8,属于高危级别,影响Linux内核多个版本。攻击者无需特殊用户交互即可利用此漏洞,但需要本地访问权限。
该漏洞的根本原因在于rt6_uncached_list_del()和rt_del_uncached_list()函数中存在竞态条件。具体问题是在多CPU环境下,rt6_uncached_list_del()函数没有尝试获取ul->lock锁,导致list_empty(&rt->dst.rt_uncached)可能返回错误结果。当WRITE_ONCE(list->next, list)在另一个CPU上完成后,list_empty检查认为列表为空,但实际上列表项仍被其他CPU引用。随后在rt6_uncached_list_flush_dev()中调用list_del_init()和INIT_LIST_HEAD()时,尝试写入已释放的内存(list->prev),导致KASAN报告slab-use-after-free错误。漏洞表现为在include/linux/list.h:46的INIT_LIST_HEAD()函数中写入list->next成功,但写入list->prev时崩溃,此时@list已被另一个CPU释放。修复方案包括使用list_del_init_careful()和list_empty_careful()原子操作,或确保rt6_uncached_list_del()在rt->dst.rt_uncached_list设置后总是获取自旋锁。该漏洞影响IPv6路由处理,IPv4也需要类似修复。