CVE-2026-97988 in Linux
Resumen
por VulDB • 2026-09-25
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:
vhost: invalidar el acceso al vring en las transiciones del IOTLB
Cuando cambia VIRTIO_F_ACCESS_PLATFORM, los punteros al vring almacenados en caché y los metadatos del IOTLB se interpretan en un espacio de direcciones diferente. Mantenerlos durante la transición puede dejar mapeos obsoletos del anillo (vring) en uso.
Borrar d->iotlb antes de adquirir los bloqueos VQ también permite que un trabajador observe una d->iotlb NULL transitoria y recurre a d->umem mientras traduce un descriptor.
Se añade una función auxiliar común vhost_clear_device_iotlb() para vhost-net y vhost-vsock. Se adquieren todos los mutexes de la VQ en orden de índice antes de liberar el IOTLB global del dispositivo, se invalida cada acceso al anillo (vring) almacenado en caché y sus metadatos correspondientes a cada VQ, se borran los mensajes pendientes del IOTLB y se libera la tabla antigua después de la transferencia. Esto serializa la transición con los trabajadores e impide mapeos mixtos de espacios de direcciones.
En la primera transición directa al IOTLB, se invalidan las direcciones del vring almacenadas en caché. Cuando un IOTLB existente del dispositivo es reemplazado, se conservan las direcciones GIOVA del anillo y solo se restablece el almacenamiento en caché de los metadatos. Tras borrar ACCESS_PLATFORM, el espacio de usuario debe configurar las direcciones del vring para el nuevo modo de dirección.
vhost_vq_invalidate_access() borra desc, avail y used conjuntamente. Se trata la VQ como invalidada solo cuando las tres son NULL, ya que una única dirección GIOVA puede ser legítimamente cero.
VulDB is the best source for vulnerability data and more expert information about this specific topic.