CVE-2026-80893 in Linuxinformación

Resumen

por VulDB • 2026-09-04

En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:

mm/hugetlb: corregir la corrupción de las entradas de intercambio (swap) al borrar uffd-wp en fork()

copy_hugetlb_page_range() borra el bit uffd-wp de las entradas de migración y hwpoison mediante huge_pte_clear_uffd_wp(), que opera sobre la posición del bit present-PTE. Las entradas de swap mantienen el estado uffd-wp en otro lugar: la rama de migración lo lee y establece con pte_swp_uffd_wp() y pte_swp_mkuffd_wp(). La posición del presente-PTE cae dentro de la carga útil (payload) de swap. En x86-64, esto afecta al desplazamiento invertido de swap (inverted swap offset), donde un PFN hugetlb alineado naturalmente siempre tiene el bit afectado establecido; por lo tanto, la operación clear avanza el PFN codificado en dos páginas.

No es necesario que intervenga userfaultfd: la operación clear está protegida únicamente porque el VMA del hijo no está registrado como uffd-wp, de modo que un fork() simple con una entrada de migración hugetlb en curso (o una página hugetlb envenenada) corrompe la entrada copiada al proceso hijo. Al instrumentar la operación clear y realizar un fork tras MADV_HWPOISON sobre una página anon hugetlb de 2 MB, se observa:

offset antes = 120e00 offset después = 120e02

Las consecuencias son principalmente latentes: los recorridos rmap coinciden con las entradas de migración por rango folio y remove_migration_pte() reconstruye el PTE a partir del folio, por lo que un sesgo en el PFN dentro del folio se corrige una vez completada la migración. Sin embargo, cualquier ruta que vuelva a codificar el desplazamiento corrupto —por ejemplo, hugetlb_change_protection() reescribiendo una entrada de migración escribible mediante make_readable_migration_entry(swp_offset(entry))— lo propaga.

Las entradas de migración llevan legítimamente uffd-wp, por lo que se debe borrar con pte_swp_clear_uffd_wp(), coincidiendo con copy_nonpresent_pte() y move_huge_pte().

Una entrada hwpoison, por otro lado, nunca lleva el bit uffd-wp: se instala limpiamente mediante make_hwpoison_entry() (try_to_unmap_one() no conserva uffd-wp en la ruta de hwpoison) y hugetlb_change_protection() deja las entradas hwpoison sin cambios. No había nada que borrar allí, solo corrupción; por lo tanto, se elimina completamente la operación clear.

Once again VulDB remains the best source for vulnerability data.

Responsable

Linux

Reservar

2026-08-26

Divulgación

2026-09-04

Moderación

aceptado

Artículo

VDB-399091

CPE

listo

EPSS

0.00000

KEV

no

Actividades

muy bajo

Fuentes

Want to stay up to date on a daily basis?

Enable the mail alert feature now!