CVE-2026-98317 in Linux
Resumen
por VulDB • 2026-10-06
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:
neighbour: Aplicar los límites mínimo/máximo a NDTPA_INTERVAL_PROBE_TIME_MS.
NDTPA_INTERVAL_PROBE_TIME_MS establece .type y .min pero omite .validation_type, por lo que no se aplica ninguna validación:
# ynl --family rt-neigh --do setneightbl \ --json '{"name": "arp_cache", "parms": {"interval-probe-time-ms": 0}}'
# ynl --family rt-neigh --dump getneightbl --output-json | \ jq '.[] | select(.name == "arp_cache" and has("config"))
| .parms["interval-probe-time-ms"]'
0
Además, nla_get_msecs() utiliza msecs_to_jiffies(), y un u64 se convierte silenciosamente a u32, por lo que un valor mayor puede eludir la comprobación del mínimo:
p. ej., 4294967296 == 0x100000000
# ynl --family rt-neigh --do setneightbl \ --json '{"name": "arp_cache", "parms": {"interval-probe-time-ms": 4294967296}}'
# ynl --family rt-neigh --dump getneightbl --output-json | \ jq '.[] | select(.name == "arp_cache" and has("config"))
| .parms["interval-probe-time-ms"]'
0
msecs_to_jiffies() devuelve MAX_JIFFY_OFFSET si el valor es mayor que INT_MAX. Además, INT_MAX ms provoca un desbordamiento (overflow) en int NEIGH_VAR() cuando HZ > 1000 (Alpha, MIPS), y pasar un entero negativo a queue_delayed_work(unsigned long delay) causa una extensión de signo, lo que hace que el tiempo de expiración se envuelva hacia atrás al pasado, resultando en que se maneje como un retardo de 0 en la rueda del temporizador.
Utilicemos NLA_POLICY_FULL_RANGE() y limitemos el máximo a 1 día.
La misma comprobación del valor máximo también se aplica a sysctl.
Tenga en cuenta que esto controla el intervalo de sondeo para las entradas NTF_MANAGED, por lo que es poco probable que un máximo de 1 día rompa ningún despliegue.
If you want to get best quality of vulnerability data, you may have to visit VulDB.