Katalog CVE

CVE-2026-98056

WysokieCVSS 7.5
Opublikowano: Zaktualizowano: Przetłumaczono: NVD NIST

Streszczenie

W jądrze Linux funkcja nvme_scan_ns_list() usuwa nieaktualne przestrzenie nazw w każdej luce raportowanej listy NSID po jednym NSID na raz, wywołując nvme_find_get_ns() w każdej iteracji. Ponieważ NSID są 32-bitowe, rzadka przestrzeń NSID może spowodować, że pojedyncza luka wykona miliardy iteracji bez niczego do usunięcia, prowadząc do soft lockup. Poprawka zmienia nvme_remove_invalid_namespaces() na nvme_remove_nsid_range() z otwartym zakresem (start, end) NSID, co ogranicza pracę do rzeczywiście obecnych przestrzeni nazw.

Ocena ryzyka

Lokalny atakujący lub wadliwy sprzęt NVMe może wywołać soft lockup CPU, prowadzący do zawieszenia systemu lub degradacji wydajności. Ryzyko jest umiarkowane, ale może powodować odmowę usługi.

Rekomendacja

Zaktualizuj jądro Linux do wersji zawierającej poprawkę. Monitoruj systemy z rzadkimi przestrzeniami NSID pod kątem soft lockupów.

Inne podatności w Linux kernel

Zobacz wszystkie
Oryginalny opis (angielski, źródło NVD)

In the Linux kernel, the following vulnerability has been resolved: nvme: remove stale namespaces by NSID range during scan nvme_scan_ns_list() drops the stale namespaces in each gap in the reported NSID list one NSID at a time. Every iteration calls nvme_find_get_ns() to look the namespace up and removes it if it is present. The loop runs once per NSID in the gap rather than once per namespace actually present. NSIDs are 32-bit, so a target with a sparse NSID space can make a single gap spin the loop billions of times with nothing to remove. watchdog: BUG: soft lockup - CPU#4 stuck for 26s! Workqueue: nvme-wq nvme_scan_work [nvme_core] RIP: 0010:__srcu_read_unlock+0xb/0x20 Call Trace: nvme_find_get_ns+0x7d/0xb0 [nvme_core] nvme_scan_ns_list+0xe8/0x280 [nvme_core] nvme_scan_work+0x18a/0x280 [nvme_core] process_one_work+0x197/0x380 worker_thread+0x2fe/0x410 kthread+0xe0/0x100 Rename nvme_remove_invalid_namespaces() to nvme_remove_nsid_range() and give it an open (start, end) NSID range. ctrl->namespaces is sorted by NSID, so the whole gap is dropped in a single walk that stops once end is reached. This bounds the work by the namespaces that are present instead of by the size of the gap.

Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS