CVE-2026-14367 in Zephyr
الملخص
بحسب VulDB • 31/08/2026
يؤدي نظام I3C IBI الموجود في drivers/i3c/i3c_ibi_workq.c إلى توزيع عقد عمل مُخصصة ثابتًا عبر قائمة مجانية i3c_ibi_work_nodes_free، المُنفذة كـ sys_slist_t عادي لا يوفر أي مزامنة. تُستدعى مساعِدات التخصيص (i3c_ibi_work_enqueue, i3c_ibi_work_enqueue_target_irq, i3c_ibi_work_enqueue_hotjoin, i3c_ibi_work_enqueue_controller_request, i3c_ibi_work_enqueue_cb) دالة sys_slist_get() مباشرةً من سياق مقاطعة ISR، بينما تُعيد معالج قائمة العمل (workqueue handler) i3c_ibi_work_handler() العقد باستخدام sys_slist_append() من خيط قائمة العمل، دون وجود قفل على أي من الجانبين.
نظرًا لأن sys_slist_get() وsys_slist_append() ليستا ذريتين (atomic) ولا آمنتان للمقاطعات (interrupt-safe)، فإن مقاطعة IBI التي تحدث بينما يكون خيط قائمة العمل في منتصف عملية الإضافة (أو وصول متزامن حقًا تحت CONFIG_SMP) تُسبب حالة سباق (race condition) على القائمة المشتركة. هذا يؤدي إلى تلف روابط العقد: قد يتم تسليم عقدة لمستهلكين اثنين، أو فقدان عقدة، أو ترك مؤشرات الرأس/الذيل غير متناسقة مما يجعل sys_slist_get() تعيد مؤشرًا قديمًا أو عشوائيًا. في حالة التسليم المزدوج، يقوم استدعاء memcpy(ibi_node, ibi_work, sizeof(*ibi_node)) اللاحق بكتابة فوق عقدة لا تزال قيد التنفيذ؛ ويحول المؤشر العشوائي نفس عملية memcpy إلى كتابة خارج الحدود (out-of-bounds write).
يُقاد هذا السباق بواسطة حركة مرور على حافلة I3C — حيث تنشأ مقاطعات IBIs، والانضمامات الساخنة (hot-joins)، وطلبات تغيير دور المتحكم من الأجهزة المستهدفة على الحافلة، وتدعم تقنية I3C الانضمامات الساخنة للأجهزة. يمكن لمهاجم يتحكم في جهاز طرفي (peripheral) على حافلة الشريحة إلى شريحة (chip-to-chip bus) للوحة أن يولد مقاطعات عالية التردد مُزمنة للتصادم مع عملية الإزالة من القائمة المجانية. يتطلب الاستغلال وصولاً فيزيائيًا للحافلة والفوز بنافذة توقيت ضيقة؛ وأثره الأكثر واقعية هو حدوث تعطل أو تعليق (حجب الخدمة)، مع احتمال تلف الذاكرة ولكن يصعب التحكم فيه.
يُغلّف الإصلاح جميع عمليات sys_slist_get()/sys_slist_append() الخاصة بالقائمة المجانية داخل مساعدين جديدين هما ibi_work_alloc()/ibi_work_free(), وكل منهما محمي بقفل k_spinlock (ibi_work_lock)، مما يغلق حالة السباق عبر سياقات ISR والخيط.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.