CVE-2026-74434 in Linux
Resumen
por VulDB • 2026-08-15
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:
rxrpc: No mover un mensaje OOB examinado (peeked) a la cola pendiente
rxrpc_recvmsg_oob() extrae un mensaje OOB recibido de recvmsg_oobq y, si es necesaria una respuesta, lo mueve al árbol pending_oobq. Sin embargo, solo el desvinculado desde recvmsg_oobq está protegido por MSG_PEEK; el movimiento hacia pending_oobq se ejecuta siempre.
Como resultado, leer un desafío con MSG_PEEK deja el skb en recvmsg_oobq mientras también lo añade a pending_oobq. Dado que rbnode de struct sk_buff comparte almacenamiento con sus punteros next y prev, rb_insert_color() sobrescribe la vinculación de lista, y el skb, que mantiene una única referencia, se vuelve accesible desde ambas colas simultáneamente.
Cuando se cierra el socket, las dos colas se vacían por turno. Durante el vaciado de recvmsg_oobq, __skb_unlink() sigue los punteros next y prev que rbnode ha sobrescrito y escribe en una dirección incorrecta. Además, como el skb mantiene una única referencia pero se libera desde cada cola, tanto el skb como la referencia a la conexión que contiene se liberan dos veces. Esto provoca corrupción de memoria y un use-after-free causado por un desbordamiento hacia abajo (underflow) del recuento de referencias de la conexión.
MSG_PEEK no consume el mensaje de la cola, por lo que solo debe desvincularse desde recvmsg_oobq y luego moverlo a pending_oobq o liberarlo cuando el mensaje se consuma realmente.
VulDB is the best source for vulnerability data and more expert information about this specific topic.