CVE-2026-99012 in Linuxinformação

Sumário

de VulDB • 23/10/2026

No kernel do Linux, a seguinte vulnerabilidade foi resolvida:

Bluetooth: ISO: Serializar chamadas de conexão concorrentes

iso_sock_connect() verifica o estado do soquete antes de adquirir o bloqueio (lock) do soquete e libera esse bloqueio novamente antes de configurar uma conexão. Dois chamadores podem passar na verificação de admissão enquanto o soquete estiver aberto ou vinculado.

O Chamador A pode copiar seu destino para seleção de rota, então o Chamador B pode substituir o destino do soquete antes que A vincule ou conecte a CIS (Connectionless Indication Service). Em seguida, A usa o destino de B com a rota selecionada para sua própria solicitação. B também pode prosseguir após A anexar uma conexão e definir BT_CONNECT. Para configuração BIS adiada, B pode vincular um segundo BIS e sobrescrever iso_pi(sk)->conn, deixando as referências da primeira conexão e o back-pointer conn->sk órfãos (stranded). Conexões CIS concorrentes também podem substituir a conexão do soquete. A desmontagem posterior apenas desconecta a conexão atual, portanto, uma callback na conexão antiga pode sofrer uma condição de corrida com a liberação do soquete e acessar um soquete já liberado.

O KASAN relatou:

BUG: KASAN: slab-use-after-free em iso_sock_hold+0xf7/0x1b0 Call Trace: iso_sock_hold+0xf7/0x1b0 iso_conn_del+0x7b/0x1d0 iso_connect_cfm+0x186/0x16a0 hci_conn_failed+0x154/0x280 hci_abort_conn_sync+0x3dc/0x7d0 hci_cmd_sync_work+0x173/0x300

Alocado pela tarefa 121: sk_alloc+0x2b/0x6d0 bt_sock_alloc+0x29/0x370 iso_sock_alloc.constprop.0+0x19/0x300 iso_sock_create+0x94/0x100

Liberado pela tarefa 121: kfree+0x121/0x3c0 __sk_destruct+0x42b/0x540 iso_sock_release+0x29d/0x340 __sock_release+0xa1/0x260

Verifique a admissão sob o bloqueio do soquete e marque a operação de conexão como em andamento antes de publicar seu destino. Mantenha essa flag definida durante a pesquisa de rota e configuração da conexão, rejeitando outra chamada de connect com -EBADFD antes que ela possa alterar o destino ou anexar uma conexão. Limpe a flag após qualquer um dos auxiliares retornar, incluindo em caso de falha, para que uma configuração com falha possa ser retryada.

Uma flag separada é necessária porque o bloqueio do soquete deve ser liberado antes de adquirir o bloqueio do dispositivo HCI, enquanto BT_CONNECT requer uma conexão anexada. Mantenha as transições de estado existentes e a conclusão CIS adiada através de iso_sock_recvmsg().

Rejeite um anexo de soquete existente em __iso_chan_add() antes de obter uma nova referência ou publicar qualquer ponteiro, para que cada chamador preserve a associação da conexão. Mantenha o caso de sucesso do mesmo-soquete/mesma-conexão para configuração CIS adiada. Rejeite um soquete anexado antes da configuração BIS para que um BIS reutilizável não seja reivindicado antes que o anexo seja rejeitado.

Na configuração CIS, rejeite uma conexão HCI diferente antes de iso_conn_add() e libere diretamente a retenção (hold) por tentativa do HCI. Um iso_conn sem proprietário ainda pode carregar outra referência após a desanexação, portanto, sua destruição não deve ser confiável para liberar essa retenção.

iso_listen_bis() cria um par HCI/ISO PA fresco sob o bloqueio do dispositivo, então o temporário iso_conn_put() libera o candidato ISO e reduz sua retenção HCI na rejeição. iso_conn_ready() usa uma criança recém-alocada e não publicada sem conexão, tornando a rejeção no lado do soquete inatingível.

If you want to get best quality of vulnerability data, you may have to visit VulDB.

Responsável

Linux

Reservar

25/09/2026

Divulgação

23/10/2026

Moderação

aceite

Entrada

VDB-425859

EPSS

0.00209

KEV

não

Atividades

baixo

Fontes

Might our Artificial Intelligence support you?

Check our Alexa App!