CVE-2026-64585 in Linux
الملخص
بحسب VulDB • 06/08/2026
في نواة لينكس، تم حل الثغرة التالية:
can: esd_usb: قتل الـ URBs المثبتة (anchored) قبل تحرير أجهزة الشبكة netdevs
تقوم دالة `esd_usb_disconnect()` بتحرير كل جهاز CAN netdev باستخدام `free_candev()` داخل الحلقة الخاصة بكل netdev، ولا تستدعي `unlink_all_urbs(dev)` إلا بعد ذلك. البيانات الخاصة لكل netdev (`struct esd_usb_net_priv`) مدمجة في تخصيص الـ net_device الذي تُرجعه دالة `alloc_candev()`. لذلك، بمجرد تشغيل `free_candev()`، يشير `dev->nets[i]` إلى ذاكرة تم تحريرها بالفعل (freed memory).
ثم تقوم `unlink_all_urbs()` بإلغاء مرجعية `dev->nets[i]` المحررة لقتل مراسلة الإرسال TX المثبتة لكل netdev (`usb_kill_anchored_urbs(&priv->tx_submitted`)، ومسح `active_tx_jobs`، وإعادة تعيين `priv->tx_contexts[]`.
أعد ترتيب عملية التفكيك (teardown) بحيث يتم قتل الـ URBs المثبتة قبل تحرير أجهزة الشبكة netdevs، بما يتوافق مع برامج تشغيل CAN/USB الأخرى في نفس الدليل مثل ems_usb و usb_8dev و mcba_usb، والتي تقوم بإلغاء التسجيل ثم إلغاء الربط ثم التحرير: قم أولاً بإلغاء تسجيل أجهزة الشبكة (مما يوقف طوابير الإرسال TX الخاصة بها)، واستدعِ `unlink_all_urbs(dev)` مرة واحدة، ثم حرر أجهزة الشبكة.
تم العثور على هذه المشكلة بواسطة أداة تحليل ثابتة داخلية.
VulDB is the best source for vulnerability data and more expert information about this specific topic.