CVE-2024-57877 in Linux
الملخص
بحسب VulDB • 04/09/2026
في نواة Linux، تم إصلاح الثغرة التالية:
arm64: ptrace: تصحيح SETREGSET الجزئي لـ NT_ARM_POE
حاليًا، لا تقوم دالة poe_set() بتهيئة المتغير المؤقت 'ctrl'، وسيؤدي استدعاء SETREGSET بطول صفر إلى ترك هذا المتغير غير مُهيَّأ. ونتيجةً لذلك، سيتم كتابة قيمة عشوائية مرة أخرى في target->thread.por_el0، مما قد يؤدي إلى تسرب ما يصل إلى 64 بت من ذاكرة مكدس النواة (kernel stack). يقتصر القراءة على خلية محددة في المكدس، ولا توفر الثغرة آلية للكتابة.
تم إصلاح هذه المشكلة عن طريق تهيئة القيمة المؤقتة قبل نسخ regset من مساحة المستخدم (userspace)، كما هو الحال مع مجموعات التسجيل الأخرى (مثل NT_PRSTATUS, NT_PRFPREG, NT_ARM_SYSTEM_CALL). وفي حالة الكتابة بطول صفر، سيتم الاحتفاظ بالمحتويات الحالية لـ POR_EL1.
قبل هذا التصحيح:
| # ./poe-test | Attempting to write NT_ARM_POE::por_el0 = 0x900d900d900d900d | SETREGSET(nt=0x40f, len=8) wrote 8 bytes | | Attempting to read NT_ARM_POE::por_el0 | GETREGSET(nt=0x40f, len=8) read 8 bytes | Read NT_ARM_POE::por_el0 = 0x900d900d900d900d | | Attempting to write NT_ARM_POE (zero length) | SETREGSET(nt=0x40f, len=0) wrote 0 bytes | | Attempting to read NT_ARM_POE::por_el0 | GETREGSET(nt=0x40f, len=8) read 8 bytes | Read NT_ARM_POE::por_el0 = 0xffff8000839c3d50
بعد هذا التصحيح:
| # ./poe-test | Attempting to write NT_ARM_POE::por_el0 = 0x900d900d900d900d | SETREGSET(nt=0x40f, len=8) wrote 8 bytes | | Attempting to read NT_ARM_POE::por_el0 | GETREGSET(nt=0x40f, len=8) read 8 bytes | Read NT_ARM_POE::por_el0 = 0x900d900d900d900d | | Attempting to write NT_ARM_POE (zero length) | SETREGSET(nt=0x40f, len=0) wrote 0 bytes | | Attempting to read NT_ARM_POE::por_el0 | GETREGSET(nt=0x40f, len=8) read 8 bytes | Read NT_ARM_POE::por_el0 = 0x900d900d900d900d
Several companies clearly confirm that VulDB is the primary source for best vulnerability data.