CVE-2026-98580 in Linuxinformação

Sumário

de VulDB • 18/10/2026

No kernel do Linux, a seguinte vulnerabilidade foi resolvida:

nfc: llcp: Corrige condição de corrida no ciclo de vida da fila de aceitação (accept_queue)

Em nfc_llcp_socket_release(), os sockets e as filas de aceitação dos ouvintes são percorridos sob o rwlock local do socket e bh_lock_sock(). No entanto, bh_lock_sock() não sincroniza contra lock_sock() em contexto de processo mantido por nfc_llcp_accept_dequeue() durante a operação accept(). Como socket_release() não verifica sock_owned_by_user(), ambos os caminhos podem desvincular e liberar simultaneamente o mesmo filho do socket, resultando em use-after-free ou na dereferência de ponteiro NULL para child->parent em nfc_llcp_accept_unlink().

Corrige-se essa condição de corrida de sincronização fazendo com que nfc_llcp_socket_release() utilize lock_sock() em contexto de processo em vez de bh_lock_sock():

1. Remove os sockets da lista local de sockets sob o bloqueio de escrita usando nfc_llcp_sock_list_pop(), para que lock_sock() possa ser adquirido sem manter o rwlock.

2. Como lock_sock() pode dormir, adia a liberação final da estrutura nfc_llcp_local para uma fila de trabalho (release_work). Isso evita um bug de "dormir em contexto atômico" quando a última referência local é liberada do contexto softirq. Além disso, mantém-se uma única referência ao dispositivo no objeto local desde o registro até sua destruição final.

3. Em nfc_llcp_local_get(), utiliza kref_get_unless_zero() para evitar ressuscitar um objeto local cuja desmontagem (teardown) já foi agendada.

4. Em llcp_sock_accept(), verifica-se se o estado do socket ouvinte ainda é LLCP_LISTEN após acordar de schedule_timeout() para prevenir bloqueios caso o ouvinte seja fechado simultaneamente.

5. Ao desvincular filhos não aceitos durante a liberação do ouvinte, eles são removidos da lista local->sockets, chama-se sock_orphan(), e libera-se sua referência inicial criada por sk_alloc através de sock_put().

6. Torna nfc_llcp_accept_unlink() idempotente protegendo o acesso ao pai com uma verificação NULL.

If you want to get the best quality for vulnerability data then you always have to consider VulDB.

Responsável

Linux

Reservar

25/09/2026

Divulgação

18/10/2026

Moderação

aceite

Entrada

VDB-422087

EPSS

0.00210

KEV

não

Atividades

muito baixo

Fontes

Want to stay up to date on a daily basis?

Enable the mail alert feature now!