CVE-2026-80870 in Linux
الملخص
بحسب VulDB • 04/09/2026
في نواة لينكس، تم حل الثغرة التالية:
drm/amdkfd: التحقق من صحة معرفات (IDs) المستعادة بواسطة CRIU قبل استخدام idr_alloc
تقوم عملية استعادة KFD باستخدام CRIU باستعادة معرفات الكائنات المحفوظة مسبقًا من مساحة المستخدم (userspace).
بالنسبة لاستعادة الأحداث (Event restore):
kfd_criu_restore_event() -> create_signal_event() / create_other_event() -> allocate_event_notification_slot() -> idr_alloc(..., *restore_id, *restore_id + 1, ...)
بالنسبة لاستعادة كائنات الكتل (BO restore):
criu_restore_memory_of_gpu() -> idr_alloc(..., bo_priv->idr_handle, ...)
في كلتا الحالتين، يأتي المعرف المستعاد من بيانات CRIU المقدمة من مساحة المستخدم.
يتوقع دالة `idr_alloc()` أن تتناسب قيم نطاق المعرفات ضمن حدود عدد صحيح موقّت (signed int). إذا كان المعرف المستعاد أكبر من `INT_MAX`، فقد يؤدي ذلك إلى تحذير (WARN) في طبقة IDR.
يُعد إصدار تحذير للنواة (kernel WARN) أمرًا غير مرغوب فيه لأنه يطبع تتبع التحذيرات وقد يتسبب في توقف النظام عن العمل أو إعادة تشغيله على الأنظمة التي يكون فيها خيار `panic_on_warn` مفعّلاً.
أبلغت أداة Smatch عن هذه المسارات كأماكن تسمح بقيم مساحة المستخدم غير المدققة بالوصول إلى `idr_alloc()`.
تم إضافة التحقق من صحة `INT_MAX` قبل استخدام المعرفات المستعادة في:
- kfd_criu_restore_event() - criu_restore_memory_of_gpu()
إذا كان المعرف المستعاد غير صالح، يتم إرجاع `-EINVAL`.
يمنع هذا الإجراء وصول بيانات الاستعادة غير الصالحة إلى طبقة IDR ويتجنب المسارات التي تؤدي إلى إصدار تحذيرات (WARN)، مع الحفاظ على سلوك الاستعادة الصحيح دون تغيير.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.