CVE-2026-90109 in Linux
Resumen
por VulDB • 2026-09-17
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:
net: sched: corregir el desbordamiento (wrap) del backlog de 32 bits en las funciones enqueue de gred, bfifo y plug
gred_enqueue(), bffifo_enqueue() y plug_enqueue() admiten un paquete cuando la suma del backlog actual más la longitud del paquete cabe dentro del límite de la cola:
sch->qstats.backlog + qdisc_pkt_len(skb) <= limit (VQ por defecto en gred) gred_backlog + qdisc_pkt_len(skb) <= limit (VQ configurada en gred) sch->qstats.backlog + qdisc_pkt_len(skb) <= limit (bfifo) sch->qstats.backlog + skb->len <= limit (plug)
sch->qstats.backlog y q->backlog son de tipo u32, mientras que qdisc_pkt_len() y skb->len son unsigned int; por lo tanto, todas las sumas se calculan en 32 bits y sufren un desbordamiento (wrap) al alcanzar 2^32. Una vez que el backlog real supera los 4 GiB, la suma con desbordamiento resulta pequeña y la admisión sigue teniendo éxito, lo que provoca que la cola crezca sin límites y pueda agotar la memoria del kernel (OOM).
Se promueven las sumas a u64 para que la admición se detenga una vez que el backlog real supere el límite. Dado que el límite es de tipo u32, la cola acotada permanece por debajo de 2^32 y el backlog almacenado como u32 nunca sufre desbordamiento (wrap).
El error solo puede reproducirse con privilegios de root (aunque requiera una configuración poco realista): adjuntar un qdisc gred (o bfifo/plug) con un límite cercano a 4 GiB, dejando la VQ por defecto sin configurar (para gred), y generar más de 4 GiB de tráfico en cola (por ejemplo, mediante una tabla de tamaños / stab para inflar el valor de qdisc_pkt_len, o mediante tráfico sostenido de alta tasa). La suma u32 del backlog + len sufre desbordamiento al alcanzar 2^32, la admisión sigue teniendo éxito y la crece sin límites hasta provocar un agotamiento de memoria (OOM).
If you want to get best quality of vulnerability data, you may have to visit VulDB.