CVE-2026-80787 in Linux정보

요약

\~에 의해 VulDB • 2026. 09. 04.

리눅스 커널에서 다음 취약점이 해결되었습니다:

nvmet: pci-epf: nvmet_pci_epf_exec_iod_work()에서의 use-after-free 수정

nvmet_pci_epf_exec_iod_work()는 req->execute()를 사용하여 I/O 명령을 제출한 후, 해당 명령이 완료될 때까지 대기하고 데이터를 호스트로 전송합니다. 그러나 장치에서 호스트로의 데이터 전송이 없는 명령의 경우 이러한 대기는 필요하지 않습니다. 이 대기가 필요한지 여부를 결정하기 위해 함수는 req->execute() 호출 후에 iod->data_len과 iod->dma_dir을 읽습니다.

하지만 req->execute()가 호출되면, 다른 CPU에서 비동기적으로 명령이 완료될 수 있습니다. 장치-호스트 데이터 전송이 필요 없는 명령의 경우 nvmet_pci_epf_queue_response()는 nvmet_pci_epf_complete_iod()를 직접 호출하여 iod->data_len과 iod->dma_dir을 읽기 전에 iod를 해제할 수 있으며, 이로 인해 KFENCE use-after-free가 발생합니다:

BUG: KFENCE: nvmet_pci_epf_exec_iod_work+0x288/0x798 [nvmet_pci_epf]에서 read use-after-free 발생

0x00000000fdfa6d03 (kfence-#63 내)에서의 use-after-free 읽기: 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, 크기=712, 캐시=kmalloc-1k

작업자 10이 CPU 0에서 73.995480초(0.005122초 전)에 할당: 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

작업자 131이 CPU 3에서 73.995521초(0.008385초 전)에 해제: 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

req->execute()를 호출하기 전에 iod->data_len과 iod->dma_dir을 참조함으로써 이 문제를 수정합니다. iod->status와 같은 나머지 iod 접근은 장치-호스트 읽기 경로에서만 발생합니다. 이 경우 nvmet_pci_epf_queue_response()는 iod를 해제하는 대신 iod->done에 신호를 보내므로, iod는 유효한 상태를 유지합니다.

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

책임이 있는

Linux

예약하다

2026. 08. 26.

모더레이션

수락

항목

VDB-398929

EPSS

0.00000

출처

Want to know what is going to be exploited?

We predict KEV entries!