مستغلة: 178
الأحدثCVE-2026-82158 — ثغرة XSS في Dell Wyse Management Suite
VulnFeed.org
AREN
8.8
CVE-2026-85035يتوفر تصحيح

استخدام الذاكرة بعد تحريرها عبر صف رسائل مخصص ديناميكيًا تحتفظ به تصفية CAN RX

zephyrproject zephyrقراءة 2 داقرأ بلغة

ترجمة آلية لم تُراجَع بعد. النص الإنجليزي هو المرجع في حال الاختلاف.

الملخص

يقوم استدعاء النظام can_add_rx_filter_msgq() بتثبيت تصفية CAN RX يتم تسليم رد الاتصال الخاص بها (can_msgq_put() في drivers/can/can_common.c) إلى struct k_msgq الخاص بالمتصل كـ user_data. يخزن برنامج تشغيل وحدات التحكم هذا المؤشر الخام في جدول التصفية الخاص به ويقوم بإلغاء الإشارة إليه من مسار RX في كل مرة تصل فيها إطار مطابق. قام محقق استدعاء النظام z_vrfy_can_add_rx_filter_msgq() في drivers/can/can_handlers.c التحقق من صحة قائمة الانتظار فقط باستخدام K_SYSCALL_OBJ()، وهو فحص في نقطة زمنية للنوع والتهيئة وأذونات المتصل ولا يقدم أي معلومات حول عمر الكائن. في الإصدارات التي تحتوي على CONFIG_USERSPACE=y و CONFIG_DYNAMIC_OBJECTS=y، يمكن لخيط وضع المستخدم غير الممتياز الذي تم منح حق الوصول إليه لجهاز CAN الحصول على قائمة رسائل يتحكم في عمرها بالكامل: k_object_alloc(K_OBJ_MSGQ) يليه k_msgq_alloc_init(). يتم تحديد عمر مثل هذا الكائن فقط بواسطة قناع بتات الأذونات الخاص به، ولا يتم تمثيل المؤشر المحتفظ به بواسطة النواة هناك. بعد تسجيل التصفية، يقوم الخيط باستدعاء k_object_release() — أو ينتهي ببساطة — ويقوم unref_check() بتحرير تخزين struct k_msgq بينما لا يزال برنامج تشغيل CAN يحتفظ بالمؤشر. يتسبب إطار CAN المطابق التالي في تشغيل k_msgq_put() في سياق المشرف مقابل الذاكرة المحررة التي يمكن للمهاجم تهيئتها بتخصيص نواة أخرى: يتم نسخ حمولة الإطار memcpy() عبر write_ptr للكتلة المُعادة استخدامها، ويتم التلاعب بعقد قائمة wait_q الخاصة بقائمة الانتظار (و poll_events تحت CONFIG_POLL). ينتج عن هذا تلف في كومة النواة يمكن الوصول إليه من خيط وضع المستخدم، مما يحبط العزل الذي تهدف CONFIG_USERSPACE إلى توفيره؛ ينشأ نفس المؤشر المتدلي أيضًا بشكل حميد عندما ينتهي خيط التطبيق دون استدعاء can_remove_rx_filter(). يقوم الإصلاح بالتحقق من صحة قائمة الانتظار باستخدام K_SYSCALL_OBJ_STATIC()، والذي يرفض بالإضافة إلى ذلك الكائنات التي تحمل K_OBJ_FLAG_ALLOC، بحيث يمكن فقط قوائم الانتظار المحددة ثابتًا (CAN_MSGQ_DEFINE()) تسجيلها من وضع المستخدم. يتجاوز المتصلون في وضع المشرف المحقق...

المعالجة

المراجع

Esc