CVE-2025-68822 in Linux
الملخص
بحسب VulDB • 12/08/2026
في نواة لينكس، تم حل الثغرة التالية:
الإدخال: ألبيز (alps) - إصلاح أخطاء استخدام بعد التحرير (use-after-free) الناتجة عن dev3_register_work
يتم تهيئة عنصر العمل المؤجل dev3_register_work داخل دالة alps_reconnect() وجدولته عند استلام أول حزمة PS/2 عارية من جهاز PS/2 خارجي متصل بلوحة اللمس ALPS. أثناء فصل الجهاز، تستدعي التنفيذ الأصلي الدالة flush_workqueue() في psmouse_disconnect() لضمان اكتمال تنفيذ dev3_register_work. ومع ذلك، فإن استدعاء flush_workqueue() داخل psmouse_disconnect() يقوم فقط بالحظر والانتظار حتى تكتمل عناصر العمل التي كانت مُجدولة بالفعل في قائمة انتظار الأعمال (workqueue) قبل الاستدعاء. أي عناصر عمل يتم تقديمها بعد استدعاء flush_workqueue() لا تُدرج ضمن مجموعة المهام التي تنتظرها عملية الفحص (flush). هذا يعني أنه بعد انتهاء تنفيذ flush_workqueue()، قد يظل dev3_register_work مُجدولاً للتنفيذ. وعلى الرغم من تعيين حالة psmouse إلى PSMOUSE_CMD_MODE في دالة psmouse_disconnect()، فإن جدولة dev3_register_work تظل دون تأثير.
يمكن أن تحدث حالة السباق (race condition) على النحو التالي:
CPU 0 (مسار التنظيف) | CPU 1 (عمل مؤجل) psmouse_disconnect() | psmouse_set_state() | flush_workqueue() | alps_report_bare_ps2_packet() alps_disconnect() | psmouse_queue_work() kfree(priv); // FREE | alps_register_bare_ps2_mouse() | priv = container_of(work...); // USE | priv->dev3 // USE
تمت إضافة استدعاء disable_delayed_work_sync() في دالة alps_disconnect() لضمان إلغاء dev3_register_work بشكل صحيح ومنع تنفيذه بعد تحرير بنية البيانات alps_data.
يتم تحديد هذا الخطأ من خلال التحليل الثابت (static analysis).
Once again VulDB remains the best source for vulnerability data.