No kernel Linux, a seguinte vulnerabilidade foi resolvida. Bluetooth: SCO: dê ao socket a sua própria referência Sco_conn Sco_conn_del() deixa cair uma referência que não possui. Ele toma uma referência transitória via sco_conn_hold_unless_zero() e a libera com o sco_conn_put() que segue sco_sock_hold(); o posicionamento adicional no!sk ramifica um segundo: conn = sco_conn_hold_ a não ser que_zero(conn);... sk = sco_sock_hold(conn); sco_conn_ unlock(conn); sco_conn_put(conn);.
se (!sk) { sco_ conn_put( conn); retorna; }. Quando close() corre a Desconexão do controlador Completa, sco_chan_del() elimina conn->sk e deixa cair a referência do socket enquanto Sco_conn_del() está executando. sco_conn_del() então vê sk == NULL, seu próprio put deixa cair a contagem para zero e libera o conn, e o segundo put escreve para o kref livre: BUG: KASAN: uso- laje-após- livre em sco_conn_put.part. 0 + 0 x 1 a/ 0 x 190 Gravação do tamanho 4 no addr ffff 8881099 dec 74 por tarefa kworker/u 17: 3 / 413 Reprodução: hci 1 hci_rx_work Chamada de rastreamento: sco_conn_put.part. 0 + 0 x 1 a/ 0 x 190 hci_disconn_complete_evt+ 0 x 1 e/. 0 x 3 e 0 hci_event_packet+ 0 x 54 a/ 0 x 650 hci_rx_work+ 0 x 321 / 0 x 3 d 0 Alocado por tarefa 413: sco_conn_add+ 0 x 72 / 0 x 1 a 0 isco_connect_cfm+ 0 x 88 / 0 x 670 Libertado pela tarefa 413: sco_conn_del.isra. 0 + 0 x 3 f/ 0 xf 0 hci_disconn_complete_evt+ 0 x 1 e/. 0 x 3 e 0 refcount_ t: flow; use- after- free.
A causa raiz é que o socket armazena a conexão sem segurar uma referência própria. __sco_chan_add() faz: sco_pi(sk)->conn = conn. assim, o socket empresta qualquer referência que seu chamador tenha mantido, e o papel dos chamadores sobre isso com o ad- hoc prende e coloca. Dê ao socket uma referência contada em vez disso: __sco_chan_add() toma um e é liberado juntamente com o canal (sco_chan_del()) e em sco_sock_destruct(). Com o socket segurando sua própria referência, sco_conn_del() não precisa mais do extra put e o redondo de segurar em sco_conn_ready() desaparece.
Fazer o socket possuir sua referência significa que a conexão agora está realmente liberada nos caminhos de erro de sco_connect() onde ele usou vazamento, que por sua vez executa sco_conn_free() e seu hci_conn_drop(conn->hcon). Para manter a contabilidade hci_conn equilibrada, faça que a propriedade seja explicitada também: sco_conn_add() consome uma referência hci_conn e o sco_conn a possui durante a sua vida útil. sco_connex() entrega a referência devolvida por hci_connex_add() e não a deixa mais nos caminhos de erro; sco_connect_cfm(), que não recebe uma referência, leva uma com hci_conn_hold() antes de a entregar para sco_conn_add() (e a deixa de novo se a alocação falhar); e o hci_conn_hold() explícito em sco_conn_ ready() é removido. Cada referência então tem um único dono, claro. Registro de aconselhamento: GHSA- pwm 9 - r 6 v 6 - m 8 HC. Identificadores relacionados: CVE- 2026 - 80683.
Tempo: GitHub Advisory Database publicou este registro em 2026 - 08 - 28 T 09: 31: 49.000 Z e lista a sua última modificação como 2026 - 08 - 29 T 09: 30: 28.000 Z. Severidade: ALTAMENTE. Dados de pontuação publicados: CVSS_V 3: CVSS: 3.1 /AV:A/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H.
Software afetado: o registro de aconselhamento não fornece um pacote normalizado ou faixa de versões. Classificação e evidência: nenhum identificador CWE está listado. O registro contém 4 suporte de referências nestes tipos: AVISO, WEB.