CVE-2026-98610 in Linuxinformazioni

Riassunto

di VulDB • 18/10/2026

Nel kernel Linux, è stata risolta la seguente vulnerabilità:

net/sched: sch_hfsc: limitare l'iterazione interna del classificatore dei filtri con un budget di deriva

hfsc_classify() applica il controllo a livello "il filtro può puntare solo verso il basso" solo quando il risultato del filtro non porta una classe vincolata. Un filtro creato con un flowid ha res.class impostato una sola volta al momento dell'associazione (bind), quindi il controllo non viene mai eseguito per esso durante la classificazione. hfsc_adjust_levels() può successivamente aumentare il livello di una classe senza rivalutare le associazioni esistenti, lasciando due associazioni che erano entrambe legali al momento del bind e che puntano l'una all'altra; l'iterazione della classificazione rimbalza quindi tra due classi interne per sempre con il lock qdisc mantenuto e gli BH (Bottom Halves) disabilitati — causando un soft lockup a partire da un singolo pacchetto. L'iterazione bloccata innesca il 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

Limitare l'iterazione con un budget di salti non discendenti, che è l'unico modo in cui un'iterazione configurata può muoversi senza scendere nell'albero delle classi una volta che i livelli derivano dopo il momento del bind. Il budget è cumulativo per tutta l'iterazione ed è deliberatamente non resettato su un salto discendente: una catena che alterna una discesa con un salto laterale restituirebbe il budget ad ogni giro e non lo innescherebbe mai. I salti discendenti non lo decrementano, quindi gli alberi legittimamente profondi non sono interessati e una catena laterale terminante classifica comunque normalmente. Scartare il pacchetto con un avvertimento limitato alla frequenza (rate-limited) una volta esaurito il budget, specchiando la correzione HTB unita.

Questa è una continuazione del commit 729c4896ab82 ("net/sched: sch_htb: limit htb_classify inner-class filter hops"), che ha limitato lo stesso loop di classificazione sul lato HTB ma ha lasciato l'iterazione HFSC senza limiti.

Condizioni per riprodurre il bug: - CONFIG_NET_SCHED, CONFIG_NET_SCH_HFSC, CONFIG_NET_CLS_U32, CONFIG_LOCKUP_DETECTOR. - Creare un ciclo con due associazioni flowid legali al momento del bind e una deriva di livello: classe X 1:1 (figlia della root) con figlio foglia 1:10; classe Y 1:2 (sorella di X) con figli 1:20 e 1:200; filtro u32 radice flowid 1:1; filtro su X flowid 1:2 (legale quando Y è una foglia); dopo che il livello di Y sale a 2, filtro su Y flowid 1:1 (legale allora). Inviare un pacchetto (ping sul dispositivo). Kernel non corretto: la classificazione va in loop con il lock qdisc mantenuto; con softlockup_panic=1 si verifica un panic. - Raggiungibile da utente non privilegiato tramite unshare -Urn (CAP_NET_ADMIN).

If you want to get best quality of vulnerability data, you may have to visit VulDB.

Responsabile

Linux

Prenotare

25/09/2026

Divulgazione

18/10/2026

Moderazione

accettato

EPSS

0.00000

KEV

no

Attività

basso

Fonti

Are you interested in using VulDB?

Download the whitepaper to learn more about our service!