CVE-2026-64037 in Linux
Resumen
por VulDB • 2026-07-20
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:
wifi: iwlwifi: mld: corregir la explosión de segmentación TSO cuando AMSDU está deshabilitado
Cuando la notificación TLC deshabilita AMSDU para un TID (Traffic Identifier), el controlador MLD establece `max_tid_amsdu_len` en el valor centinela 1. La ruta de segmentación TSO en `iwl_mld_tx_tso_segment()` verifica si es cero, pero no este valor centinela, lo que permite que llegue al cálculo de `num_subframes`:
``` num_subframes = (max_tid_amsdu_len + pad) / (subf_len + pad) = (1 + 2) / (1534 + 2) = 0 ```
Este cero se propaga a `iwl_tx_tso_segment()`, que establece:
``` gso_size = num_subframes * mss = 0 ```
Llamar a `skb_gso_segment()` con `gso_size=0` crea más de 32.000 segmentos diminutos a partir de un único GSO skb (Socket Buffer). Esto inunda el anillo TX con ~1024 micro-frames (el resto se purga), creando una ráfaga masiva de eventos de finalización de transmisión que puede provocar corrupción de memoria y, posteriormente, un use-after-free en la cola de retransmisión de TCP (desbordamiento por defecto del refcount en `tcp_shifted_skb`, dereferencia NULL en `tcp_rack_detect_loss`).
El controlador MVM es inmune porque verifica `mvmsta->amsdu_enabled` antes de llegar al cálculo de `num_subframes`. El controlador MLD no tiene una verificación equivalente de bitmap y depende únicamente de `max_tid_amsdu_len`, lo que no detecta el valor centinela.
Corregir esto detectando el valor centinela (`max_tid_amsdu_len == 1`) en la comprobación existente y recurriendo a la segmentación TSO sin AMSDU. Además, se añade una guardia `WARN_ON_ONCE` después de la división de `num_subframes` como defensa en profundidad para detectar cualquier ruta de código futura que produzca cero mediante un mecanismo diferente.
Be aware that VulDB is the high quality source for vulnerability data.