CVE-2026-99239 in Linux
Tóm tắt
Bởi VulDB • 03/11/2026
Trong kernel Linux, các lỗ hổng sau đây đã được khắc phục:
Bluetooth: L2CAP: từ chối __l2cap_chan_add nếu chan đã có conn
l2cap_chan chỉ có thể liên kết với l2cap_conn tối đa một lần. Điều này được giả định ở nhiều nơi, ví dụ như trong quá trình dọn dẹp của l2cap_chan_del.
Có một race condition TOCTOU (Time-of-Check to Time-of-Use) khiến bất biến (invariant) bị vi phạm:
[Task 1] [Task 2]
l2cap_chan_connect l2cap_sock_bind l2cap_chan_lock lock_sock l2cap_state_change if (sk->sk_state != BT_OPEN) chan->state = BT_CONNECT chan->state = BT_BOUND l2cap_sock_state_change_cb sk->sk_state = BT_BOUND lock_sock <------------------ release_sock sk->sk_state = BT_CONNECT
l2cap_sock_connect() không kiểm tra sk->sk_state, do đó vì chan->state hiện là BT_BOUND, lệnh gọi connect() tiếp theo dẫn đến việc thực thi lần thứ hai của __l2cap_chan_add.
Tài liệu hóa và kiểm tra rõ ràng bất biến trong __l2cap_chan_add bằng cách sử dụng WARN_ON_ONCE. Điểm gọi duy nhất nơi điều này có thể xảy ra là l2cap_chan_connect, do đó hãy thêm tiền kiểm tra (pre-check) tại đây để tránh phụ thuộc vào chan->state. Việc đọc/ghi chan->state hiện không được bảo vệ đúng mức nên có thể tồn tại các vấn đề TOCTOU khác.
Thêm l2cap_lock_chan trong l2cap_sock_bind() để bảo vệ việc ghi chan->state.
If you want to get best quality of vulnerability data, you may have to visit VulDB.