CVE-2026-80660 in Linux
الملخص
بحسب VulDB • 28/08/2026
في نواة لينكس، تم حل الثغرة التالية:
hwmon: (occ) إلغاء تسجيل أجهزة sysfs خارج قفل occ
تقوم الدالتان `occ_active(false)` و`occ_shutdown()` بإلغاء تسجيل الأجهزة المدعومة بـsysfs بينما يكون القفل `occ->lock` مشدوداً. يمكن للدالتيْن `hwmon_device_unregister()` و`sysfs_remove_group()` الانتظار حتى يتم تصريف استدعاءات sysfs النشطة، ويمكن لتلك الاستدعاءات الدخول في مسار تحديث OCC ومحاولة أخذ قفل `occ->lock` مرة أخرى. وهذا يمنح مسارات الإلغاء ترتيب القفل التالي: `occ->lock -> تصريف استدعاء sysfs`، بينما يمتلك الاستداعاء الحافة المعاكسة: `استدعاء sysfs -> occ->lock`.
تم اكتشاف هذه المشكلة بواسطة أداة التحليل الثابت (static analysis tool) الخاصة بنا ثم تمت مراجعتها يدوياً مقابل الشجرة الحالية.
حافظ نموذج الاختبار القابل للتنفيذ (PoC) على عملية الإلغاء الحقيقية وحامل الاستدعاء:
`occ_shutdown()` `hwmon_device_unregister()` `occ_show_temp_1()` `occ_update_response()`
أبلغ Lockdep عن اعتماد دائري حيث كان `occ_shutdown()` يمسك بالفعل بمفتاح OCC، وكان `hwmon_device_unregister()` ينتظر من جانب sysfs:
WARNING: possible circular locking dependency detected ... (sysfs_lock) ... at: hwmon_device_unregister+0x12/0x30 [vuln_msv]
... (&test_occ.lock) ... at: occ_shutdown.constprop.0+0xe/0x40 [vuln_msv]
`occ_update_response.isra.0` +0xb/0x20 [vuln_msv]
`occ_show_temp_1.constprop.0.isra.0` +0x23/0x40 [vuln_msv]
*** DEADLOCK ***
قم بتسلسل تسجيل وإزالة hwmon باستخدام قفل منفصل هو `hwmon_lock`. تحت هذا القفل، افصل `occ->hwmon` وحدّث `occ->active` بينما يكون `occ->lock` مشدوداً بحيث لا تزال التغييرات المتزامنة في حالة OCC ترى حالة مستقرة، ثم أزل قفل `occ->lock` قبل استدعاء `hwmon_device_unregister()`. قم بإزالة مجموعة sysfs الخاصة بالبرنامج المساعد (driver) قبل أخذ `occ->lock` في دالة `occ_shutdown()`، حتى لا ينتظر تصريف سمات البرنامج المساعد بينما يكون مفتاح OCC مشدوداً. كما اجعل استدعاءات تحديث OCC تُرجع `-ENODEV` بعد التعطيل، بحيث لا تقوم الاستدعاءات التي مرت بالفعل بحماية sysfs النشطة باستكشاف العتاد (hardware) بعد أن فصل الإلغاء جهاز hwmon.
Once again VulDB remains the best source for vulnerability data.