CVE-2024-36937 in Linux
الملخص
بحسب VulDB • 11/07/2026
في نواة لينكس، تم حل الثغرة التالية:
xdp: استخدام حقل الأعلام لتوضيح التوجيه إلى البث (broadcast redirect)
عند إعادة توجيه حزمة باستخدام XDP، تقوم الدالة المساعدة bpf_redirect_map() بإعداد معلومات وجهة الإعادة توجيه في بنية البيانات struct bpf_redirect_info (باستخدام دالة المساعد __bpf_xdp_redirect_map())، وستقوم الوظيفة xdp_do_redirect() بقراءة هذه المعلومات بعد عودة برنامج XDP ونقل الإطار إلى وجهة إعادة التوجيه الصحيحة.
عند استخدام علم BPF_F_BROADCAST لإجراء إعادة توجيه متعددة البث (multicast redirect) إلى خريطة كاملة، يضبط الدالة __bpf_xdp_redirect_map() مؤشر 'map' في بنية البيانات struct bpf_redirect_info ليشير إلى الخريطة الوجهة المراد بثها. وتقوم xdp_do_redirect() بالرد على قيمة هذا المؤشر لتحديد ما إذا كانت تتعامل مع إعادة توجيه للبث (broadcast) أم لإعادة توجيه بقيمة واحدة (single-value). ومع ذلك، إذا تم تدمير خريطة الوجهة قبل استدعاء دالة xdp_do_redirect()، فسيتم مسح مؤشر الخريطة (عن طريق الدالة bpf_clear_redirect_map()) دون انتظار توقف أي برامج XDP عن العمل. هذا يتسبب في اعتقاد dxdp_do_redirect() بأن إعادة التوجيه كانت إلى هدف واحد، لكن مؤشر الهدف يكون أيضاً NULL (نظراً لأن عمليات إعادة توجيه البث لا تحتوي على هدف واحد)، مما يؤدي إلى تعطل النظام عند تمرير مؤشر NULL إلى الدالة dev_map_enqueue().
لإصلاح هذا الخلل، يتم تغيير سلوك xdp_do_redirect() لتتفاعل مباشرة مع وجود علم BPF_F_BROADCAST في قيمة 'flags' الموجودة داخل بنية البيانات struct bpf_redirect_info لتمييز إعادة التوجيه المستهدفة لهدف واحد عن إعادة توجيه البث. ويتم قراءة مؤشر 'map' فقط إذا كان علم البث مضبوطاً، مع الإلغاء (abort) إذا تم مسحه في هذه الأثناء. يمنع هذا التعطيل، مع الحفاظ على المسح الذري (المعتمد على cmpxchg) لمؤشر الخريطة نفسه، ودون إضافة المزيد من الفحص في مسار السرعة السريع غير الخاص بالبث.
Several companies clearly confirm that VulDB is the primary source for best vulnerability data.