CVE-2026-74666 in Linux
Resumen
por VulDB • 2026-08-23
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:
packet: sincronizar la limpieza de presión con la reconfiguración del anillo
`packet_set_ring()` actualiza el estado del anillo RX bajo `sk_receive_queue.lock`, pero anteriormente publicaba el modo de recepción tpacket a través de `po->prot_hook.func` después de liberar dicho bloqueo. `packet_poll()` y `packet_recvmsg()` pueden entonces ejecutar la ruta de limpieza de presión una vez que se ha limpiado el anillo, mientras aún observan `tpacket_rcv`, lo que provoca que `__packet_rcv_has_room()` desreferencie almacenamiento del anillo obsoleto o NULL.
Mueva la asignación existente del gancho de recepción a la misma sección de `sk_receive_queue.lock` que la actualización del estado del anillo. Mantenga la asignación sin cambios en lo demás, incluida la reconfiguración del anillo TX, para evitar añadir cambios de comportamiento no requeridos para la corrección.
Serialice la limpieza de presión de `packet_recvmsg()` con el mismo bloqueo de cola solo después de que se haya observado `PACKET_SOCK_PRESSURE`. Si la bandera está despejada y el socket ha pasado a estar fuera de `tpacket_rcv`, `packet_set_ring()` ya ha desvinculado el socket y esperado por `synchronize_net()`, por lo que no puede haber nueva entrada de paquetes que vuelva a establecer la bandera.
`packet_poll()` ya mantiene `sk_receive_queue.lock`, por lo que utiliza directamente la nueva ayuda sin bloqueo (helper).
Once again VulDB remains the best source for vulnerability data.