PT-2026-120777
CVE-2026-78118
·
تاريخ النشر
2026-10-21
·
تاريخ التحديث
2026-10-21
الوصف من
CVSS 3.1
7.0
عاليةالمقاييسAV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H
اسم البرنامج المتأثر والإصدارات المتأثرة
Zephyr RTOS (الإصدارات المتأثرة غير محددة)
الوصف
في أنظمة SMP، يقوم المساعد
z waitq head() في النواة بقراءة رأس قائمة انتظار الخيوط (thread wait queue) دون حيازة قفل الدوران الخاص بالمجدول sched spinlock المسؤول عن تسلسل تغييرات قائمة الانتظار. يحدث هذا تحديداً في z timer expiration handler() ضمن kernel/timer.c الذي يحوز فقط على timer lock أثناء الوصول إلى timer->wait q. وبما أن halt thread() في kernel/sched.c يقوم بإزالة الخيوط المجهضة باستخدام sched spinlock فقط، فإن مساري التنفيذ هذين ليسا حصريين متبادلاً.يمكن أن تؤدي حالة السباق هذه إلى قيام
sys dlist peek head() بإرجاع مؤشر وهمي (sentinel) أو مؤشر لخيط تم تحريره أو إلغاء تعليقه بالفعل. لاحقاً، قد تقوم الدالتان unpend thread no timeout() و arch thread return value set() بعمليات كتابة خارج الحدود (out-of-bounds) وكتابة بعد التحرير (use-after-free) في سياق المشرف، مما يؤدي إلى فساد حالة المجدول أو انهيار النواة. يمكن لخيط في وضع المستخدم غير привиليجي تحفيز هذا السباق باستخدام استدعاءات النظام مثل k timer start() و k timer status sync() و k thread create() و k thread abort(). يتطلب الاستغلال بناءً متعدد المعالجات حيث تكون قيمة CONFIG MP MAX NUM CPUS أكبر من واحد، مع إمكانية تنفيذ كود محلي.التوصيات
في الوقت الحالي، لا توجد معلومات حول إصدار أحدث يحتوي على إصلاح لهذه الثغرة.
وجدت خطأً في الوصف؟ لديك ما تضيفه؟ لا تتردد في مراسلتنا 👾