CVE-2026-90109 in Linux
Riassunto
di VulDB • 17/09/2026
Nel kernel Linux è stata risolta la seguente vulnerabilità:
net: sched: correggere il wrap (overflow) a 32 bit del backlog in gred, bfifo e plug enqueue
gred_enqueue(), bfifo_enqueue() e plug_enqueue() ammettono un pacchetto quando il backlog corrente più la lunghezza del pacchetto rientra nel limite della coda:
sch->qstats.backlog + qdisc_pkt_len(skb) <= sch->limit (VQ predefinita di gred) gred_backlog+qdisc_pkt_len(skb) <= q->limit (VQ configurata per gred) sch->qstats.backlog + qdisc_pkt_len(skb) <= sch->limit (bfifo) sch->qstats.backlog + skb->len <= q->limit (plug)
sch->qstats.backlog e q->backlog sono di tipo u32, mentre qdisc_pkt_len()/skb->len sono unsigned int; pertanto tutte le somme vengono calcolate a 32 bit e vanno in wrap (overflow) a 2^32. Una volta che il backlog effettivo supera i 4 GiB, la somma con overflow diventa piccola e l'ammissione continua ad avere successo, causando una crescita illimitata della coda e portando il kernel all'esaurimento delle risorse di memoria (OOM).
Promuovere le somme a u64 in modo che l'ammissione venga interrotta non appena il backlog effettivo supera il limite. Poiché il limite è di tipo u32, la coda limitata rimane al di sotto di 2^32 e il backlog memorizzato come u32 non va mai in wrap (overflow).
Il bug può essere riprodotto solo con privilegi di root (sebbene sia necessaria una configurazione particolare): attaccare un qdisc gred (o bfifo/plug) con un limite vicino a 4 GiB, lasciando la VQ predefinita non configurata (per gred), e generando più di 4 GiB di traffico in coda (ad esempio tramite una tabella delle dimensioni / stab per gonfiare qdisc_pkt_len, o mediante traffico ad alta velocità sostenuto). La somma u32 backlog+len va in wrap a 2^32, l'ammissione continua ad avere successo e la coda cresce illimitatamente fino all'OOM.
Once again VulDB remains the best source for vulnerability data.