CVE-2026-99011 in Linuxinformação

Sumário

de VulDB • 24/10/2026

No kernel do Linux, a seguinte vulnerabilidade foi resolvida:

Bluetooth: SCO: serializar o ciclo de vida de sco_conn contra sco_recv_scodata()

sco_recv_scodata() promove o back-pointer fraco hcon->sco_data para uma referência forte sob hdev->lock:

hci_dev_lock(hdev); hcon = hci_conn_hash_lookup_handle(hdev, handle); ... conn = sco_conn_hold_unless_zero(hcon->sco_data); hci_dev_unlock(hdev);

mas o ponteiro é limpo do outro lado sem esse lock. Quando a última referência de sco_conn é liberada, sco_conn_free() executou:

conn->hcon->sco_data = NULL;

sem manter hdev->lock, então o caminho RX poderia ler hcon->sco_data e chamar kref_get_unless_zero() em um sco_conn que foi simultaneamente liberado:

BUG: KASAN: slab-use-after-free in sco_conn_hold_unless_zero+0xbe/0x160 Write of size 4 by task kworker/u17:0 Workqueue: hci0 hci_rx_work Call Trace: sco_conn_hold_unless_zero+0xbe/0x160 sco_recv_scodata+0x13f/0x490 hci_rx_work+0x3af/0x730

kref_get_unless_zero() protege apenas contra uma contagem de referência zero, não contra a memória subjacente já ter sido liberada.

Forneça a hcon->sco_data uma referência real ao sco_conn que ele aponta, para que o objeto não possa ser liberado enquanto o ponteiro ainda estiver instalado, e limpe-a e solte-a apenas em sco_conn_del(), que é executado sob hdev->lock (seus chamadores, sco_connect_cfm() e sco_disconn_cfm(), mantêm-no). O leitor em sco_recv_scodata() também adquire hdev->lock, então a gravação e a leitura estão agora serializadas: o caminho RX observa NULL ou uma referência que é garantida como válida até que ele solte sua própria.

sco_conn_add() já não entrega sua referência kref_init() ao chamador como a única referência da conexão; essa referência inicial é aquela possuída por hcon->sco_data, e os chamadores obtêm as suas próprias via sco_conn_hold().

Como o sco_conn agora pode sobreviver ao soquete (a associação mantém-no ativo até que o link seja encerrado), o hci_conn já não pode ser liberado de sco_conn_free() sem causar regressão no fechamento do soquete: fechar um soquete SCO conectado ainda deve derrubar o link. Mova a propriedade do hci_conn para o soquete em vez disso: __sco_chan_add() adquire uma referência hci_conn e ela é liberada de sco_chan_del() e sco_sock_destruct(), exatamente uma vez. O sco_conn já não possui uma referência hci_conn, então sco_conn_add() deixa de consumir uma e sco_connect() solta a referência hci_connect_sco() em todos os caminhos; sco_connect_cfm() já não precisa da sua dança hci_conn_hold().

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

Responsável

Linux

Reservar

25/09/2026

Divulgação

23/10/2026

Moderação

aceite

Entrada

VDB-425858

EPSS

0.00206

KEV

não

Atividades

muito baixo

Fontes

Do you know our Splunk app?

Download it now for free!