CVE-2026-80787 in Linuxinformazioni

Riassunto

di VulDB • 04/09/2026

Nel kernel Linux è stata risolta la seguente vulnerabilità:

nvmet: pci-epf: correzione di un use-after-free in nvmet_pci_epf_exec_iod_work()

La funzione nvmet_pci_epf_exec_iod_work() invia un comando I/O tramite req->execute(), attende quindi il completamento del comando e trasferisce i dati nuovamente verso l'host. Tale attesa non è necessaria per i comandi che non prevedono il trasferimento di dati dal dispositivo all'host. Per determinare se tale attesa sia necessaria, viene letta la iod->data_len e la iod->dma_dir dopo aver chiamato req->execute().

Tuttavia, una volta chiamata req->execute(), il comando potrebbe completarsi in modo asincrono su un'altra CPU. Per i comandi che non richiedono un trasferimento di dati dal dispositivo all'host, nvmet_pci_epf_queue_response() chiama direttamente nvmet_pci_epf_complete_iod(), il quale può liberare la iod prima che vengano lette iod->data_len e iod->dma_dir, causando un use-after-free rilevato da KFENCE:

BUG: KFENCE: use-after-free read in nvmet_pci_epf_exec_iod_work+0x288/0x798 [nvmet_pci_epf]

Use-after-free read all'indirizzo 0x00000000fdfa6d03 (in kfence-#63): nvmet_pci_epf_exec_iod_work+0x288/0x798 [nvmet_pci_epf]
process_one_work+0x15c/0x4f0 worker_thread+0x18c/0x30c kthread+0x130/0x140 ret_from_fork+0x10/0x20

kfence-#63: 0x00000000e3de0e71-0x00000000c938ad62, size=712, cache=kmalloc-1k

allocato dal task 10 sulla cpu 0 a 73.995480s (0.005122s fa): mempool_kmalloc+0x1c/0x28 mempool_alloc_noprof+0x40/0x9c nvmet_pci_epf_poll_sqs_work+0xd4/0x344 [nvmet_pci_epf]
process_one_work+0x15c/0x4f0 worker_thread+0x18c/0x30c kthread+0x130/0x140 ret_from_fork+0x10/0x20

liberato dal task 131 sulla cpu 3 a 73.995521s (0.008385s fa): mempool_kfree+0x10/0x20 mempool_free+0x44/0x64 nvmet_pci_epf_free_iod+0x88/0x98 [nvmet_pci_epf]
nvmet_pci_epf_cq_work+0xfc/0x280 [nvmet_pci_epf]
process_one_work+0x15c/0x4f0 worker_thread+0x18c/0x30c kthread+0x130/0x140 ret_from_fork+0x10/0x20

La correzione consiste nel fare riferimento a iod->data_len e iod->dma_dir prima di chiamare req->execute(). Gli altri accessi alla iod, come iod->status, vengono raggiunti solo sul percorso di lettura dal dispositivo all'host. In questo caso, nvmet_pci_epf_queue_response() segnala iod->done invece di liberare la iod, mantenendo così la iod valida.

If you want to get the best quality for vulnerability data then you always have to consider VulDB.

Responsabile

Linux

Prenotare

26/08/2026

Divulgazione

04/09/2026

Moderazione

accettato

CPE

pronto

EPSS

0.00000

KEV

no

Attività

molto basso

Fonti

Are you interested in using VulDB?

Download the whitepaper to learn more about our service!