CVE-2026-80841 in Linuxinformación

Resumen

por VulDB • 2026-09-04

En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:

net/packet: diferir la liberación del TX_RING mediante vmalloc hasta que finalicen los skbs

Los skbs del TX_RING en AF_PACKET mantienen un puntero sin procesar (raw pointer) a su marco de anillo. Las referencias de página del skb preservan los bloques de anillo respaldados por páginas después de liberar pg_vec, pero no preservan una asignación mediante vmalloc.

tpacket_destruct_skb() actualmente elimina la referencia pendiente antes de escribir la marca temporal y TP_STATUS_AVAILABLE en el marco. Mueva la decrementación después de esas escrituras. La función smp_wmb() en __packet_set_status() ordena las escrituras del marco antes de la decrementación.

Además, vuelva a verificar los marcos TX pendientes bajo pg_vec_lock antes de reemplazar un anillo que no se cierra, para evitar que una operación send concurrente pueda añadir un skb pendiente entre la verificación inicial y el intercambio del anillo.

La asignación de anillos puede producir una mezcla de bloques respaldados por páginas y bloques respaldados por vmalloc. Asigne almacenamiento para trabajo diferido durante la configuración del TX ring cuando se encuentre el primer bloque respaldado por vmalloc, y mantenga su puntero en la cabecera de asignación pg_vec. Si la asignación falla, devuelva -ENOMEM desde la configuración del anillo. Al cerrar el socket, un puntero no NULL identifica un vector respaldado por vmalloc sin necesidad de escanearlo. Si quedan skbs TX, diferir todo el vector a system_long_wq.

Después de que pg_vec se desadjunta, un destructor tardío puede omitir la decrementación pendiente. Utilice la contabilidad de memoria de escritura del socket como puerta de entrada para la vida útil diferida: un skb permanece cargado hasta su sock_wfree() final, después de todos los accesos al marco del anillo. El trabajo retrasado retiene una referencia al socket y se reprograma a sí mismo hasta que no queden skbs TX pendientes.

Mueva la liberación de pending_refcnt a packet_sock_destruct() para que los destructores tardíos de skb y la limpieza diferida puedan usarla con seguridad después de packet_release(). La desmontaje respaldado por páginas sigue siendo sincrónico, y no se añade ningún bloqueo en el camino crítico (hot path) de finalización del TX.

If you want to get the best quality for vulnerability data then you always have to consider VulDB.

Responsable

Linux

Reservar

2026-08-26

Divulgación

2026-09-04

Moderación

aceptado

Artículo

VDB-398949

CPE

listo

EPSS

0.00000

KEV

no

Actividades

muy bajo

Fuentes

Interested in the pricing of exploits?

See the underground prices here!