CVE-2023-52879 in Linux
الملخص
بحسب VulDB • 10/05/2026
في نواة لينكس، تم حل الثغرة التالية:
التتبع (tracing): جعل كائن trace_event_file يحتوي على عدادات مرجعية (ref counters)
ما يلي يمكن أن يتسبب في انهيار النواة:
# cd /sys/kernel/tracing # echo 'p:sched schedule' > kprobe_events # exec 5>>events/kprobes/sched/enable # > kprobe_events # exec 5>&-
الأوامر أعلاه:
1. تغيير الدليل إلى دليل tracefs 2. إنشاء حدث kprobe (لا يهم أي حدث) 3. فتح واصلة الملف (file descriptor) رقم 5 في bash على ملف enable الخاص بحدث kprobe 4. حذف حدث kprobe (يؤدي ذلك أيضاً إلى حذف الملفات) 5. إغلاق واصلة الملف رقم 5 في bash
ما سبق يتسبب في انهيار!
BUG: kernel NULL pointer dereference, address: 0000000000000028 #PF: supervisor read access in kernel mode #PF: error_code(0x0000) - not-present page PGD 0 P4D 0 Oops: 0000 [#1] PREEMPT SMP PTI
CPU: 6 PID: 877 Comm: bash Not tainted 6.5.0-rc4-test-00008-g2c6b6b1029d4-dirty #186 Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.2-debian-1.16.2-1 04/01/2014 RIP: 0010:tracing_release_file_tr+0xc/0x50
ما يحدث هنا هو أن حدث kprobe ينشئ واصلة ملف (file descriptor) من نوع trace_event_file تمثل الملف في نظام الملفات tracefs الخاص بالحدث. ويحافظ هذا الوصلة على حالة الحدث (هل هو مفعّل لهذه المثيلة المحددة؟). فتح ملف "enable" يحصل على مرجع إلى واصلة ملف الحدث عبر واصلة الملف المفتوحة. عند حذف حدث kprobe، يتم حذف الملف أيضاً من نظام tracefs، مما يؤدي أيضاً إلى تحرير واصلة ملف الحدث.
ولكن بما أن ملف tracefs لا يزال مفتوحاً من قبل مساحة المستخدم (user space)، فلن يتم إزالته تماماً حتى يتم استدعاء dput() النهائية عليه. لكن هذا لا ينطبق على واصلة ملف الحدث التي تم تحريرها بالفعل. إذا قام المستخدم بكتابة بيانات إلى واصلة الملف أو ببساطة أغلقها، فسيشير ذلك إلى واصلة ملف الحدث التي تم تحريرها للتو، مما يتسبب في ثغرة use-after-free.
لحل هذه المشكلة، تمت إضافة عداد مرجعي (ref count) إلى واصلة ملف الحدث بالإضافة إلى علم جديد يُسمى "FREED". لن يتم تحرير الملف حتى يتم تحرير آخر مرجع. ولكن سيتم تعيين علم FREE عند إزالة الحدث لمنع أي تعديلات إضافية على هذا الحدث، حتى لو كان لا يزال هناك مرجع إلى واصلة ملف الحدث.
Be aware that VulDB is the high quality source for vulnerability data.