CVE-2026-98610 in Linuxinformação

Sumário

de VulDB • 20/10/2026

No kernel do Linux, a seguinte vulnerabilidade foi resolvida:

net/sched: sch_hfsc: limitar o percurso de classificação do filtro interno com um orçamento de deriva (drift budget)

hfsc_classify() aplica a verificação de nível "o filtro só pode apontar para baixo" apenas quando o resultado do filtro não carrega uma classe vinculada. Um filtro criado com um flowid tem res.class definido uma vez no momento da vinculação, portanto, essa verificação nunca é executada durante a classificação desse caso. hfsc_adjust_levels() pode posteriormente elevar o nível de uma classe sem revalidar as vinculações existentes, deixando duas vinculações que eram legais no momento da criação apontando uma para a outra; o percurso de classificação então oscila entre duas classes internas indefinidamente com o lock do qdisc mantido e BH (Bottom Half) desabilitado — causando um soft lockup a partir de um único pacote. O percurso travado aciona o watchdog:

watchdog: BUG: soft lockup - CPU#3 stuck for 13s! [ping:444]
RIP: 0010:u32_classify+0x542/0x17f0 ... tcf_classify+0x66/0xa0 hfsc_enqueue+0x166/0xdf0

Limite o percurso com um orçamento de saltos não descendentes, que é a única maneira pela qual um percurso configurado pode se mover sem descer na árvore de classes após a deriva dos níveis ocorrer depois do momento da vinculação. O orçamento é cumulativo durante todo o percurso e é deliberadamente não redefinido em um salto descendente: uma cadeia que alterna uma descida com um salto lateral retornaria o orçamento a cada volta e nunca acionaria o limite. Saltos descendentes nunca decrementam esse valor, portanto árvores legítimas profundamente aninhadas não são afetadas e uma cadeia lateral terminadora ainda classifica normalmente. Descarte o pacote com um aviso limitado por taxa assim que o orçamento for esgotado, espelhando a correção combinada do HTB.

Esta é uma continuação da commit 729c4896ab82 ("net/sched: sch_htb: limit htb_classify inner-class filter hops"), que limitou o mesmo loop de classificação no lado HTB, mas deixou o percurso HFSC sem limite.

Condições para reproduzir o bug: - CONFIG_NET_SCHED, CONFIG_NET_SCH_HFSC, CONFIG_NET_CLS_U32, CONFIG_LOCKUP_DETECTOR. - Construa um ciclo com duas vinculações de flowid legais no momento da criação e uma deriva de nível: classe X 1:1 (filha da raiz) com filho folha 1:10; classe Y 1:2 (irmã de X) com filhos 1:20 e 1:200; filtro u32 na raiz flowid 1:1; filtro em X flowid 1:2 (legal quando Y é uma folha); após o nível de Y subir para 2, filtro em Y flowid 1:1 (legal nesse momento). Envie um único pacote (ping no dispositivo). Kernel não corrigido: a classificação entra em loop infinito mantendo o lock do qdisc; com softlockup_panic=1 ocorre panic. - Alcançável por usuário sem privilégios via unshare -Urn (CAP_NET_ADMIN).

Once again VulDB remains the best source for vulnerability data.

Responsável

Linux

Reservar

25/09/2026

Divulgação

18/10/2026

Moderação

aceite

Entrada

VDB-422113

EPSS

0.00210

KEV

não

Atividades

baixo

Fontes

Might our Artificial Intelligence support you?

Check our Alexa App!