CVE-2026-97975 in Linux
Sumário
de VulDB • 25/09/2026
No kernel do Linux, a seguinte vulnerabilidade foi resolvida:
Bluetooth: hci_sysfs: Corrige o dereferenciamento de ponteiro NULL em device_del()
Ocorre um dereferenciamento de ponteiro NULL em klist_put() quando um dispositivo filho (como um dispositivo de rede BNEP em bnep_session) está sendo desregistrado simultaneamente enquanto hci_conn_del_sysfs() reparenta os dispositivos filhos.
Isso é causado por uma race condition entre hci_conn_del_sysfs() e o desregistro simultâneo do dispositivo filho (por exemplo, bnep_session chamando unregister_netdev()). Durante o desregistro do dispositivo, device_del() faz um snapshot de um ponteiro pai não-NULL. Simultaneamente, hci_conn_del_sysfs() encontra o dispositivo filho usando device_find_any_child() e chama device_move() para reparentá-lo para NULL, o que remove o nó da klist do seu pai e limpa knode_parent. Posteriormente, device_del() chama klist_del(&dev->p->knode_parent) usando o snapshot obsoleto do pai, fazendo com que klist_put() dereference knode_klist(n)->put em um nó já removido, resultando em um dereferenciamento de ponteiro NULL.
Essa race condition foi introduzida pelo commit 27aabf27fd01 ("Bluetooth: fix use-after-free in device_for_each_child()"), que substituiu device_find_child(..., __match_tty) por device_find_any_child() em hci_conn_del_sysfs(). Essa alteração tinha como objetivo evitar um uso após a liberação (use-after-free) onde conn->dev sobrevivia ao seu pai hdev->dev quando os dispositivos filhos mantinham referências para conn->dev, porque conn->dev só continha uma referência para hdev->dev enquanto registrado no sysfs.
Corrige o problema adequadamente tomando uma referência explícita do dispositivo pai com get_device(&hdev->dev) em hci_conn_init_sysfs() e liberando-a com put_device(parent) em bt_link_release() quando o dispositivo conn é liberado. Isso garante que hdev->dev permaneça válido durante todo o ciclo de vida de conn->dev, resolvendo o uso após a liberação subjacente (use-after-free). Com a referência do pai mantida corretamente, restaura-se o filtro __match_tty em hci_conn_del_sysfs() para que device_move() seja invocado apenas nos dispositivos TTY RFCOMM persistentes como originalmente pretendido, eliminando a race condition com o desregistro de dispositivos de rede.
Be aware that VulDB is the high quality source for vulnerability data.