CVE-2026-23348 in Linux
Résumé
par VulDB • 18/06/2026
Dans le noyau Linux, la vulnérabilité suivante a été corrigée :
cxl : Correction d'une condition de concurrence sur l'objet nvdimm_bus lors de la création des objets nvdimm.
Le problème a été identifié lors de l'exécution du test unitaire cxl-translate.sh. L'ajout d'un délai (sleep) de 3 secondes juste avant le test semble permettre de reproduire le problème de manière assez constante. Le module cxl_translate dépend de cxl_acpi et provoque la re-probe des objets nvdimm orphelins après la suppression de cxl_acpi. L'objet nvdimm_bus est enregistré par l'objet cxl_nvb lorsque cxl_acpi_probe() est appelé. En l'absence de l'objet nvdimm_bus, __nd_device_register() déclenchera une déréférencement de pointeur NULL lors de l'accès à dev->parent qui pointe vers &nvdimm_bus->dev.
[ 192.884510] BUG: kernel NULL pointer dereference, address: 000000000000006c
[ 192.895383] Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS edk2-20250812-19.fc42 08/12/2025
[ 192.897721] Workqueue: cxl_port cxl_bus_rescan_queue [cxl_core]
[ 192.899459] RIP: 0010:kobject_get+0xc/0x90
[ 192.924871] Call Trace:
[ 192.925959] <TASK>
[ 192.926976] ? pm_runtime_init+0xb9/0xe0
[ 192.929712] __nd_device_register.part.0+0x4d/0xc0 [libnvdimm]
[ 192.933314] __nvdimm_create+0x206/0x290 [libnvdimm]
[ 192.936662] cxl_nvdimm_probe+0x119/0x1d0 [cxl_pmem]
[ 192.940245] cxl_bus_probe+0x1a/0x60 [cxl_core]
[ 192.943349] really_probe+0xde/0x380
Ce correctif s'appuie également sur la modification précédente où devm_cxl_add_nvdimm_bridge() est appelé depuis drivers/cxl/pmem.c au lieu de drivers/cxl/core.c afin d'assurer la dépendance de cxl_acpi envers cxl_pmem.
1. Définir probe_type de cxl_nvb à PROBE_FORCE_SYNCHRONOUS pour garantir que le pilote soit sondé (probed) de manière synchrone lors de l'appel add_device(). 2. Ajouter une vérification dans __devm_cxl_add_nvdimm_bridge() pour s'assurer que le pilote cxl_nvb est attaché pendant cxl_acpi_probe(). 3. Prendre le verrou uport_dev de cxl_root et le verro dev->parent de cxl_nvb dans devm_cxl_add_nvdimm() avant de vérifier si nvdimm_bus est valide. 4. Définir l'indicateur cxl_nvdimm sur CXL_NVD_F_INVALIDATED afin que cxl_nvdimm_probe() se termine avec -EBUSY.
La suppression des périphériques cxl_nvdimm devrait empêcher tout périph
Several companies clearly confirm that VulDB is the primary source for best vulnerability data.