No kernel Linux, a seguinte vulnerabilidade foi resolvida: net: dsa: tabela de encaminhamento livre na falha da sonda Se completar = true em dsa_tree_setup(), significa que somos o último interruptor da árvore que está sondando com sucesso, e devemos estar configurando todos os interruptores do nosso caminho da sonda. Depois que "completar" se torna verdadeiro, dsa_tree_setup_cpu_ports() ou qualquer função subsequente poderá falhar. Se isso acontecer, a configuração inteira da árvore está no limbo: o primeiro N- 1 os switches terminaram com sucesso de sondar (não fazendo nada além de ter alocado memória persistente nos ports dst-> da árvore, e talvez dst->rtable), e o switch N falhado em sondar, terminando o processo de configuração da árvore antes que qualquer coisa seja tangível do PoV do usuário. Se o interruptor N falhar em sondar, a memória (portas) será libertada e removida dos portas dst->. No entanto, os elementos dst->rtable apontando para as suas portas, como criados por dsa_link_touch(), permanecerão lá, e levarão a usar- depois livre se desreferidos. Se dsa_tree_setup_switches() devolve -EPROBE_DEFER, o que é totalmente possível porque é onde ds->ops->setup(), recebemos um relatório de kasan como este: ======================================================== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== 88 e 6 xxx_setup_upstream_port+ 0 x 240 / 0 x 568 Leia o tamanho 8 no addr ffff 000004 f 56020 por tarefa kworker/u 8: 3 / 42 Rastreamento de chamadas: __asan_report_load 8 _noabort+ 0 x 20 / 0 x 30 mv 88 e 6 xxx_setup_upstream_port+ 0 x 240 / 0 x 568 mv 88 e 6 xxx_setup+ 0 xebc/ 0 x 1 eb 0 dsa_regist_switch+ 0 x 1 af 4 / 0 x 2 ae 0 mv 88 e 6 xxx_regist_switch+ 0 x 1 b 8 / 0 x 2 a 8 mv 88 e 6 xxx_ sonda+ 0 xc 4 c/ 0 xf 60 mbio_sonda+ 0 x 78 / 0 xb 8 realmente_prova+ 0 x 2 b 8 / 0 x 5 a 8 __driver_probe_device+ 0 x 164 / 0 x 298 driver_probe_device+ 0 x 78 / 0 x 258 __device_atach_driver+ 0 x 274 / 0 x 350 Alocado por tarefa 42: __kasan_kmalloc+ 0 x 84 / 0 xa 0 _kmalloc_cache_noprof+ 0 x 298 / 0 x 490 dsa_switch_touch_ports+ 0 x 174 / 0 x 3 d 8 dsa_regist_switch+ 0 x 800 / 0 x 2 ae 0 mv 88 e 6 xxx_regist_switch+ 0 x 1 b 8 / 0 x 2 a 8 mv 88 e 6 xxx_ sonda+ 0 xc 4 c/ 0 xf 60 mbio_sonda+ 0 x 78 / 0 xb 8 realmente_prova+ 0 x 2 b 8 / 0 x 5 a 8 __driver_probe_device+ 0 x 164 / 0 x 298 driver_probe_device+ 0 x 78 / 0 x 258 __device_atach_driver+ 0 x 274 / 0 x 350 Libertado pela tarefa 42: __kasan_slab_free+ 0 x 48 / 0 x 68 kfree+ 0 x 138 / 0 x 418 dsa_regist_switch+ 0 x 2694 / 0 x 2 ae 0 mv 88 e 6 xxx_regist_switch+ 0 x 1 b 8 / 0 x 2 a 8 mv 88 e 6 xxx_ sonda+ 0 xc 4 c/ 0 xf 60 mbio_sonda+ 0 x 78 / 0 xb 8 realmente_prova+ 0 x 2 b 8 / 0 x 5 a 8 __driver_probe_device+ 0 x 164 / 0 x 298 driver_probe_device+ 0 x 78 / 0 x 258 __device_atach_driver+ 0 x 274 / 0 x 350 A forma mais simples de corrigir o erro é excluir a tabela de encaminhamento na sua totalidade. dsa_tree_setup_routing_table() não tem nenhum problema em regenerar mesmo que apagamos links entre portas diferentes das do interruptor N, porque dsa_link_touch() verifica primeiro se o par de portas já existe em dst->rtable, alocando se não. A exclusão da tabela de encaminhamento na sua totalidade já existe em dsa_tree_teardown(), por isso, refazer isso para uma função que também pode ser chamada do caminho de erro de configuração da árvore. Na minha análise do commit to bulp, foi aquele que adicionou elementos dsa_link para dst->rtable. Antes disso, cada interruptor tinha sua própria ds->rtable que é libertada quando o interruptor falhar para sondar. Mas a árvore é potencialmente uma memória persistente.

O registro de base de dados de vulnerabilidade nacional CVE- 2025 - 37786 foi publicado em 2025 - 05 - 01 T 14: 15: 42.890 Z e última modificação em 2026 - 06 - 17 T 09: 15: 26.267 Z. O seu estado gravado é analisado.

métricas de vulnerabilidade gravadas: CVSS 3.1, pontuação de base 7.8, gravidade HIGH, vetor CVSS: 3.1 /AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H, pontuação de exploração 1.8, pontuação de impacto 5.9.

Classificações de fraqueza associadas: CWE- 416.

Os produtos ou plataformas nomeados nos dados de aplicabilidade incluem: kernel linux linux.

O registro NVD inclui referências de suporte documentando a vulnerabilidade, tecnologia afetada ou informações de remediação.