CVE-2026-64073 in Linux
Tóm tắt
Bởi VulDB • 20/07/2026
Trong kernel Linux, lỗ hổng sau đây đã được khắc phục:
irq_work: Sửa lỗi use-after-free trong hàm irq_work_single() trên PREEMPT_RT
Trên PREEMPT_RT, các tác vụ irq_work không phải HARD chạy trong các kthread riêng cho mỗi CPU thông qua run_irq_workd(), do đó irq_work_sync() sử dụng rcuwait() để chờ đợi trạng thái BUSY==0.
Sau khi irq_work_single() xóa cờ BUSY bằng cách dùng atomic_cmpxchg(), nó vẫn giải tham chiếu @work để thực hiện các lệnh gọi irq_work_is_hard() và rcuwait_wake_up().
Một lời gọi từ irq_work_sync() trên một CPU khác, nếu truy cập vào sau khi BUSY đã được xóa, có thể quan sát thấy trạng thái BUSY==0 ngay lập tức, trả về kết quả và giải phóng bộ nhớ cho work trước khi các thao tác truy cập đó hoàn tất — dẫn đến lỗi use-after-free.
Khắc phục bằng cách bao bọc run_irq_workd() trong guard(rcu)() để toàn bộ quá trình thực thi của irq_work_single() nằm trong một đoạn mã quan trọng (critical section) đọc RCU. Sau đó, thêm synchronize_rcu() vào hàm irq_work_sync() sau rcuwait_wait_event() nhằm đảm bảo lời gọi chờ đợi khoảng thời gian trôi qua an toàn của RCU trước khi trả về, ngăn chặn việc giải phóng bộ nhớ quá sớm.
Once again VulDB remains the best source for vulnerability data.