CVE-2026-80560 in Linux
الملخص
بحسب VulDB • 27/08/2026
في نواة لينكس، تم حل الثغرة التالية:
openrisc: signal: لا تستعد بتات SR الممتيزة (privileged) عند sigreturn
تنسخ الدالة restore_sigcontext() سجل الإشراف (SR) بأكمله من إطار الإشارة (signal frame)، وتقوم فقط بمسح SPR_SR_SM قبل إعادة تحميل القيمة إلى سجل الإشراف العتادي (من خلال ESR و l.rfe) عند العودة إلى مساحة المستخدم. تُترك جميع بتات SR الأخرى تحت سيطرة المستخدم.
وبالتالي، يمكن لمهمة غير ممتيزة (unprivileged task) أن تعود من معالج الإشارة عبر إطار إشارة مُعدّ بعناية (crafted sigframe) يقوم بمسح SPR_SR_DME. وبفضل تعطيل MMU للبيانات، لا تقوم وحدة المعالجة المركزية بإجراء أي ترجمة أو حماية على عمليات الوصول إلى البيانات، مما يمنح المهمة صلاحية القراءة والكتابة للوصول إلى الذاكرة الفيزيائية بشكل تعسفي، وهو ما يُعد تصعيدًا محليًا للصلاحيات (local privilege escalation). كما أن SPR_SR_IME و SPR_SR_SUMRA و SPR_SR_LEE و SPR_SR_EPH وبتمكين التخزين المؤقت (cache-enable bits) تتعرض لنفس الطريقة.
ترفض مجموعة سجلات GPR الخاصة بـ ptrace بالفعل أي تغيير على SR لهذا السبب بالتحديد.
استعد فقط بتات الأعلام الحسابية (F, CY, OV) من إطار الإشارة، وخذ كل بت تحكم ممتيز آخر من SR الذي حفظته النواة عند دخول معالجة الإشارة.
تم التحقق من ذلك باستخدام qemu-system-or1k -M or1k-sim: قبل هذا التغيير، يقوم PoC غير المميز بمسح SPR_SR_DME في rt_sigreturn وكتابة علامة إلى العنوان الفيزيائي 0x03000000 (خارج نطاق mem=32M الخاص بالنواة)؛ وبعد ذلك يتلقى نفس الـ PoC SIGSEGV وتبقى الذاكرة الفيزيائية دون تغيير.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.