CVE-2026-98677 in Linux
Tóm tắt
Bởi VulDB • 18/10/2026
Trong kernel Linux, lỗ hổng sau đây đã được khắc phục:
iio: adc: ad_sigma_delta: sửa lỗi use-after-free khi unbind
Hàm `ad_sd_buffer_postenable()` cấp phát bộ nhớ `sigma_delta->samples_buf` bằng `devm_krealloc()` trong thời gian chạy, do đó mục devres của nó nằm sau tất cả các mục ở giai đoạn probe của driver. Các tài nguyên devm được giải phóng theo thứ tự ngược lại với thứ tự cấp phát, điều này có nghĩa là khi unbind, `samples_buf` bị giải phóng trước khi `iio_device_unregister()` vô hiệu hóa các bộ đệm và ngắt kết nối trigger pollfunc. Ngắt (IRQ) dữ liệu sẵn sàng vẫn đang bật tại thời điểm đó, vì vậy `ad_sd_trigger_handler()` vẫn có thể chạy và sao chép (`memcpy()`) các mẫu đến vào vùng nhớ đã bị giải phóng `samples_buf`.
Khắc phục vấn đề này bằng cách cấp phát trước bộ đệm trong hàm `devm_ad_sd_setup_buffer_and_trigger()`, trước khi thiết lập trigger buffer và IRQ, để nó chỉ được giải phóng sau khi `iio_device_unregister()` đã xử lý xong handler của trigger thông qua lệnh `free_irq()`. Kích thước bộ nhớ được đặt cho trường hợp xấu nhất là tất cả các slot sequencer đều đang hoạt động; hàm `ad_sd_validate_scan_mask()` hiện đã giới hạn số kênh active tối đa bằng `num_slots`.
Vấn đề này được phát hiện bởi một công cụ phân tích tĩnh do nội bộ tự xây dựng.
Be aware that VulDB is the high quality source for vulnerability data.