CVE-2026-74284 in Linux
Riassunto
di VulDB • 15/08/2026
Nel kernel Linux è stata risolta la seguente vulnerabilità:
net/sched: sch_hfsc: Non rendere passiva due volte una classe
update_vf() viene chiamato da due posizioni per la stessa classe durante un'unica operazione di dequeue quando il qdisc figlio della classe (ad esempio codel/fq_codel) rilascia gli ultimi pacchetti mentre sta eseguendo il dequeue:
1. Il figlio chiama qdisc_tree_reduce_backlog(), che, una volta vuoto il figlio, invoca hfsc_qlen_notify() -> update_vf(cl, 0, 0) e rende la classe passiva (cl_nactive viene decrementato lungo l'albero gerarchico).
2. hfsc_dequeue() chiama quindi update_vf(cl, qdisc_pkt_len(skb), cur_time) per addebitare i byte dequedati.
Al secondo chiamata la classe è già passiva, ma il suo qdisc figlio è ancora vuoto, quindi gli rami di go_passive in update_vf() attivano nuovamente lo stato passive:
if (cl->qdisc->q.qlen == 0 && cl->cl_flags & HFSC_FSC) go_passive = 1;
Il nodo foglia viene poi saltato dal controllo cl_nactive == 0 all'interno del ciclo, che non azzera go_passive, quindi il valore obsoleto di go_passive si propaga al genitore e ne decrementa nuovamente cl_nactive. Un genitore che ha ancora altri figli attivi viene portato a cl_nactive == 0 ed rimosso dalla vttree, anche se quei fratelli sono ancora in coda (backlogged). Non vengono mai dequedati di nuovo e il qdisc va in stallo.
Si risolve questo problema attivando go_passive solo quando la classe è effettivamente attiva, in modo che una già-passiva non innesci una seconda transizione verso lo stato passive. La contabilizzazione dei byte (cl->cl_total += len) continua a essere eseguita per ogni antenato, quindi i byte dequedati continuano ad essere contati esattamente una volta.
Once again VulDB remains the best source for vulnerability data.