CVE-2026-52943
net: skbuff: corregir la referencia zerocopy faltante en los helpers de pskb_carve
- Publicado
- 24 jun 2026
- Actualizado
- 8 sept 2026
- Asignación de CNA
- Linux
- Evidencia observada
- 17 ago 2026
CVSS primario
nvd · CVSS 3.1
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:HBajo · próximos 30 días
- Percentil
- 15,1 %
- Fecha del modelo
- 21 sept 2026
EPSS es una estimación estadística, no una certeza o una medida de impacto. Combínelo con CVSS, estado KEV, exposición y su entorno.
Resumen
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: net: skbuff: corrige la referencia zerocopy faltante en los helpers pskb_carve pskb_carve_inside_header() y pskb_carve_inside_nonlinear() copian ambos el antiguo encabezado skb_shared_info en un nuevo búfer mediante memcpy(), que incluye el puntero destructor_arg (uarg) para los skbs MSG_ZEROCOPY. Ninguna de las dos funciones llama a net_zcopy_get() para el nuevo shinfo, creando un titular no contabilizado: cada skb_shared_info con destructor_arg establecido llamará a skb_zcopy_clear() una vez al liberarse, pero el net_zcopy_get() correspondiente nunca se llamó para la nueva copia. Las llamadas repetidas llevan uarg->refcnt a cero prematuramente, liberando ubuf_info_msgzc mientras los skbs TX aún mantienen punteros destructor_arg vivos. KASAN informa de use-after-free en un ubuf_info_msgzc liberado: BUG: KASAN: slab-use-after-free in skb_release_data+0x77b/0x810 Read of size 8 at addr ffff88801574d3e8 by task poc/220 Call Trace: skb_release_data+0x77b/0x810 kfree_skb_list_reason+0x13e/0x610 skb_release_data+0x4cd/0x810 sk_skb_reason_drop+0xf3/0x340 skb_queue_purge_reason+0x282/0x440 rds_tcp_inc_free+0x1e/0x30 rds_recvmsg+0x354/0x1780 __sys_recvmsg+0xdf/0x180 Allocated by task 219: msg_zerocopy_realloc+0x157/0x7b0 tcp_sendmsg_locked+0x2892/0x3ba0 Freed by task 219: ip_recv_error+0x74a/0xb10 tcp_recvmsg+0x475/0x530 El skb que consume el acceso tardío aún referenciaba el mismo uarg mediante shinfo->destructor_arg copiado por pskb_carve_inside_nonlinear() sin un incremento de refcount. Se ha verificado que esto es explotable de forma fiable: una prueba de concepto funcional logra una escalada completa de privilegios a root desde un usuario local sin privilegios en una configuración de kernel predeterminada. La corrección sigue el patrón de pskb_expand_head(), que tiene la misma estructura memcpy/clonada. Para pskb_carve_inside_header(), net_zcopy_get() se coloca después de que skb_orphan_frags() tenga éxito, por lo que la ruta de error de orfanización no necesita limpieza. Para pskb_carve_inside_nonlinear(), net_zcopy_get() se coloca después de todos los puntos de fallo y justo antes de skb_release_data(), por lo que ninguna ruta de error necesita limpieza en absoluto, coincidiendo más estrechamente con pskb_expand_head() y evitando la necesidad de un net_zcopy_put() de equilibrio.
Fuentes
1Uso responsable
Utilice información sobre vulnerabilidades solo en sistemas de su propiedad o que esté autorizado a probar. Kitploit enlaza con metadatos de investigación pública y no almacena código de explotación ni cargas útiles maliciosas.