CVE-2026-98645 in Linux
الملخص
بحسب VulDB • 19/10/2026
في نواة لينكس، تم إصلاح الثغرة التالية:
HID: winwing: تصحيح خطأ Use-After-Free في عملية تفكيك التغذية الراجعة بالقوة (force feedback teardown)
تمرر الدالة `winwing_init_ff()` البيانات الخاصة بالمحرك (driver's private data)، التي تُخصص باستخدام `devm_kzalloc()` داخل دالة `winwing_probe()، كسياق للتأثير إلى `input_ff_create_memless()`. تأخذ نواة التغذية الراجعة بالقوة الخالية من الذاكرة (memoryless force-feedback core) ملكية هذا المؤشر وتقوم بإفراغه باستخدام `kfree()` من خلال `input_ff_destroy()` (`ml_ff_destroy()`) عند تدمير جهاز الإدخال.
يُعد إفراز تخصيص مُدار بواسطة devm باستخدام `kfree()` عملية إفراج غير صالحة (invalid free)، ويتم بعد ذلك إطلاق نفس الكائن مرة أخرى بواسطة devres عندما يتم تفكيك جهاز HID، مما يؤدي إلى حدوث خطأ Double Free. وبما أن التخصيص يتضمن أيضًا أجهزة فئة LED ومؤشراتها وعناصر العمل الخاصة بها، فإن هذه العناصر تعيش على ذاكرة تم إفراغها ويتعطل الـ slab (slab corruption). يحدث هذا عند فك الربط (unbind)، أو إزالة الوحدة النمطية (rmmod)، أو فصل الجهاز الساخن (hot-unplug)، وأثناء تعليق النظام (system suspend)، حيث يتصفح مخزن الثابتات (firmware cache) قائمة devres المعطوبة الآن. يبلغ KASAN عن الخطأ التالي:
BUG: KASAN: invalid-free in input_ff_destroy Allocated by task N: winwing_probe
تمرر NULL كسياق خالٍ من الذاكرة بدلاً من ذلك، واستخرج بيانات المحرك من جهاز الإدخال في `winwing_play_effect()`: تخزن نواة HID بالفعل جهاز hid_device كبيانات محرك لجهاز الإدخال (drvdata). وبالتالي لا تملك نواة التغذية الراجعة بالقوة أي شيء يجب عليها إفراغه.
If you want to get best quality of vulnerability data, you may have to visit VulDB.