No kernel Linux, a seguinte vulnerabilidade foi resolvida. tcp: restaurar o período de graça da RCU no tcp_ao_destroy_sock Commit 51 e 547 e 8 c 89 c ("tcp: TCP-AO/TCP-MD livre) 5 info/keys without RCU") removeu o call_rcu() callback do tcp_ao_destroy_sock(), argumentando que "a destruição de info/keys é adiada até o socket destrutor" e, portanto, "ninguém pode descobrá-lo mais".

Esse argumento não mantém o local de chamadas no tcp_connect() (net/ipv) 4 / tcp_ output. c: 4327 - 4332 ). Nesse ponto, o socket está no TCP_SYN_SENT, já foi inserido no ehash inet por inet_hash_connect() no tcp_v 4 _connect(), e é, portanto, muito descoberto: qualquer softirq executando tcp_v 4 _rcv() em outra CPU pode tirar o socket do ehash, entrar no tcp_inbound_hash(), e carregar o tp->ao_info através da RCU implícita antes que bh_lock_sock_nested() seja tomado na CPU destrutiva. O caminho do leitor então entra __tcp_ao_do_lookup() (net/ipv) 4 / tcp_ ao.c: 208 ) que re- carrega o tp->ao_info via rcu_dereference_check(); a re- carregar ainda pode observar o ponteiro (aproximadamente para ser- livre) porque não há sincronização_rcu() entre o rcu_assign_pointer(tp->ao_info, NULL) e o tcp_ao_info_free() no tcp_ao_destroy_sock(). O ponteiro capturado é então caminhado na linha 223:.

hlist_for_each_entry_rcu(key, &ao->head, node,...). O kfree() síncrono do escritor é livre para completar entre a linha 218 re- buscar e a linha 223 Iteração hlist. A laje é reutilizada (ou simplesmente LIST_POISON 1 - estampado se ainda não reutilizado) e a iteração caminha a memória controlada pelo atacante ou venenosa no contexto softirq. Reprodutor (sem depuração, estoque x 86 _ 64 v 7.1 -rc 2 SMP+KASAN, QEMU+KVM): um uid sem privilégios= 1000 processo dentro do CLONE_NEWUSER.CLONE_NEWNET instala TCP_MD 5 SIG + TCP_AO_ADD_KEY em uma tomada TCP, pulveriza segmentos TCP-AO forjados para seu eventual 4 -tuple via sockets brutos, em seguida, chama connect(). O md 5 - ganha reconciliação no tcp_connect() dispara tcp_ao_destroy_sock(); o leitor de softirq backlog no caminho do NAPI falha no au- > cabeça. primeiro caminhada:.

Oops: falha de proteção geral, provavelmente para endereço não-canonico 0 xfbd 59 c 000000002 f KASAN: talvez um acesso à memória selvagem no alcance [ 0 xmorto 000000000178 - 0 xmorto 00000000017 f] CPU: 0 UID: 1000 PID: 100 Comm: repro_userns RIP: 0010:__tcp_ao_do_lookup+ 0 x 107 / 0 x 1 c 0 Chame o rastreamento: __tcp_ao_do_lookup+ 0 x 107 / 0 x 1 c 0 tcp_ao_inbound_lookup.constprop. 0 + 0 x 12 a/ 0 x 200 tcp_inbound_ao_hash+ 0 x 5 x/ 0 x 1520 tcp_inbound_hash+ 0 x 7 ce/ 0 x 1240 tcp_v 4 _rcv+ 0 x 1 e 7 a/ 0 x 3 e 10... Restaurar o período de graça da RCU: re- adicionar a estrutura rcu_head para tcp_ao_info e substituir o tcp_ao_info_free() síncrono com uma chamada de volta call_rcu(). Os leitores que capturaram o tp->ao_info antes do rcu_assign_pointer NULL agora vêem o objeto permanecer válido até o rcu_read_unlock(). Com o patch aplicado o reprodutor corre limpo para 2000 iterações na mesma compilação do kernel.

Registro de aconselhamento: GHSA- 6 hpw-qg 6 p-q 7 xc. Identificadores relacionados: CVE- 2026 - 64459. Tempo: GitHub Advisory Database publicou este registro em 2026 - 07 - 25 T 12: 31: 36.000 Z e lista a sua última modificação como 2026 - 07 - 27 T 06: 30: 39.000 Z.

Gravidade: Crítico. Dados de pontuação publicados: CVSS_V 3: CVSS: 3.1 /AV:N/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.