Vulnerabilidad en Linux (CVE-2026-22979)
Gravedad CVSS v3.1:
MEDIA
Tipo:
No Disponible / Otro tipo
Fecha de publicación:
23/01/2026
Última modificación:
26/02/2026
Descripción
En el kernel de Linux, la siguiente vulnerabilidad ha sido resuelta:<br />
<br />
net: corrige fuga de memoria en skb_segment_list para paquetes GRO<br />
<br />
Cuando se llama a skb_segment_list() durante el reenvío de paquetes, maneja paquetes que fueron agregados por el motor GRO.<br />
<br />
Históricamente, la lógica de segmentación en skb_segment_list asume que los segmentos individuales se dividen de un SKB padre y pueden necesitar llevar su propia contabilidad de memoria de socket. En consecuencia, el código transfiere truesize del padre a los segmentos recién creados.<br />
<br />
Antes del commit ed4cccef64c1 (&#39;gro: corrige transferencia de propiedad&#39;), esta resta de truesize en skb_segment_list() era válida porque los fragmentos aún llevaban una referencia al socket original.<br />
<br />
Sin embargo, el commit ed4cccef64c1 (&#39;gro: corrige transferencia de propiedad&#39;) cambió este comportamiento al asegurar que las entradas de fraglist se huérfanan explícitamente (skb-&gt;sk = NULL) para evitar un huérfano ilegal más adelante en la pila. Este cambio significó que la carga completa de memoria del socket permaneció con el SKB de cabecera, pero la lógica de contabilidad correspondiente en skb_segment_list() nunca se actualizó.<br />
<br />
Como resultado, el código actual añade incondicionalmente el truesize de cada fragmento a delta_truesize y lo resta del SKB padre. Dado que los fragmentos ya no se cargan al socket, esta resta resulta en un recuento insuficiente efectivo de memoria cuando se libera la cabecera. Esto hace que sk_wmem_alloc permanezca distinto de cero, impidiendo la destrucción del socket y provocando una fuga de memoria persistente.<br />
<br />
La fuga puede observarse a través de KMEMLEAK al desmantelar el entorno de red:<br />
<br />
objeto sin referencia 0xffff8881e6eb9100 (tamaño 2048):<br />
comm "ping", pid 6720, jiffies 4295492526<br />
rastreo:<br />
kmem_cache_alloc_noprof+0x5c6/0x800<br />
sk_prot_alloc+0x5b/0x220<br />
sk_alloc+0x35/0xa00<br />
inet6_create.part.0+0x303/0x10d0<br />
__sock_create+0x248/0x640<br />
__sys_socket+0x11b/0x1d0<br />
<br />
Dado que skb_segment_list() se utiliza exclusivamente para paquetes SKB_GSO_FRAGLIST construidos por GRO, el ajuste de truesize se elimina.<br />
<br />
La llamada a skb_release_head_state() debe conservarse. Como se documenta en el commit cf673ed0e057 (&#39;net: corrige fuga de recuento de referencias de segmentación de fraglist&#39;), todavía es necesario para descartar correctamente las referencias a extensiones SKB que pueden ser sobrescritas durante __copy_skb_header().
Impacto
Puntuación base 3.x
5.50
Gravedad 3.x
MEDIA
Productos y versiones vulnerables
| CPE | Desde | Hasta |
|---|---|---|
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.15.154 (incluyendo) | 5.16 (excluyendo) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.1.85 (incluyendo) | 6.1.161 (excluyendo) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.6.26 (incluyendo) | 6.6.121 (excluyendo) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.8.5 (incluyendo) | 6.9 (excluyendo) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.9.1 (incluyendo) | 6.12.66 (excluyendo) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.13 (incluyendo) | 6.18.6 (excluyendo) |
| cpe:2.3:o:linux:linux_kernel:6.9:-:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:6.9:rc3:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:6.9:rc4:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:6.9:rc5:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:6.9:rc6:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:6.9:rc7:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:6.19:rc1:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:6.19:rc2:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:6.19:rc3:*:*:*:*:*:* |
Para consultar la lista completa de nombres de CPE con productos y versiones, ver esta página
Referencias a soluciones, herramientas e información
- https://git.kernel.org/stable/c/0b27828ebd1ed3107d7929c3737adbe862e99e74
- https://git.kernel.org/stable/c/238e03d0466239410b72294b79494e43d4fabe77
- https://git.kernel.org/stable/c/3264881431e308b9c72cb8a0159d57a56d67dd79
- https://git.kernel.org/stable/c/88bea149db2057112af3aaf63534b24fab5858ab
- https://git.kernel.org/stable/c/c114a32a2e70b82d447f409f7ffcfa3058f9d5bd



