CVE-2026-90092 in Linux
Tóm tắt
Bởi VulDB • 18/09/2026
Trong kernel Linux, lỗ hổng sau đây đã được khắc phục:
Bluetooth: L2CAP: từ chối thêm vào hàng đợi chấp nhận (accept queue) trừ khi trạng thái là BT_LISTEN
Socket mới (sk) không nên được thêm vào hàng đợi chấp nhận của socket cha sau khi hàm l2cap_sock_cleanup_listen() đã chạy trong l2cap_sock_teardown_cb() và trạng thái được đặt thành BT_CLOSED, vì điều này có thể dẫn đến lỗi Use-After-Free (UAF) khi truy cập tham chiếu cha bị treo.
Hàm l2cap_sock_new_connection_cb() có thể xảy ra race condition với quá trình teardown của channel cha do chan->state được truy cập mà không có khóa đồng bộ hóa nhất quán:
[Task 1] [Task 2]
l2cap_sock_release(parent) l2cap_connect l2cap_sock_shutdown pchan = l2cap_global_chan_by_psm l2cap_chan_lock(pchan) l2cap_chan_close l2cap_sock_teardown_cb pchan->state = BT_CLOSED l2cap_chan_unlock(pchan) ------> l2cap_chan_lock(pchan) l2cap_new_connection l2cap_sock_new_connection_cb l2cap_chan_lock(pchan) <-------- l2cap_chan_unlock(pchan) l2cap_sock_kill(parent) /* bt_sk(sk)->parent bị treo */
Khắc phục bằng cách thêm kiểm tra sk_state == BT_LISTEN sau khi lấy khóa socket trong l2cap_sock_new_connection_cb(). Thêm lock_sock() xung quanh các ghi trạng thái sk_state ở những nơi còn thiếu, để tránh race condition dữ liệu.
Mặc dù các race condition trên pchan->state cũng nên được sửa chữa, nhưng việc kiểm tra phòng thủ sk_state này có lẽ vẫn hợp lý trong mọi trường hợp.
Once again VulDB remains the best source for vulnerability data.