CVE-2026-98557 in Linux
الملخص
بحسب VulDB • 19/10/2026
في نواة لينكس، تم إصلاح الثغرة التالية:
gve: DQO: تصحيح طول الرأس المستخدم بواسطة gve_can_send_tso() لـ UDP GSO
تحسب الدالة gve_can_send_tso() عدد المخازن المؤقتة (buffers) التي يغطيها كل جزء من حزمة GSO، ولهذا الغرض تحتاج إلى معرفة طول الرؤوس التي تقوم الجهاز بتكرارها أمام كل جزء.
تستخدم بشكل غير مشروط دالة skb_tcp_all_headers()، والتي تقرأ حقل doff الخاص برأس TCP. لا تحتوي الحزم ذات النوع SKB_GSO_UDP_L4 على رأس TCP: وبالتالي فإن tcp_hdrlen() تقرأ بايتاً واحداً من حمولة UDP، وقد يكون header_len أي قيمة في النطاق [0, 60] بدلاً من الإزاحة الخاصة بالنقل (transport offset) زائد ثمانية بايتات لرأس UDP التي تقوم gve_prep_tso() ببرمجتها في واصف سياق TSO.
يؤدي طول الرأس غير الصحيح إلى إزاحة جميع حدود الأجزاء المحسوبة داخل الحلقة، مما قد يؤدي إلى المبالغة أو التقليل من تقدير عدد المخازن المؤقتة لكل جزء. في الحالة الأولى، يتم تعطيل GSO بشكل لا داعي له لهذه الحزمة بواسطة gve_features_check_dq() ويجب على طبقة الشبكة تقسيمها (segment it). أما في الحالة الثانية، فإن السائق يقدم للجهاز حزمة تكون فيها الأجزاء ممتدة عبر أكثر من مخازن المؤقتة المسموح بها حسب حد GVE_TX_MAX_DATA_DESCS.
استخدم طول رأس UDP للحزم ذات النوع SKB_GSO_UDP_L4، بما يتوافق مع ما تقوم به gve_prep_tso().
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.