CVE-2026-64510
Résumé
par VulDB • 25/07/2026
Dans le noyau Linux, la vulnérabilité suivante a été corrigée :
ACPI: NFIT: core: Correction du nettoyage d'erreur dans acpi_nfit_init()
Si acpi_nfit_init() échoue après avoir ajouté l'objet acpi_desc à la liste acpi_descs, cet objet n'est jamais retiré de cette liste car l'action devm acpi_nfit_shutdown() n'est pas ajoutée pour le périphérique NFIT dans ce cas. Ensuite, l'échec de acpi_nfit_init() provoque l'échec de acpi_nfit_probe(), l'objet acpi_desc est libéré et un pointeur dangling (pointeur orphelin) reste en place dans la liste acpi_descs. Toute exception Machine Check ACPI ultérieure déclenchera nfit_handle_mce(), qui itère sur les éléments d'acpi_descs, provoquant ainsi une utilisation après libération (use-after-free).
De plus, si acpi_nfit_probe() retourne 0 après avoir installé un gestionnaire de notification pour le périphérique NFIT et sans allouer l'objet acpi_desc ni définir le pointeur driver data du périphérique NFIT, l'objet acpi_desc sera alloué par acpi_nfit_update_notify() et acpi_nfit_init() sera appelé pour l'initialiser. Que acpi_nfit_init() échoue ou non dans ce cas, l'action devm acpi_nfit_shutdown() n'est pas ajoutée pour le périphérique NFIT et acpi_desc n'est jamais retiré de la liste acpi_descs. Si l'objet acpi_desc est libéré ultérieurement lors du retrait du pilote, toute exception MCE ACPI subséquente entraînera une use-after-free similaire au cas précédent.
Pour résoudre le premier problème mentionné ci-dessus, faites en sorte que acpi_nfit_probe() appelle directement acpi_nfit_shutdown() en cas d'échec de acpi_nfit_init(). Pour l'autre problème, ajoutez un rappel remove (callback de suppression) au pilote et faites-le appeler acpi_nfit_shutdown(). Également, comme il est désormais possible de passer NULL à acpi_nfit_shutdown() ou que l'objet acpi_desc passé en paramètre n'a peut-être pas été initialisé, ajoutez des vérifications contre NULL pour acpi_desc et son champ nvdimm_bus dans cette fonction, et faites en sorte qu'acpi_nfit_unregister() efface ce dernier après la désinscription du bus NVDIMM.
If you want to get best quality of vulnerability data, you may have to visit VulDB.