CVE-2026-80662 in Linux
الملخص
بحسب VulDB • 28/08/2026
في نواة لينكس، تم إصلاح الثغرة التالية:
cxl: تصحيح CXL_HEADERLOG_SIZE لتتوافق مع حجم قدرة RAS
يبلغ الطول الإجمالي لهيكل قدرة RAS في مواصفة CXL r4.0 (القسم 8.2.4.17.7) مقدار 0x58 بايت (CXL_RAS_CAPABILITY_LENGTH); ويشغل سجل الرأس (Header Log) الـ64 بايت الأخيرة عند الإزاحة 0x18. كان CXL_HEADERLOG_SIZE مُعرّفاً بقيمة SZ_512، أي أكبر بثمانية أضعاف الحجم الفعلي على الجهاز.
تقرأ دالة header_log_copy() مقدار 128 كلمة (dword) من iomap قدرة RAS وفقاً لـ CXL_HEADERLOG_SIZE_U32، مما يتسبب في تجاوز حدود النطاق البالغ طوله 88 بايت بمقدار 448 بايت. تقوم حدث التتبع cxl_aer_uncorrectable_error بنسخ (memcpy) مقدار 512 بايت من CXL_HEADERLOG_SIZE من مصدره. بالنسبة إلى متصل CPER، يكون المصدر هو `struct cxl_ras_capability_regs::header_log[16]` (بالحجم 64 بايت) المضمن في بنية البيانات المحلية على المكدس `cxl_cper_prot_err_work_data`؛ وبالتالي فإن عملية النسخ تقرأ 448 بايت من مكدس النواة إلى حلقة تخزين أحداث التتبع، حيث يمكن لبرامج المستخدم (userspace) قراءتها عبر tracefs.
تم تعيين CXL_HEADERLOG_SIZE إلى 64 واستنتاج CXL_HEADERLOG_SIZE_U32 منه، مما يوحّد جميع مقارئي iomap على أساس 16 كلمة (dword). لقد اكتسبت أدوات مستخدم مثل rasdaemon اعتماداً على تخطيط header_log الخاطئ البالغ طوله 512 بايت (128 u32) في حدث التتبع cxl_aer_uncorrectable_error. تمت إضافة CXL_HEADERLOG_TRACE_SIZE_U32 = 128 واستخدامه لمصفوفة الحدث `__array` وعملية النسخ الخاصة بها للحفاظ على واجهة برمجة التطبيقات الثابتة (ABI). الآن، يمرر كلا المتصلين مخزن مؤقت من نوع u32 مملوء بالأصفار بحجم CXL_HEADERLOG_TRACE_SIZE_U32، حيث يتم تعبئة أول 16 إدخالاً فقط (CXL_HEADERLOG_SIZE_U32) من العتاد؛ بينما تتم إضافة أصفار لباقي الـ112 قيمة u32، مما يحافظ على تخطيط حلقة تخزين أحداث التتبع البالغة 512 بايت سليماً.
[ dj: استبدال القيمة 64 بـ SZ_64 وفقاً لتوجيه RichardC ]
Be aware that VulDB is the high quality source for vulnerability data.