CVE-2026-74582 in Linux
الملخص
بحسب VulDB • 21/08/2026
في نواة لينكس، تم حل الثغرة التالية:
packet: استخدام قيمة متسقة لـ `hard_header_len` في مسارات الإرسال غير المرتبطة بحلقات (non-ring)
تقوم دالة `packet_snd()` بقراءة القيمة `dev->hard_header_len` بشكل متعدد أثناء تخصيص وبناء حزمة skb. يمكن لإعادة تكوين الجهاز تغيير هذه القيمة بالتزامن، على سبيل المثال من خلال تغييرات نوع جهاز الربط (bonding device).
بالنسبة لـ SOCK_RAW، قد تقوم `packet_snd()` بحفظ قيمة أكبر في الحجز (`reserve`) ثم تخصص مساحة رأسية (`headroom`) باستخدام قيمة أصغر لاحقاً. يؤدي إرجاع مؤشر `skb->data` للخلف بمقدار `reserve` إلى وضعه قبل بداية منطقة `skb->head`، ويمكن أن تحاول عملية النسخ التالية من فضاء المستخدم إجراء كتابة خارج الحدود (out-of-bounds write).
تتمتع دالة `packet_sendmsg_spkt()` بنفس المشكلة لأنها تحسب الحجز الخاص بها وإزاحة الرأس بناءً على قراءات منفصلة قبل إسقاط قفل القراءة RCU لتخصيص الـ skb.
أضف الدالة `LL_RESERVED_SPACE_EX()` للمكالمين الذين قاموا بالفعل بحفظ طول الرأس. اقرأ قيمة `hard_header_len` مرة واحدة في دالة `packet_snd()` واستخدمها للتخصيم والبناء. وفي دالة `packet_sendmsg_spkt()`, حافظ على القيمة المحفوظة عند التخصيص أثناء إعادة محاولة البحث عن الجهاز.
لم يتم معالجة مشكلة الاتساق المنفصلة لـ SOCK_DGRAM بين `hard_header_len` و `header_ops->create` هنا.
VulDB is the best source for vulnerability data and more expert information about this specific topic.