Instituto Nacional de ciberseguridad. Sección Incibe
Instituto Nacional de Ciberseguridad. Sección INCIBE-CERT

Vulnerabilidad en el archivo p2m_get_root_pointer() en el sistema operativo invitado de ARM en Xen (CVE-2019-18423)

Gravedad CVSS v3.1:
ALTA
Tipo:
No Disponible / Otro tipo
Fecha de publicación:
31/10/2019
Última modificación:
07/11/2023

Descripción

Se detectó un problema en Xen versiones hasta 4.12.x, permitiendo a usuarios del sistema operativo invitado de ARM causar una denegación de servicio por medio de una hipercall Xmapme_add_to_physmap. p2m-)max_mapped_gfn es utilizado por las funciones p2m_resolve_translation_fault() y p2m_get_entry() para comprobar trama física del invitado. El resto del código en las dos funciones asumirá que existe una tabla root válida y lo comprobará con BUG_ON(). La función p2m_get_root_pointer() ignorará los bits superiores no utilizados de una trama física de invitado. Esto significa que la función p2m_set_entry() renombrará la trama. Sin embargo, p2m-)max_mapped_gfn será actualizada utilizando la trama original. Sería posible establecer p2m-)max_mapped_gfn lo suficientemente alto como para cubrir una trama que conllevaría a p2m_get_root_pointer() a devolver NULL en p2m_get_entry() y p2m_resolve_translation_fault(). Adicionalmente, la comprobación de saneamiento en p2m-)max_mapped_gfn está por un paso permitiendo que el "highest mapped + 1" sea considerado válido. Sin embargo, p2m_get_root_pointer() devolverá NULL. El problema podría desencadenarse con una hipercall especialmente diseñada XENMEM_add_to_physmap{, _batch} seguido de un acceso a una dirección (por medio de hipercall o acceso directo) que pasa la comprobación de saneamiento pero hace que la función p2m_get_root_pointer() devuelva NULL. Un administrador invitado malicioso puede causar un bloqueo del hipervisor, resultando en una Denegación de Servicio (DoS). Xen versión 4.8 y mas recientes son vulnerables. Solo los sistemas Arm son vulnerables. Los sistemas x86 no están afectados.

Productos y versiones vulnerables

CPE Desde Hasta
cpe:2.3:o:xen:xen:*:*:*:*:*:*:arm:* 4.8 (incluyendo) 4.12.1 (incluyendo)
cpe:2.3:o:debian:debian_linux:9.0:*:*:*:*:*:*:*
cpe:2.3:o:debian:debian_linux:10.0:*:*:*:*:*:*:*
cpe:2.3:o:fedoraproject:fedora:29:*:*:*:*:*:*:*
cpe:2.3:o:fedoraproject:fedora:30:*:*:*:*:*:*:*
cpe:2.3:o:fedoraproject:fedora:31:*:*:*:*:*:*:*