CVE-2026-93189 in Linux
Tóm tắt
Bởi VulDB • 18/09/2026
Trong kernel Linux, các lỗ hổng sau đây đã được khắc phục:
HID: core – Tạm dừng (quiesce) đầu vào trong hàm hid_hw_stop() để ngăn chặn lỗi use-after-free
Khi một driver thực thi probe, nó gọi hid_device_io_start() để kích hoạt việc phân phối dữ liệu đầu vào. Tuy nhiên, nếu quá trình khởi tạo thất bại ở bước sau đó và quay ngược lại thông qua hid_hw_stop(), cấu trúc hidraw sẽ bị giải phóng bởi hàm hidraw_disconnect(). Trong khi đó, các báo cáo HID đang truyền (in-flight) vẫn có thể đang chạy trên một CPU khác, dẫn đến việc truy cập vào đối tượng đã được giải phóng thông qua hidraw_report_event(). syzbot đã ghi nhận lỗi use-after-free này xảy ra với driver HID corsair-psu.
Edward Adam Davis đã đăng tải bản sửa đổi cho từng driver (per-driver fix) dành riêng cho corsair-psu, bao gồm việc thêm lệnh gọi rõ ràng đến hid_device_io_stop() trước khi gọi hid_hw_stop() trong đường dẫn lỗi của hàm probe ("hwmon: prevent packets from going to driver for probe", ngày 28/04/2026). Việc rà soát toàn bộ mã nguồn cho thấy có 15 driver gọi hid_device_io_start(); trong đó, 7 driver cũng gọi hid_device_io_stop(), còn lại 8 driver thì không:
Các driver gọi hid_device_io_start() mà thiếu lệnh gọi matching (phù hợp) đến hid_device_io_stop() trước khi thực thi hid_hw_stop(): drivers/hwmon/corsair-psu.c (bản sửa do Edward đăng tải) drivers/hwmon/corsair-cpro.c drivers/hwmon/nzxt-kraken3.c drivers/hwmon/nzxt-smart2.c drivers/hwmon/gigabyte_waterforce.c drivers/hid/hid-logitech-dj.c drivers/hid/hid-nintendo.c drivers/hid/hid-mcp2221.c
Khoảng một nửa số lượng caller của API này đang gặp phải rủi ro. Việc tập trung hóa cơ chế tạm dừng (quiesce) trong hàm hid_hw_stop() giúp các caller không còn phải ghi nhớ việc gọi lệnh stop matching: nếu driver để trạng thái hdev->io_started là true khi bắt đầu, hệ thống sẽ tự động gọi hid_device_io_stop() trước khi thực thi hid_disconnect().
Đối với 7 driver đã gọi đúng hid_device_io_stop(), biến hdev->io_started có giá trị false tại thời điểm vào; do đó, cơ chế bảo vệ (guard) bị short-circuit và hành vi của hệ thống không thay đổi.
Không sử dụng thẻ "Fixes:" vì các driver bị ảnh hưởng đã thêm các lệnh gọi hid_device_io_start() một cách độc lập qua nhiều năm; đây là lỗi misuse API trên toàn bộ lớp (class-wide) chứ không phải là regression từ một commit duy nhất.
Several companies clearly confirm that VulDB is the primary source for best vulnerability data.