CVE-2026-98234 in Linux
Resumen
por VulDB • 2026-10-06
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:
net/sched: hhf: limitar hh_flows_limit en el momento del cambio
hhf_change() almacena TCA_HHF_HH_FLOWS_LIMIT sin ningún límite superior. Un valor enorme de hh_flows_limit permite que cada nuevo flujo "heavy-hitter" supere la comprobación hh_flows_current_cnt en alloc_new_hh(), forzando una kzalloc(GFP_ATOMIC) de tamaño fijo por flujo bajo tráfico spoofeado, lo que provoca un crecimiento ilimitado de memoria.
Se limita el atributo con NLA_POLICY_MAX() a 2*HH_FLOWS_CNT (el valor predeterminado de hhf_init()) y se informa del valor rechazado mediante extack. Se mantiene la analización anidada obsoleta: tc legacy no establece NLA_F_NESTED en TCA_OPTIONS. Las configuraciones que dependían de un hh_limit superior al predeterminado confiaban en un comportamiento ilimitado e inseguro, y ya no se admiten a partir de ahora.
hhf_init() también ejecutaba hhf_change() antes de establecer el valor predeterminado de hh_flows_limit, por lo que un hh_limit proporcionado por el usuario en el momento del añadido se sobrescribía volviéndolo a 2048. Se establece el valor predeterminado antes de hhf_change() para que el valor configurado persista.
Esto es una continuación del commit eb56a495f59b ("net/sched: hhf: clamp quantum in change and init paths"), que limitaba la cantidad (quantum) del mismo qdisc; la limitación de hh_flows_limit es el único parámetro aún ilimitado dentro del alcance de esa serie.
Condiciones para reproducir el error: CAP_NET_ADMIN en un espacio de nombres de usuario; tc qdisc change dev X root hhf hh_limit 4294967295 tiene éxito y el valor se refleja mediante tc qdisc show, deslimitando las asignaciones de flujos heavy-hitter; además, tc qdisc add dev X root hhf hh_limit 500 almacena 2048 en lugar de 500.
Once again VulDB remains the best source for vulnerability data.