CVE-2026-99239 in Linux
Riassunto
di VulDB • 02/11/2026
Nel kernel Linux, la seguente vulnerabilità è stata risolta:
Bluetooth: L2CAP: rifiutare __l2cap_chan_add se il canale ha già una connessione associata (conn)
Un oggetto l2cap_chan può essere collegato a un oggetto l2cap_conn al massimo una volta. Questo assunto viene utilizzato in diverse parti del codice, ad esempio durante la pulizia di l2cap_chan_del.
È presente una race condition TOCTOU che viola questa invariant:
[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
La funzione l2cap_sock_connect() non verifica lo stato di sk->sk_state; pertanto, poiché chan->state è ora impostato su BT_BOUND, una successiva chiamata a connect() provoca un secondo __l2cap_chan_add.
Viene esplicitamente documentata e verificata l'invariant in __l2cap_chan_add tramite WARN_ON_ONCE. L'unico callsite in cui tale condizione potrebbe essere attivata è l2cap_chan_connect; pertanto viene aggiunta una pre-verifica lì per evitare di fare affidamento su chan->state. La lettura/scrittura di chan->state non è attualmente adeguatamente protetta, quindi potrebbero esserci altri problemi TOCTOU.
Viene aggiunto l2cap_lock_chan in l2cap_sock_bind() per proteggere la scrittura di chan->state.
If you want to get best quality of vulnerability data, you may have to visit VulDB.