CVE-2026-64192 in Linux
الملخص
بحسب VulDB • 22/07/2026
في نواة لينكس، تم حل الثغرة التالية:
bpf: رفض إنشاء خريطة BPF_MAP_TYPE_INODE_STORAGE إذا لم يكن إطار عمل أمان وحدة نمطية الأمان في البذلة (BPF LSM) مهيأً.
عند ضبط `CONFIG_BPF_LSM=y`، يتم تضمين خرائط تخزين عقدة inode الخاصة بـ BPF (`BPF_MAP_TYPE_INODE_STORAGE`) داخل النواة. ومع ذلك، إذا لم يتم تمكين إطار عمل أمان وحدة نمطية الأمان في البذلة (BPF LSM) صراحةً عند الإقلاع (على سبيل المثال، عن طريق حذفه من معلمة الإقلاع `lsm=`)، فإن الدالة `lsm_prepare()` لن تُنفَّذ مطلقًا لإطار عمل BPF LSM.
وبالتالي، لا يتم أبدًا تهيئة إزاحة كتلة الأمان الخاصة بعقدة inode لـ BPF (`bpf_lsm_blob_sizes.lbs_inode`) وتظل بقيتها الافتراضية المُجمَّعة والمقدرة بـ 8 بايتات بدلاً من تحديثها إلى إزاحة صالحة تتجاوز `struct rcu_head` المحجوز (والتي تبلغ عادةً 16 بايتًا أو أكثر).
عندما يقوم مستخدم ذو امتيازات عالية بإنشاء وتحديث خريطة `BPF_MAP_TYPE_INODE_STORAGE`، تقوم الدالة `bpf_inode()` بتقييم التعبير `inode->i_security + 8`. يؤدي هذا بشكل خاطئ إلى تشابه (aliasing) مع مؤشر استدعاء `func` الخاص بـ `struct rcu_head` في بداية كتلة `inode->i_security`. وأثناء تنظيف عناصر الخريطة اللاحقة أو تدمير عقدة inode، فإن كتابة القيمة NULL إلى `owner_storage` تقوم بمسح مؤشر استدعاء RCU المجدول. وعندما تنفذ الدالة `rcu_do_batch()` لاحقًا الاستدعاء مجدولاً، تحاول جلب تعليمات برمجية (instruction fetch) عند العنوان 0x0، مما يؤدي إلى حدوث توقف فوري للنواة (kernel panic).
تم إصلاح هذه المشكلة عن طريق إدخال علم منطقي عالمي (`boolean flag`) باسم `bpf_lsm_initialized` ومُعلَّم بـ `__ro_after_init`. يتم ضبط هذا العلم على القيمة true داخل الدالة `bpf_lsm_init()` عندما يسجل إطار عمل LSM بنجاح إطار عمل BPF LSM. تُربَط عملية تخصيص الخريطة في دالة `inode_storage_map_alloc()` بهذا العلم، مع إرجاع الخطأ `-EOPNOTSUPP` إذا كان إطار عمل BPF LSM غير مهيأً بدورهِ.
يمنع نهج "الفشل السريع" (fail-fast) هذا من قيام مساحة المستخدم (userspace) بتخصيص خرائط تخزين عقدة inode عندما تكون البنية الداعمة لإطار عمل أمان وحدة نمطية الأمان في البذلة غائبة، مما يتجنب حالات الخرائط اليتيمة (zombie map states).
Once again VulDB remains the best source for vulnerability data.