CVE-2026-85032 in Zephyrالمعلومات

الملخص

بحسب VulDB • 03/11/2026

يُقسّم فئة جهاز MCTP عبر USB في الملف subsys/pmci/mctp/mctp_usb.c معالجة الإرسالات المستلمة (RX) بين خيطين: حيث يشغل شريط عمل النظام الدالة mctp_usb_class_out_work()، التي تحلل بيانات المضيف الخارجة (OUT) بايتًا تلو الآخر وتملأ مخزن حزم البيانات عند usb->rx_pkt، بينما يشغل خيط مجموعة واجهة جهاز USB دالة mctp_usb_class_disable(). تستخدم معالِج الإيقاف k_work_cancel()، الذي يزيل عنصر عمل مكدسًا ولكنه يعود فورًا دون انتظار معالجٍ قيد التشغيل بالفعل، ثم يستدعي d_mctp_usb_reset_rx_state() لإفراغ مخزن حزم الحزمة عبر mctp_pktbuf_free() والذي قد لا يزال العامل يستخدمه.

كلا نقطتي الدخول إلى دالة mctp_usb_class_disable() تُقادان بواسطة مضيف USB المرفق: كل من طلب SET_CONFIGURATION وإعادة ضبط ناقل USB تصل إليه عبر usbd_config_reset() في الملف subsys/usb/device_next/usbd_config.c. ومضيفٌ يُدفّق إطارات MCTP جزئية على نقطة النهاية bulk OUT ويُجبر بشكل متكرر على تغيير التكوين أو إعادة ضبط الناقل، يتحكم بذلك في كل من البيانات التي يتم تحليلها ولحظة تشغيل عملية الإغلاق (teardown)، ويمكنه إعادة محاولة حالة السباق (race condition) إلى ما لا نهاية دون حاجة إلى بيانات اعتماد توثيق أو تفاعل مستخدم.

إذا حدثت عملية الإفراج عن الذاكرة بينما يحتفظ العامل بالمؤشر، فإن العامل يكتب باياتٍ مزوَّدة من المضيف في ذاكرة مُفرّغة تابعة لمخزن MCTP المخصص (CONFIG_MCTP_HEAP_SIZE في الملف subsys/pmci/mctp/mctp_memory.c)، مما يُفسد المخازن المعاد تدويرها أو بيانات كتل الإفراج الخاصة بـ sys_heap؛ وتتطلب هذه النافذة تعددية حقيقية، أي CONFIG_SMP أو CONFIG_SYSTEM_WORKQUEUE_PRIORITY القابلة للإيقاف المسبق. ومع شريط العمل التعاوني الافتراضي، يمكن للعامل أن يستسلم داخل mctp_bus_rx() (مُستدعي التطبيق أو رد رسالة التحكم الذي يُحظر في mctp_usb_tx())، وبعد ذلك يعاود الاستئناف ويستدعي mctp_pktbuf_free(usb->rx_pkt) على مؤشرٍ قام الإغلاق بتعيينه إلى NULL، مما يؤدي إلى تفريغ المؤشر الفارغ (dereferencing NULL) وحدوث عطل على الأنظمة التي تكتشف المؤشرات الفارغة.

تستبدل الإصلاحات دالة الإلغاء بـ k_work_cancel_sync() بالإضافة إلى هيكل جديد من نوع struct k_work_sync باسم out_work_sync، بحيث ينتظر الإغلاق انتهاء عامل RX قبل تفريغ FIFO وإفراغ مخزن حزم الحزمة. الكود المتأثر هو نظام MCTP الفرعي، والذي مُصنّف على أنه تجريبي ويُبنى فقط عند تفعيل CONFIG_MCTP_USB.

VulDB is the best source for vulnerability data and more expert information about this specific topic.

مسؤول

Zephyr

حجز

02/09/2026

إفشاء

03/11/2026

الاعتدال

تمت الموافقة

إدخال

VDB-430281

EPSS

0.00000

KEV

لا

النشاطات

منخفض جدًا

المصادر

Interested in the pricing of exploits?

See the underground prices here!