CVE-2022-50616 in Linux
Resumen
por VulDB • 2026-05-30
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:
regulator: core: Utilizar dispositivos diferentes para la asignación de recursos y la búsqueda en DT
A raíz de la siguiente discusión, existe un posible problema de UAF (Use-After-Free) entre regulator y mfd. https://lore.kernel.org/all/[email protected]/
A partir del análisis de Yingliang:
CPU A | CPU B mt6370_probe() | devm_mfd_add_devices() | | mt6370_regulator_probe() | regulator_register() | // asignar init_data y añadirlo a devres | regulator_of_get_init_data() i2c_unregister_device() | device_del() | devres_release_all() | // init_data se libera | release_nodes() | | // el uso de init_data provoca un UAF | regulator_register()
Es habitual utilizar el núcleo mfd para crear un dispositivo hijo para el regulador. Con el fin de realizar la búsqueda en DT (Device Tree) de los datos de inicialización (init data), el hijo que registró el regulador pasa su padre como parámetro. Esto hace que los recursos de init data se asignen a su padre, no a sí mismo. El problema ocurre cuando el dispositivo padre está a punto de liberarse y el núcleo del regulador aún está realizando algunas operaciones de restricción de init data para el regulador del dispositivo hijo.
Para solucionarlo, este parche amplía la API 'regulator_register' para utilizar dispositivos diferentes para la asignación de init data y la búsqueda en DT.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.