CVE-2026-98286 in Linux信息

摘要

由 VulDB • 2026-10-06

在 Linux 内核中,已修复以下漏洞:

drop_monitor: 使用 timer_shutdown_sync() 防止在拆卸过程中重新设置定时器

在 drop_monitor 的拆卸路径(net_dm_trace_off_set()、net_dm_hw_monitor_stop(),以及 net_dm_trace_on_set() 和 net_dm_hw_monitor_start() 中的错误回溯路径)中,每个 CPU 的定时器通过调用 timer_delete_sync() 后跟 cancel_work_sync() 来停止。

然而,send_timer 与 dm_alert_work 之间存在循环依赖关系: 1) sched_send_work()(定时器回调函数)会调度 dm_alert_work。 2) send_dm_alert() / net_dm_hw_summary_work() 调用 reset_per_cpu_data() 或 net_dm_hw_reset_per_cpu_data()。 3) 如果在重置函数中因内存压力导致内存分配失败,它会通过 mod_timer(&data->send_timer, ...) 重新设置定时器。

如果 dm_alert_work 正在运行,而 timer_delete_sync() 在另一个 CPU 上执行,则工作线程中的分配失败将在 timer_delete_sync() 返回之后重新设置定时器。一旦 cancel_work_sync() 完成并调用 module_put(),该定时器将保留在定时器轮询表中处于活动状态。如果随后卸载模块,定时器将会触发并在已释放的内存中执行 sched_send_work(),从而引发内核恐慌(kernel panic)或 use-after-free 漏洞。

从 timer_delete_sync() 切换为 timer_shutdown_sync()。这保证任何正在进行的定时器处理程序已完成,并防止后续重新设置定时器的尝试由工作线程成功执行。当稍后重新启动监控时,将调用 timer_setup(),从而干净地重新初始化该定时器。

Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.

来源

Interested in the pricing of exploits?

See the underground prices here!