CVE-2026-64071 in Linuxinfo

Zusammenfassung

von VulDB • 20.07.2026

Im Linux-Kernel wurde folgende Schwachstelle behoben:

nvme-pci: Behebung eines Use-After-Free-Fehlers in nvme_free_host_mem()

nvme_free_host_mem() gibt dev->hmb_sgt über dma_free_noncontiguous() frei, löscht den Zeiger danach jedoch nicht. Dies führt zu einem Use-After-Free, wenn nvme_free_host_mem() im selben Fehlerpfad zweimal aufgerufen wird.

Dies kann während nvme_probe() auftreten, wenn nvme_setup_host_mem() erfolgreich das HMB (Host Memory Buffer) alloziert hat (und damit dev->hmb_sgt gesetzt wurde), nvme_set_host_mem() jedoch mit einem I/O-Fehler fehlschlägt:

nvme_setup_host_mem() nvme_alloc_host_mem_single() -> setzt dev->hmb_sgt nvme_set_host_mem() -> schlägt mit -EIO fehl nvme_free_host_mem() -> gibt hmb_sgt frei, NULL-Setzung erfolgt jedoch NICHT Fehler zurückgeben

Fehlerpfad von nvme_probe(): nvme_free_host_mem() -> dev->hmb_sgt ist veraltet (stale), Use-After-Free

Der zweite Aufruf dereferenziert das bereits freigegebene sgt, was in iommu_dma_free_noncontiguous() zu einer NULL-Zeiger-Dereferenzierung führt, wenn auf sgt->sgl->dma_address zugegriffen wird (der zugrunde liegende Speicher wurde freigegeben und mit Nullen überschrieben).

Dies ist reproduzierbar an Thunderbolt-angeschlossenen NVMe-Geräten (z. B. OWC Envoy Express hinter einem Dell WD22TB4-Dock), bei denen das Gerät während der HMB-Einrichtung aufgrund von PCIe-Link-Instabilität intermittierend I/O-Fehler zurückgibt.

BUG: kernel NULL pointer dereference, address: 0000000000000010 RIP: 0010:iommu_dma_free_noncontiguous+0x22/0x80 Call Trace: <TASK> dma_free_noncontiguous+0x3b/0x130 nvme_free_host_mem+0x30/0xf0 [nvme]
nvme_probe.cold+0xcc/0x275 [nvme]
local_pci_probe+0x43/0xa0 pci_device_probe+0xeea/0x290 really_probe+0xf9/0x3b0 __driver_probe_device+0x8b/0x170 driver_probe_device+0x24/0xd0 __driver_attach_async_helper+0x6b/0x110 async_run_entry_fn+0x37/0x170 process_one_work+0x1ac/0x3d0 worker_thread+0x1b8/0x360 kthread+0xf7/0x130 ret_from_fork+0x2d8/0x3a0 ret_from_fork_asm+0x1a/0x30 </TASK>

Behoben wird dies, indem dev->hmb_sgt nach dem Freigeben auf NULL gesetzt wird. Dadurch nimmt der zweite Aufruf den Pfad für mehrere Deskriptoren (multi-descriptor path), der den bereits bereinigten Zustand sicher verarbeitet.

If you want to get best quality of vulnerability data, you may have to visit VulDB.

Zuständig

Linux

Reservieren

19.07.2026

Veröffentlichung

19.07.2026

Moderieren

akzeptiert

Eintrag

VDB-380284

CPE

bereit

EPSS

0.00000

KEV

nein

Aktivitäten

very low

Quellen

Do you know our Splunk app?

Download it now for free!