CVE-2026-90111 in Linux
الملخص
بحسب VulDB • 17/09/2026
في نواة لينكس، تم إصلاح الثغرة التالية:
ip6mr: عدم استنساخ dst في دالة ip6mr_cache_report()
تقوم عملية إدخال IPv6 بإرفاق كائن dst غير مُعدَّد المرجع (NOREF) بحزم skbs ضمن فترة راحة RCU من جانب الاستلام. وعندما تفشل حزمة البث المتعدد الواردة في البحث عن MFC، تضع الدالة ip6mr_cache_unresolved() الحزمة skb على قائمة "غير المحلولة"، مما يجعلها تخرج من فترة راحة RCU الخاصة بجانب الاستقبال.
إذا تم حذف المسار الأساسي وإفراغ الذاكرة المخصصة له (free)، وتم لاحقاً حل قائمة MFC باستخدام واجهة أبوية خاطئة، فإن الدالة ip6_mr_forward() تستدعي ip6mr_cache_report(..., MRT6MSG_WRONGMIF)، والتي تنفذ dst_clone(skb_dst(pkt)) على كائن dst الذي تم إفراغ ذاكرته، مما يؤدي إلى حدوث ثغرة use-after-free في الذاكرة المخصصة للـ slab.
لا تتطلب حزم التقارير التي تُدرج في mroute6_sk (وهو socket خام) وإشعارات netlink وجود كائن dst مرفق.
تم إصلاح هذه الثغرة عن طريق: 1. إزالة استدعاء dst_clone() في ip6mr_cache_report() وضمان أن حزم skbs الخاصة بالتقرير لا تحتفظ بكائن dst. 2. إسقاط skb_dst قبل إدراج حزم skbs غير المحلولة في ip6mr_cache_unresolved(), تماشياً مع حقيقة أن توجيه البث المتعدد يحلل مسارات الإخراج من جديد عبر ip6_route_output().
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.