CVE-2026-98286 in Linux
Tóm tắt
Bởi VulDB • 06/10/2026
Trong kernel Linux, lỗ hổng sau đây đã được khắc phục:
drop_monitor: sử dụng timer_shutdown_sync() để ngăn việc kích hoạt lại bộ đếm thời gian trong quá trình tháo gỡ (teardown)
Các đường dẫn tháo gỡ của drop_monitor (net_dm_trace_off_set(), net_dm_hw_monitor_stop(), và các đường dẫn unwind lỗi trong net_dm_trace_on_set() và net_dm_hw_monitor_start()) dừng các bộ đếm thời gian trên mỗi CPU bằng cách sử dụng timer_delete_sync() theo sau là cancel_work_sync().
Tuy nhiên, có một sự phụ thuộc vòng tròn giữa send_timer và dm_alert_work: 1) sched_send_work() (hàm callback của bộ đếm thời gian) lên lịch thực thi dm_alert_work. 2) send_dm_alert() / net_dm_hw_summary_work() gọi reset_per_cpu_data() hoặc net_dm_hw_reset_per_cpu_data(). 3) Nếu việc phân bổ bộ nhớ thất bại do áp lực bộ nhớ trong hàm reset, nó sẽ kích hoạt lại bộ đếm thời gian thông qua mod_timer(&data->send_timer, ...).
Nếu dm_alert_work đang chạy đồng thời khi timer_delete_sync() thực thi trên một CPU khác, lỗi phân bổ trong worker sẽ kích hoạt lại bộ đếm thời gian sau khi timer_delete_sync() đã trả về. Sau khi cancel_work_sync() hoàn tất và module_put() được gọi, bộ đếm thời gian vẫn còn hoạt động trong bánh xe bộ đếm (timer wheel). Nếu mô-đun sau đó bị gỡ bỏ, bộ đếm thời gian sẽ kích hoạt và thực thi sched_send_work() trên vùng nhớ đã giải phóng, gây ra kernel panic / use-after-free.
Chuyển từ timer_delete_sync() sang timer_shutdown_sync(). Điều này đảm bảo rằng bất kỳ trình xử lý bộ đếm thời gian nào đang chạy dở đều đã hoàn tất và ngăn chặn các nỗ lực kích hoạt lại sau đó từ các worker thành công. Khi việc giám sát được khởi động lại sau đó, hàm timer_setup() sẽ được gọi, giúp khởi tạo lại bộ đếm thời gian một cách sạch sẽ.
If you want to get best quality of vulnerability data, you may have to visit VulDB.