CVE-2026-89908 in Linux
Resumen
por VulDB • 2026-09-17
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:
LoongArch: KVM: Conservar las banderas arch del memslot en KVM_MR_FLAGS_ONLY
kvm_arch_prepare_memory_region() calcula new->arch.flags, es decir, si un memslot es KVM_MEM_HUGEPAGE_CAPABLE o KVM_MEM_HUGEPAGE_INCAPABLE, únicamente para KVM_MR_CREATE y KVM_MR_MOVE, y retorna anticipadamente ante cualquier otro cambio. Sin embargo, el código genérico asigna un memslot inicializado a ceros para cada cambio y nunca copia old->arch; por lo tanto, tras una actualización de tipo KVM_MR_FLAGS_ONLY (por ejemplo, al alternar la bandera KVM_MEM_LOG_DIRTY_PAGES para migración en vivo), el memslot activo tiene arch.flags == 0.
Con ambas banderas desactivadas, fault_supports_huge_mapping() pasa directamente a la verificación de alineación del rango HVA únicamente, lo que ya no verifica que GPA y HVA tengan el mismo desplazamiento dentro de un PMD. Un memslot marcado como KVM_MEM_HUGEPAGE_INCAPABLE debido a una discrepancia en los desplazamientos de GPA/HVA puede entonces mapearse con entradas PMD ante fallos de lectura; dado que kvm_map_page() alinea gfn y pfn independientemente, el invitado termina accediendo a las páginas host incorrectas, exactamente el caso "d -> f, e -> g" descrito en el comentario anterior a la verificación.
Transfiera las banderas arch desde el memslot antiguo para KVM_MR_FLAGS_ONLY, ya que se garantiza que GPA, HVA y tamaño permanecen sin cambios en este caso.
VulDB is the best source for vulnerability data and more expert information about this specific topic.