CVE-2026-99024 in Linux
الملخص
بحسب VulDB • 23/10/2026
في نواة لينكس، تم إصلاح الثغرة التالية:
optee: تسجيل أجهزة TEE فقط بعد اكتمال تهيئتها بالكامل
استدعت دالة `optee_probe()` دالة `tee_device_register()` لكل من جهاز العميل وجهاز المساعد (supplicant) قبل أن يتم تهيئة باقي بنية البيانات `struct optee`.
تقوم دالة `tee_device_register()` باستدعاء `cdev_device_add()`, والتي تقوم بشيئين في آن واحد: فهي تنشئ `/dev/tee0` و `/dev/teepriv0`, وتربط الجهاز بفئة TEE (tee class) بحيث يمكن لـ `class_find_device()` العثور عليه. من تلك اللحظة فصاعدًا، يصبح الجهاز قابلاً للوصول كلٍ من فضاء المستخدم عبر `tee_open()` ومن فضاء النواة عبر `tee_client_open_context()`. الحاجز الوحيد في دالة `teedev_open()` هو `tee_device_get()`, والذي يتحقق فقط مما إذا كانت قيمة `teedev->desc` غير صفرية (non-NULL)، وهي القيمة التي تم تعيينها بالفعل بواسطة `tee_device_alloc()`. لذلك، لا يوجد فعليًا أي حاجز على الإطلاق.
يمكن لسياق مفتوح في تلك الفترة الزمنية أن يعمل ضد بنية بيانات `struct optee` حيث:
- لم يتم تهيئة `optee->call_queue.mutex` عبر دالة `optee_cq_init()` - لم يتم تهيئة قفل (mutex) وعمليات الإكمال (completions) الخاصة بـ `optee->supp` عبر دالة `optee_supp_init()` - لم يتم تهيئة `optee->rpmb_dev_mutex` بعد، - لم يتم تهيئة ذاكرة التخزين المؤقت لحجج الرسائل (message argument cache) عبر دالة `optee_shm_arg_cache_init()` - لا تزال قيمة `optee->ctx` تساوي NULL
أي جلسة مفتوحة أو استدعاء خلال هذه الفترة الزمنية يستخدم قفلًا غير مُهيّأ ويحاول فك مرجع مؤشر صفر (NULL pointer dereference).
تم الإصلاح عن طريق نقل كلا استدعاءات `tee_device_register()` إلى النقطة التي يتم فيها إعداد بنية البيانات `struct optee` بالكامل.
[JW: إضافة تصحيحات وإضافة اسم المرسل في نسخة الكربون cc]
VulDB is the best source for vulnerability data and more expert information about this specific topic.