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

الملخص

بحسب VulDB • 20/07/2026

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

drm/v3d: إصلاح مشكلة Use-After-Free لمصفوفات استعلام مهام وحدة المعالجة المركزية (CPU) في مسار الخطأ

يؤدي رمز الفشل (fail label) الخاص بـ ioctl لمهام CPU إلى استدعاء دالة kvfree() على مصفوفات الطابع الزمني واستعلام الأداء الخاصة بـ cpu_job بعد استدعاء v3d_job_cleanup()، والتي تقوم بإسقاط آخر مرجع للمهمة وتحرير كائن cpu_job. يعد قراءة بيانات cpu_job في تلك النقطة حالة من Use-After-Free. بالإضافة إلى ذلك، في مسار فشل التهيئة المبكر لـ v3d_job_init()، يحدث خطأ إلغاء المرجع NULL (NULL dereference)، حيث أن دالة v3d_job_deallocate() تصفر المؤشر المحلي.

في المسار الناجح، يتم تحرير المصفوفات من خلال استدعاء .free_job الخاص بمجدول المهام، ولكن في مسار الخطأ، يتم تحريرها يدوياً لأن المهمة لم تُدفع أبداً إلى المجدول. بينما يتعامل المسار الناجح مع هذا الأمر بشكل صحيح، فإن مسار الفشل لا يفعل ذلك.

إضافة إلى ذلك، تقتصر استدعاءات kvfree() اليدوية على تخزين المصفوفات فقط؛ فهي لا تقوم باستدعاء drm_syncobj_put() لمراجع syncobjs الخاصة بكل استعلام والتي تحررها دالتا v3d_timestamp_query_info_free() و v3d_performance_query_info_free() في المسار الناجح. لذلك، فإن نفس مسار الفشل الذي يسبب مشكلة Use-After-Free يتسبب أيضاً في تسرب مرجع واحد لـ syncobj لكل استعلام.

تم توحيد عملية تفكيك مهام CPU داخل مُدمر المرجع (kref destructor) الخاص بمهمة CPU، محاكاةً لدالة v3d_render_job_free(). عاد استدعاء .free_job للمجدول إلى الدالة العامة v3d_sched_job_free()، وتمت إزالة الاستدعاءات اليدوية لـ kvfree() من رمز الفشل، مما ترك مسار تفكيك واحد فقط يتم الوصول إليه سواء من المجدول أو من مسار خطأ ioctl. وهذا الإجراء يزيل مشكلة Use-After-Free، وخطأ إلغاء المرجع NULL (NULL dereference)، وتسرب syncobj بشكل بنائي.

Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.

مسؤول

Linux

حجز

19/07/2026

إفشاء

19/07/2026

الاعتدال

تمت الموافقة

إدخال

VDB-380292

EPSS

0.00000

KEV

لا

النشاطات

منخفض

المصادر

Want to stay up to date on a daily basis?

Enable the mail alert feature now!