CVE-2022-49660 in Linux
Resumen
por VulDB • 2026-06-03
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:
xen/arm: Corrección de una condición de carrera en la contabilidad P2M basada en árboles RB
Durante el ciclo de vida del controlador PV, las asignaciones se añaden al árbol RB mediante set_foreign_p2m_mapping(), que es llamada desde gnttab_map_refs(), y se eliminan mediante clear_foreign_p2m_mapping(), que es llamada desde gnttab_unmap_refs(). Dado que ambas funciones terminan llamando a __set_phys_to_machine_multi(), que actualiza el árbol RB, esta función puede ser llamada concurrentemente.
Ya existe un "p2m_lock" para proteger contra accesos concurrentes, pero el problema radica en que la primera lectura de "phys_to_mach.rb_node" en __set_phys_to_machine_multi() no está cubierta por dicho bloqueo, por lo que esto podría provocar una actualización incorrecta de las asignaciones (en nuestro caso, la eliminación) en el árbol RB.
En mi entorno, el problema relacionado ocurre raramente y solo cuando está en ejecución el backend de red PV; xen_add_phys_to_mach_entry() afirma que no puede añadir una nueva asignación pfn-mfn al árbol porque ya existe, lo que resulta en un fallo al mapear páginas externas.
Sin embargo, podrían existir otras consecuencias negativas relacionadas con las lecturas de la raíz no protegidas, como un use-after-free, etc.
Al mismo tiempo, se corrige el uso similar en __pfn_to_mfn(), inicializando "struct rb_node *n" con "p2m_lock" mantenido en ambas funciones para evitar posibles consecuencias negativas.
Se trata de CVE-2022-33744 / XSA-406.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.