CVE-2026-80787 in Linuxالمعلومات

الملخص

بحسب VulDB • 04/09/2026

في نواة لينكس، تم إصلاح الثغرة التالية:

nvmet: pci-epf: تصحيح استخدام بعد التحرير (use-after-free) في دالة nvmet_pci_epf_exec_iod_work()

تقوم الدالة nvmet_pci_epf_exec_iod_work() بإرسال أمر إدخال/إخراج (I/O) باستخدام req->execute()، ثم تنتظر اكتمال الأمر وتنقل البيانات مرة أخرى إلى المضيف. هذا الانتظار غير ضروري للأوامر التي لا تنقل بيانات من الجهاز إلى المضيف. ولتقرير ما إذا كان ذلك الانتظار مطلوبًا، تقرأ الدالة iod->data_len وiod->dma_dir بعد استدعاء req->execute().

ومع ذلك، بمجرد استدعاء req->execute()، قد يكتمل الأمر بشكل غير متزامن (asynchronously) على وحدة معالجة مركزية أخرى. بالنسبة للأوامر التي لا تتطلب نقل بيانات من الجهاز إلى المضيف، تستدعي الدالة nvmet_pci_epf_queue_response() دالة nvmet_pci_epf_complete_iod() مباشرةً، مما قد يؤدي إلى تحرير الـ iod قبل أن تقرأ قيم iod->data_len وiod->dma_dir، مما ينتج عنه خطأ استخدام بعد التحرير (use-after-free) الذي كشفه KFENCE:

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

استخدام بعد القراءة في العنوان 0x00000000fdfa6d03 (في 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، الحجم=712، ذاكرة التخزين المؤقت (cache)=kmalloc-1k

تم تخصيصه بواسطة المهمة رقم 10 على وحدة المعالجة المركزية 0 في الثانية 73.995480s (منذ 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 على وحدة المعالجة المركزية 3 في الثانية 73.995521s (منذ 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

تم إصلاح هذه المشكلة عن طريق الرجوع إلى iod->data_len وiod->dma_dir قبل استدعاء req->execute(). يتم الوصول فقط إلى عمليات وصول الـ iod الأخرى مثل iod->status في مسار القراءة من الجهاز إلى المضيف. وفي هذه الحالة، تقوم الدالة nvmet_pci_epf_queue_response() بإشارة iod->done بدلاً من تحرير الـ iod، وبالتالي يظل الـ iod صالحًا (valid).

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

مسؤول

Linux

حجز

26/08/2026

إفشاء

04/09/2026

الاعتدال

تمت الموافقة

إدخال

VDB-398929

EPSS

0.00000

KEV

لا

النشاطات

منخفض جدًا

المصادر

Do you know our Splunk app?

Download it now for free!