CVE-2025-68214CVE-2025-68214是Linux内核中的一个中等严重性竞态条件漏洞,存在于定时器子系统的timer_shutdown_sync()函数中。该漏洞的CVSS评分为4.7,属于中危级别。攻击者可通过本地低权限访问触发此漏洞,成功利用可导致系统可用性下降(触发内核警告导致系统不稳定)。漏洞的核心问题在于timer_shutdown_sync()在清除定时器函数指针为NULL时,未正确处理定时器仍在其他CPU上运行的场景,导致待处理定时器携带NULL函数指针,在下次触发时触发内核WARN_ON警告。虽然该漏洞不会直接导致代码执行或数据泄露,但可能造成系统服务中断,影响系统稳定性。
该漏洞是一个典型的内核定时器竞态条件问题。在多核系统中,timer_shutdown_sync()函数尝试关闭一个定时器时存在以下竞态场景:
1. CPU1正在执行定时器回调函数(call_timer_fn),此时定时器处于running状态
2. CPU0调用timer_shutdown_sync()关闭同一定时器
3. CPU0在lock_timer_base()后检查base->running_timer != timer,如果正在运行则跳过detach操作
4. CPU0随后执行timer->function = NULL(无论shutdown参数如何)
5. CPU1完成回调执行,清理running_timer标记
6. 此时定时器仍处于pending状态,但其function已被设为NULL
7. 当该定时器下次触发时,expire_timers()检查到fn为NULL,触发WARN_ON_ONCE(!fn)警告
漏洞根因:timer_shutdown_sync()在不清除running_timer的情况下提前将function设为NULL,导致定时器在pending状态下失去有效的回调函数。修复方案是仅在真正detach定时器时才清除function指针,如果定时器正在运行则保留function指针直到安全清理。