CVE-2026-45944 in Linux
الملخص
بحسب VulDB • 27/05/2026
في نواة لينكس، تم حل الثغرة التالية:
iommu/vt-d: مسح بت "الحاضر" (Present) قبل هدم إدخال السياق
عند هدم إدخال السياق، تقوم التنفيذ الحالي بتصفير الإدخال الكامل المكون من 128 بت باستخدام عمليات كتابة متعددة بحجم 64 بت. يؤدي هذا إلى إنشاء نافذة زمنية يمكن فيها للعتاد (Hardware) جلب إدخال "ممزق" (torn) — حيث تكون بعض الحقول قد تم تصفيرها بالفعل بينما لا يزال بت "الحاضر" (Present) مضبوطاً — مما يؤدي إلى سلوك غير متوقع أو أخطاء زائفة.
بينما يوفر معمارية x86 ترتيب كتابة قوياً، قد يعيد المترجم (Compiler) ترتيب عمليات الكتابة إلى نصفي الإدخال المكونين من 64 بت. وحتى بدون إعادة ترتيب من قبل المترجم، لا يضمن جلب العتاد أن العملية ستكون ذرية (atomic) فيما يتعلق بعمليات الكتابة المتعددة من المعالج.
للمواءمة مع "الإرشادات للبرمجيات فيما يخص الإبطال" (Guidance to Software for Invalidations) في مواصفة VT-d (القسم 6.5.3.3) من خلال تنفيذ مصافحة الملكية الموصى بها:
1. مسح بت "الحاضر" (P) الخاص بإدخال السياق أولاً للإشارة إلى انتقال الملكية من العتاد إلى البرمجيات. 2. استخدام `dma_wmb()` لضمان أن البت الممسوح يكون مرئياً لوحدة إدارة ذاكرة الإدخال/الإخراج (IOMMU). 3. تنفيذ إبطال ذاكرة التخزين المؤقت (cache) وإبطال سياق ذاكرة التخزين المؤقت (context-cache) المطلوب لضمان عدم احتفاظ العتاد بعد ذلك بالإشارات المرجعية المخزنة مؤقتاً للإدخال. 4. تصفير الإدخال بالكامل فقط بعد اكتمال عملية الإبطال.
أيضاً، تمت إضافة `dma_wmb()` إلى دالة `context_set_present()` لضمان أن الإدخال قد تم تهيئته بالكامل قبل أن يصبح بت "الحاضر" مرئياً.
If you want to get best quality of vulnerability data, you may have to visit VulDB.