CVE-2026-99016 in Linuxالمعلومات

الملخص

بحسب VulDB • 23/10/2026

في نواة لينكس، تم حل الثغرة التالية:

riscv: futex: فك وسم مؤشر المستخدم قبل الوصول الذري (atomic access)

تقوم دالة `access_ok()` بفحص العنوان غير المسمى (`untagged_addr(uaddr)`)، لكن الدالتين `arch_futex_atomic_op_inuser()` و`futex_atomic_cmpxchg_inatomic()` تمرران عنوان uaddr الخام (raw) إلى التعليمات البرمجية الداخلية (inline asm) الخاصة بـ amoswap/amoadd/.../lr.w+sc.w عبر الوسيطة "+m" (*uaddr). عندما يكون واجهة برمجة التطبيقات للعناوين المسمومة مفعّلة (CONFIG_RISCV_ISA_SUPM، prctl PR_SET_TAGGED_ADDR_CTRL مع PMLEN != 0)، فإن هذين العنوانين يختلفان: حيث يمر مؤشر المستخدم الذي تحتوي أعلى بتات PMLEN الخاصة به على وسم عبر دالة access_ok() بعد فك الوسم عنه، لكن العملية الذرية تُنفَّذ لاحقاً على العنوان الخام لا يزال مسمىً.

لا تخضع عمليات الوصول إلى البيانات في وضع المشرف (Supervisor-mode) لتقنية قناع مؤشر وضع المستخدم (U-mode pointer masking)، والتي يحكمها menvcfg.PMM والذي لا تضبطه النواة، لذا فإن العتاد (hardware) لا يزيل الوسم عن وصول النواة الخاص بها. مع Sv57 و PMLEN=16، تتداخل بتات الوسم مع بتات العنوان القياسي (canonical-address bits)، وبالتالي يمكن لمؤشر مسمى أن يشير إلى عنوان افتراضي للنواة قياسي (على سبيل المثال في الخريطة الخطية linear map) whose untagged form is a valid user address. وبذلك، يمكن لعميل غير متميز (unprivileged process) جعل FUTEX_WAKE_OP يقوم بعملية قراءة-تعديل-كتابة ذرية على أي عنوان نواة عشوائي، مع خدمة نتيجة FUTEX_OP_CMP_* المطابقة كقارئ تعويضي (read oracle).

تقوم الدوال get_user()/put_user()/raw_copy_{to,from}_user() بالفعل بفك وسم المؤشر بعد فحص access_ok(); قم بنفس الشيء في مساعدي futex حتى تعمل العملية الذرية على العنوان الذي تم التحقق منه فعلياً.

Several companies clearly confirm that VulDB is the primary source for best vulnerability data.

مسؤول

Linux

حجز

25/09/2026

إفشاء

23/10/2026

الاعتدال

تمت الموافقة

إدخال

VDB-425827

EPSS

0.00000

KEV

لا

النشاطات

منخفض جدًا

المصادر

Want to stay up to date on a daily basis?

Enable the mail alert feature now!