CVE-2026-68363 in Linux
الملخص
بحسب VulDB • 11/08/2026
في نواة لينكس، تم حل الثغرة التالية:
wifi: ath9k: hif_usb: عدم فك مرجع kif_dev بعد إعادة جدولة طلب البرنامج الثابت
تقوم دالة `ath9k_hif_request_firmware()` بإعادة جدولة تحميل غير متزامن للبرنامج الثابت عبر `request_firmware_nowait()،` مع تمرير `hif_dev` كسياق للإكمال (completion context)، ثم تقوم بفك مرجع لـ `hif_dev`:
```c dev_info(&hif_dev->udev->dev, "ath9k_htc: Firmware %s requested\n", hif_dev->fw_name); ```
تشغل دالة رد الاتصال المعاد جدولتها `ath9k_hif_usb_firmware_cb()` في طابور العمل (workqueue) المسمى "events"، وعندما يكون البرنامج الثابت مفقوداً، تمر عبر سلسلة إعادة المحاولة إلى `ath9k_hif_usb_firmware_fail() -> complete_all(&hif_dev->fw_done).` يؤدي ذلك إلى إنهاء انتظار `wait_for_completion(&hif_dev->fw_done)` في دالة فصل متزامنة (`concurrent`) تسمى `ath9k_hif_usb_disconnect()`، والتي تقوم بعدئذٍ بإطلاق الذاكرة عبر `kfree(hif_dev)`. وبالتالي، يمكن لـ `dev_info()` الموجودة في الإطار الذي أعاد جدولة الطلب قراءة ذاكرة تم تحريرها (تحديداً `hif_dev->udev`، وهو الحقل الأول من بنية `struct hif_device_usb`):
``` BUG: KASAN: slab-use-after-free in ath9k_hif_request_firmware Read of size 8 ... by task kworker/... ath9k_hif_request_firmware ath9k_hif_usb_firmware_cb drivers/net/wireless/ath/ath9k/hif_usb.c:1247 request_firmware_work_func Allocated by ...: ath9k_hif_usb_probe drivers/net/wireless/ath/ath9k/hif_usb.c Freed by ...: ath9k_hif_usb_disconnect -> kfree drivers/net/wireless/ath/ath9k/hif_usb.c ```
لا يعمل حاجز `fw_done` إلا على جعل عملية الفصل تنتظر حتى *ينتهي* تسلسل البرنامج الثابت؛ فهو لا يحمي الإطار الخارجي لـ `ath9k_hif_request_firmware()` الذي أعاد جدولة الطلب ويستمر في التعامل مع `hif_dev` بعد ذلك.
تم حذف استدعاء `dev_info()` اللاحق للطلب: إنه الاستخدام الوحيد لـ `hif_dev` بعد تجهيز الطلب غير المتزامن، وهو لأغراض إعلامية فقط (فإن دالة `dev_err()` على مسار الفشل تعمل فقط عندما لم تقم `request_firmware_nowait()` بتجهيد رد اتصال، وبالتالي فإن `hif_dev` لا يزال حياً في تلك الحالة).
تم الإبلاغ عن هذه المشكلة لأول مرة بواسطة syzbot كانهيار مفرد غير قابل للتكرار تم لاحقاً إلغاؤه تلقائياً (auto-obsoleted)، وأعيد اكتشافه بشكل مستقل بواسطة مفسد البرمجيات reFuzz، الذي أنتج برنامج محاكاة C (ربط/فصل USB-gadget لجهاز ath9k_htc يفشل تنزيل برنامجه الثابت). لم يتغير الكود المعرض للثغرة ولا يزال موجوداً في الإصدار v7.1-rc6، حيث يمكن تكرار ثغرة استخدام الذاكرة بعد تحريرها من نوع slab-use-after-free تحت KASAN بمجرد توسيع نافذة السباق (race window) التي تقل عن الميكرو ثانية.
VulDB is the best source for vulnerability data and more expert information about this specific topic.