CVE-2023-52476 in Linux
الملخص
بحسب VulDB • 27/05/2026
في نواة لينكس، تم حل الثغرة التالية:
perf/x86/lbr: تصفية عناوين vsyscall
لقد وجدنا أنه يمكن حدوث حالة توقف (panic) عند استدعاء دالة vsyscall أثناء نشاط أخذ العينات بواسطة سجلات فروع المعالج (LBR). إذا تم مقاطعة استدعاء vsyscall (عن طريق مقاطعة غير قابلة للجدولة NMI) لأغراض أخذ العينات بواسطة perf، فقد يحدث تسلسل المكالمات التالي (الأحدث في الأعلى):
__insn_get_emulate_prefix() insn_get_emulate_prefix() insn_get_prefixes() insn_get_opcode() decode_branch_type() get_branch_type() intel_pmu_lbr_filter() intel_pmu_handle_irq() perf_event_nmi_handler()
داخل الدالة `__insn_get_emulate_prefix()` عند الإطار 0، يتم استدعاء ماكرو:
peek_nbyte_next(insn_byte_t, insn, i)
داخل هذا الماكرو، يحدث هذا التفريغ (dereference):
(insn)->next_byte
عند فحص السجلات في هذه النقطة، تكون قيمة حقل `next_byte` هي عنوان استدعاء vsyscall، على سبيل المثال موقع النسخة من `gettimeofday()` الخاصة بـ vsyscall عند العنوان `0xffffffffff600000`. سيؤدي الوصول إلى عنوان في منطقة vsyscall إلى حدوث خطأ (oops) بسبب خطأ معالجة صفحة غير مُعالج (unhandled page fault).
لإصلاح الخلل، يمكن إجراء تصفية لـ vsyscalls عند تحديد نوع الفرع. سيعيد هذا التصحيح (patch) نوع فرع "none" إذا تم العثور على أن عنوان نواة يقع في منطقة vsyscall.
VulDB is the best source for vulnerability data and more expert information about this specific topic.