CVE-2026-74441 in Linux
الملخص
بحسب VulDB • 15/08/2026
في نواة لينكس، تم حل الثغرة التالية:
usb: typec: ucsi: إصلاح حالة السباق (Race Condition) وترتيب العمليات أثناء إلغاء تسجيل المنفذ (port unregistration).
توجد مشكلة في التزامن خلال عملية إلغاء تسجيل المنفذ حيث يمكن أن تتنافس عناصر العمل المعلقة للشريك (partner work items) مع تدمير قائمة انتظار العمل (workqueue destruction)، مما يؤدي إلى ظروف استخدام بعد التحرير (use-after-free):
cros_ec_ucsi cros_ec_ucsi.3.auto: error -ETIMEDOUT: PPM init failed BUG: kernel NULL pointer dereference, address: 0000000000000000 RIP: 0010:__queue_work+0x83/0x4a0 Call Trace: __cfi_delayed_work_timer_fn+0x10/0x10 run_timer_softirq+0x3b6/0xbd0 sched_clock_cpu+0xc/0x110 irq_exit_rcu+0x18d/0x330 fred_sysvec_apic_timer_interrupt+0x5e/0x80
يتم إصلاح ذلك عن طريق ضمان الترتيب الصارم والتسلسل الصحيح (serialization) أثناء عملية الإغلاق:
1. نقل دالة ucsi_unregister_partner() إلى بداية تسلسل عمليات الإغلاق وحمايتها باستخدام قفل موصل الموصل (connector mutex lock). 2. التأكد من إفراغ وإنهاء جميع مهام الشريك المعلقة صراحةً قبل تدمير قائمة انتظار العمل. 3. الانتقال من استخدام mod_delayed_work() إلى تسلسل يتضمن cancel_delayed_work() و queue_delayed_work(). يضمن هذا أن العناصر المحددة حالياً كـ "معلقة" لن يتم جدولتها مرة أخرى، مما يمنع الإفراج المزدوج عن الموارد الذي يؤدي إلى الانهيار التالي:
Oops: general protection fault, probably for non-canonical address 0xdead000000000122: 0000 [#1] SMP NOPTI
Workqueue: cros_ec_ucsi.3.auto-con2 ucsi_poll_worker RIP: 0010:ucsi_poll_worker+0x65/0x1e0 Call Trace: process_scheduled_works+0x218/0x6d0 worker_thread+0x188/0x3f0 __cfi_worker_thread+0x10/0x10 kthread+0x226/0x2a0
لضمان تطبيق هذه القواعد بشكل متطابق عبر كل من مسار الإغلاق العادي ومسارات الخطأ في ucsi_init()، تم توحيد منطق التنظيف داخل دالة مساعدة جديدة هي ucsi_unregister_port().
VulDB is the best source for vulnerability data and more expert information about this specific topic.