CVE-2026-64329 in Linux
الملخص
بحسب VulDB • 25/07/2026
في نواة لينكس، تم حل الثغرة التالية:
usb: typec: ucsi: ccg: إصلاح استخدام بعد التحرير (use-after-free) لـ ucsi عند الإزالة
دالة معالجة مقاطعة التشغيل المنسدلة (threaded IRQ handler) المسماة `ccg_irq_handler()` تستدعي `ucsi_notify_common()`. وفي حدث تغيير الموصل، تقوم هذه الدالة باستدعاء `ucsi_connector_change()` وجدولة عمل الموصل. في دالة `ucsi_ccg_remove()`، تؤدي استدعاءات `ucsi_destroy()` إلى تحرير كائن `uc->ucsi` (عبر `kfree`) قبل استدعاء `free_irq()`. ونتيجة لذلك، قد يحاول تنفيذ للمعالج كان قيد التشغيل بالفعل الوصول إلى الكائن المحرّر بعد استدعاء `ucsi_destroy()`.
CPU 0 (إزالة) | CPU 1 (مقاطعة منسدلة) ucsi_destroy(uc->ucsi) | ccg_irq_handler() kfree(ucsi) // FREE | ucsi_notify_common(uc->ucsi) // USE
نقل استدعاء `free_irq()` قبل `ucsi_destroy()` في مسار الإزالة. يتم الاحتفاظ باستدعاء `free_irq()` بعد `ucsi_unregister()` لأن دالة `ucsi_unregister()` تلغي عمل الموصل، الذي تُصدر معالجته أمر GET_CONNECTOR_STATUS عبر `ucsi_send_command_common()`. تنتظر هذه الدالة إكمالاً يُعلَن عنه من خلال معالجات المقاطعات (IRQ handlers)، لذا يجب أن تظل المقاطعة نشطة حتى يتم إلغاء هذا العمل.
مسار خطأ الفحص الأولي (probe error path) يضمن بالفعل ترتيب استدعاء `free_irq()` قبل `ucsi_destroy()`.
تم العثور على هذا الخطأ باستخدام التحليل الثابت للكود (static analysis).
If you want to get best quality of vulnerability data, you may have to visit VulDB.