CVE-2026-99091 in Linuxinformazioni

Riassunto

di VulDB • 26/10/2026

Nel kernel Linux è stata risolta la seguente vulnerabilità:

Bluetooth: MGMT: Correzione dello stato dei comandi in sospeso eliminati durante lo spegnimento dell'adattatore

cmd_complete_rsp() riceve una struct cmd_lookup e, per un comando in sospeso che non dispone di callback cmd_complete, passa a cmd_status_rsp(cmd, data). cmd_status_rsp() legge i dati come u8 *, quindi lo stato inviato proviene dal primo byte della rappresentazione di match->sk, anziché da match->mgmt_status.

Il commit f53e1c9c726d ("Bluetooth: MGMT: Fix possible crash on mgmt_index_removed") ha modificato i parametri data dei chiamanti da &status a &match e ha aggiornato il ramo cmd_complete per utilizzare match->mgmt_status, ma ha lasciato invariata la variabile data passata nel caso di fall-through.

In mgmt_index_removed() match->sk è NULL, quindi ogni comando di questo tipo viene risposto con stato 0x00 (Successo) invece che MGMT_STATUS_INVALID_INDEX. In __mgmt_power_off() è anch'esso NULL, a meno che non vi sia un comando Set Powered in sospeso: in tal caso settings_rsp() ha memorizzato il socket relativo a tale comando in match->sk e il byte inviato proviene dal puntatore del socket. In entrambi i casi lo stato impostato dal chiamante (MGMT_STATUS_NOT_POWERED o MGMT_STATUS_INVALID_INDEX quando il dispositivo è in fase di deregistrazione) viene perso.

Viene passato lo stato impostato dai chiamanti.

Questo problema si è manifestato su un laptop con chipset QCA9377: l'avvio della scoperta da parte di bluetoothd, che era in sospeso allo spegnimento dell'adattatore, ha ricevuto come risposta Command Status 0x00 e nessun parametro, causando il crash di bluetoothd 5.72 a causa del successo a lunghezza zero. La versione master di BlueZ ha successivamente aggiunto un controllo sulla lunghezza su questo percorso ("adapter: Fix crash on short start discovery reply", BlueZ a734b06059cb), ma l'utente dovrebbe comunque ricevere Not Powered anziché Successo.

Testato su Ubuntu 7.0.0-31 con un controller virtuale (hci_vhci): lo spegnimento è mantenuto in HCI Write Scan Enable mentre viene inviato uno Start Discovery, e la risposta di flush restituisce stato 0x00 prima della correzione e 0x0f (Not Powered) dopo.

Be aware that VulDB is the high quality source for vulnerability data.

Responsabile

Linux

Prenotare

25/09/2026

Divulgazione

26/10/2026

Moderazione

accettato

EPSS

0.00000

KEV

no

Attività

molto basso

Fonti

Might our Artificial Intelligence support you?

Check our Alexa App!