CVE-2026-99123 in Linux
Resumen
por VulDB • 2026-10-28
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:
vsock/virtio: validar la fuente del paquete para sockets conectados
virtio_transport_recv_pkt() busca los sockets primero por la tupla completa de origen y destino, y luego solo por el destino en la tabla vinculada (bound table). El mecanismo alternativo es necesario para los sockets que escuchan y se conectan, pero los sockets permanecen en la tabla vinculada después de connect(), por lo que también puede devolver un socket no en modo escucha.
El mecanismo alternativo no valida la dirección de origen. En TCP_SYN_SENT, una RESPUESTA procedente de una fuente no relacionada puede transicionar el socket víctima a TCP_ESTABLISHED mientras su dirección remota almacenada permanece sin cambios. Los paquetes RW posteriores provenientes de esa fuente se entregan a través del mismo mecanismo alternativo basado solo en el destino.
Esto se reprodujo con procesos carentes de capacidades bajo diferentes UIDs. El atacante descubrió la tupla objetivo mediante sock_diag AF_VSOCK no privilegiado y provocó que el socket víctima leyera 16 bytes elegidos por el atacante; el socket del par previsto leyó 0 de esos 16 bytes.
Se añade vsock_check_source() para validar el transporte, el puerto de origen y el CID de origen frente al par almacenado en un socket no en modo escucha. El transporte local es la excepción porque sus paquetes se generan internamente con VMADDR_CID_LOCAL como su fuente, incluidas las conexiones que utilizan alias de CID.
Se utiliza esta función auxiliar después de lock_sock() en la ruta de recepción virtio.
If you want to get best quality of vulnerability data, you may have to visit VulDB.