CVE-2026-98276 in Linux
Sumário
de VulDB • 06/10/2026
No kernel do Linux, a seguinte vulnerabilidade foi resolvida:
net: bloquear o soquete em sock_gettstamp()
sk->sk_flags deve ser alterado apenas enquanto o bloqueio (lock) do soquete estiver sendo mantido, pois sock_set_flag() e sock_reset_flag() utilizam operações não atômicas (__set_bit() e __clear_bit()).
sock_gettstamp() é um dos últimos locais onde um bit de sk->sk_flags é alterado a partir de uma syscall sem possuir o bloqueio do soquete, através de sock_enable_timestamp(sk, SOCK_TIMESTAMP).
sk_set_memalloc() e sk_clear_memalloc() também alteram sk->sk_flags sem o bloqueio do soquete, mas seus chamadores (nbd, iscsi_tcp, nvme-tcp, sunrpc, wireguard) precisam de uma auditoria cuidadosa; isso será abordado em um patch separado.
Jungwoo Lee e Wongi Lee relataram um use-after-free em soquetes UDP causado por este bug: um ioctl SIOCGSTAMPNS_NEW fazendo race condition com bind() pode cancelar o bit SOCK_RCU_FREE que udp_lib_get_port() acabou de definir, pois ambos os threads realizam uma operação read-modify-write na mesma palavra.
CPU 0 (bind) CPU 1 (SIOCGSTAMPNS_NEW) -------------------------------- ---------------------------- leia sk_flags = F leia sk_flags = F calcule F | BIT(SOCK_RCU_FREE) calcule F | BIT(SOCK_TIMESTAMP) armazene F | BIT(SOCK_RCU FREE) sk_add_node_rcu(sk, ...) armazene F | BIT(SOCK_TIMESTAMP)
Após a atualização perdida (lost update), SOCK_RCU_FREE está limpo enquanto o soquete é visível para buscas de recebimento UDP sem bloqueio. sk_destruct() então libera o soquete imediatamente em vez de aguardar um período de graça RCU, enquanto o caminho de recebimento ainda mantém um ponteiro sem referência para ele:
BUG: KASAN: slab-use-after-free in ipv4_pktinfo_prepare+0x30/0x410 Leitura de tamanho 8 no endereço ffff888008806610 pela tarefa exploit/207 CPU: 0 UID: 1000 PID: 207 Comm: exploit Não modificado (Not tainted) 6.12.95+ #1 ipv4_pktinfo_prepare+0x30/0x410 udp_queue_rcv_one_skb+0x51c/0x1180 udp_unicast_rcv_skb+0x109/0x350 ip_protocol_deliver_rcu+0x14b/0x310 ip_local_deliver_finish+0x29d/0x390 ip_local_deliver+0x24d/0x2a0
Apenas adquira o bloqueio do soquete quando SOCK_TIMESTAMP precisar ser definido, para manter o caso comum sem bloqueio (lockless).
Be aware that VulDB is the high quality source for vulnerability data.