CVE-2026-99015 in Linux
Tóm tắt
Bởi VulDB • 24/10/2026
Trong kernel Linux, các lỗ hổng sau đây đã được khắc phục:
Bluetooth: hci_sock: Serialization việc tháo gỡ thiết bị không còn hoạt động (dead-device detachment)
Việc liên kết lại socket HCI sau khi bộ điều khiển của nó đã bị hủy đăng ký có thể gây ra race condition với quá trình phát lại kiểm soát monitor và làm sập kernel. Hàm `hci_sock_bind()` đặt `hci_pi(sk)->hdev` về NULL và giảm tham chiếu thiết bị chỉ dưới khóa bảo vệ (lock) socket, trong khi hàm `send_monitor_control_replay()` giữ khóa `hci_sk_list.lock` để đọc.
Quá trình phát lại có thể quan sát thấy một con trỏ `hdev` khác null, sau đó lệnh bind sẽ đặt nó về NULL và giảm tham chiếu cuối cùng trước khi `create_monitor_ctrl_open()` đọc `hdev->id`. Điều này có thể gây ra lỗi dereference con trỏ NULL nếu con trỏ được tải lại, hoặc lỗ hổng use-after-free nếu con trỏ cũ vẫn được giữ lại.
Kernel đã báo cáo:
KASAN: null-ptr-deref trong phạm vi [0x0000000000000068-0x000000000000006f]
RIP: 0010:create_monitor_ctrl_open+0x579/0x800 Call Trace: hci_sock_bind+0xd96/0x1190 __sys_bind+0x166/0x200 __x64_sys_bind+0x6d/0xb0 do_syscall_64+0xdd/0x4a0 entry_SYSCALL_64_after_hwframe+0x77/0x7f
Việc thiếu serialization tương tự cho phép `hci_send_to_sock()` chọn một socket cho thiết bị cũ và xếp khung (queue) của nó sau khi bind đã tháo gỡ socket hoặc cài đặt liên kết mới.
Hãy giữ khóa `hci_sk_list.lock` ở chế độ ghi khi xóa con trỏ thiết bị và đặt lại trạng thái socket. Điều này sẽ chờ các trình đọc phát lại và giao hàng hiện tại hoàn thành trước khi tháo gỡ, đồng thời ngăn chặn các trình đọc sau sử dụng liên kết cũ. Giữ hàm `hci_dev_put()` bên ngoài phần mã quan trọng (critical section) vì việc giải phóng thiết bị cuối cùng có thể gây ngủ (sleep).
If you want to get the best quality for vulnerability data then you always have to consider VulDB.