CVE-2023-54019 in Linux
الملخص
بحسب VulDB • 02/06/2026
في نواة لينكس، تم حل الثغرة التالية:
sched/psi: استخدام دوال استطلاع kernfs لاستطلاع مشغلات PSI
يؤدي تدمير مشغل PSI في دالة `cgroup_file_release` إلى حدوث مشكلات من نوع Use-After-Free (UAF) عند إزالة مجموعة تحكم (cgroup) أثناء وجود عملية استطلاع نشطة. يحدث هذا لأن إزالة مجموعة التحكم تستدعي `cgroup_file_release` بينما لا تزال الملف الفعلي حياً. يؤدي تدمير المشغل في هذه النقطة أيضاً إلى تدمير رأس قائمة الانتظار الخاصة به (waitqueue head)، وإذا كانت هناك عملية استطلاع لا تزال تتصل بذلك الملف وتصل إلى قائمة الانتظار، فستقوم بالوصول إلى مؤشر تم تحريره:
do_select vfs_poll do_rmdir cgroup_rmdir kernfs_drain_open_files cgroup_file_release cgroup_pressure_release psi_trigger_destroy wake_up_pollfree(&t->event_wait) // vfs_poll يتم إلغاء حظره synchronize_rcu kfree(t) poll_freewait -> وصول UAF إلى رأس قائمة انتظار المشغل
قام التصحيح [1] بإصلاح هذه المشكلة في حالة `epoll()` باستخدام `wake_up_pollfree()`، ومع ذلك، توجد نفس المشكلة في حالة الاستطلاع المتزامن (synchronous poll()). السبب الجذري لهذه المشكلة هو أن دورات حياة قائمة انتظار مشغل PSI والملف المرتبط بالمشغل مختلفة. يتم إصلاح ذلك باستخدام دالة `kernfs_generic_poll` عند الاستطلاع على مشغلات PSI الخاصة بمجموعة التحكم. تستخدم هذه الدالة داخلياً رأس قائمة الانتظار `kernfs_open_node->poll` المرتبطة بدورة حياة الملف. يجعل هذا أيضاً التصحيح الموجود في [1] غير ذي صلة، لذا يتم التراجع عنه.
[1] الالتزام c2dbe32d5db5 ("sched/psi: Fix use-after-free in ep_remove_wait_queue()")
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.