Descripción
En el kernel de Linux, se resolvió la siguiente vulnerabilidad: KVM: arm64: Hacer que la invalidación de VNCR participe en el reintento de invalidación de la MMU Una invalidación de TLB de VNCR puede ocurrir en una vCPU mientras otra vCPU está generando un fallo de página sobre esa misma página. Si esto no se maneja correctamente, puede producirse el siguiente escenario: - la vCPU A recorre las PT para traducir VNCR - antes de que la vCPU A pueda obtener el bloqueo de la MMU para insertar la TLB, la vCPU B actualiza las PT de S1 con una entrada no válida y emite un TLBI S1E2 para esa VA - la vCPU A inserta la TLB de algo que ahora no es válido Este no es un problema nuevo, y en S2 se maneja haciendo que el notificador de la MMU incremente mmu_invalidate_seq en la invalidación para que el fallo pueda reproducirse. Aquí se puede hacer algo similar, extendiendo invalidate_vncr_va() para actualizar el mismo contador, indicando claramente que el contexto cambió. Esto es seguro, ya que la invalidación siempre ocurre manteniendo el bloqueo de la MMU para escritura, y el número de secuencia se toma antes de recorrer S1.
Qué hacer
Revisa si usas el producto afectado y en qué versión, y aplica la actualización o la mitigación que indique el aviso del fabricante. CISA no ha confirmado que se esté explotando; si eso cambia, esta ficha pasa a «explotada» y te avisamos en el boletín.
Versiones afectadas
- Linux Afectadas: 4ffa72ad8f37e73bbb6c0baa88557bcb4fd39929 y anteriores a d8580e7aa189b0c6c5bb4d94b8352728a7c35bbd · 4ffa72ad8f37e73bbb6c0baa88557bcb4fd39929 y anteriores a 11ee3faab4f1755d126bead9f882e75a7a677860 · 4ffa72ad8f37e73bbb6c0baa88557bcb4fd39929 y anteriores a 2b7324f3a0c1072b9d578b8d42f199506753f26e
- Linux Afectadas: 6.16 No afectadas: 6.18.51 · 7.2.5 · 7.3
Según el registro de la vulnerabilidad en CVE.org, tal como lo publicó el fabricante. Confirma tu versión exacta en el aviso del fabricante.
Referencias
- Referencia en git.kernel.orggit.kernel.org/stable/c/d8580e7aa189b0c6c5bb4d94b8352728a7c35bbd
- Referencia en git.kernel.orggit.kernel.org/stable/c/11ee3faab4f1755d126bead9f882e75a7a677860
- Referencia en git.kernel.orggit.kernel.org/stable/c/2b7324f3a0c1072b9d578b8d42f199506753f26e
Ver el texto original en inglés (CVE.org)
KVM: arm64: Make VNCR invalidation participate in MMU invalidation retry
In the Linux kernel, the following vulnerability has been resolved: KVM: arm64: Make VNCR invalidation participate in MMU invalidation retry A VNCR TLB invalidation can occur on one vcpu while another vcpu is faulting in this same page. Without correctly handling this, we can end up with the following scenario: - vcpu A walks the PTs to translate VNCR - before vcpu A is able to grab the MMU lock to insert the TLB, vcpu B updates the S1 PTs with an invalid entry, and issues a TLBI S1E2 for this VA - vcpu A inserts the TLB for something that is now invalid This isn't a new problem, and we manage S2 by having the MMU notifier to bump up mmu_invalidate_seq on invalidation so that the fault can be replayed. We can perform something similar here, and extend invalidate_vncr_va() to update the same counter, clearly indicating that the context has changed under our feet. This is safe as the invalidation always happen while holding the MMU lock for write, and that we sample the sequence number before walking S1.