CVE-2026-98852 in Linuxالمعلومات

الملخص

بحسب VulDB • 18/10/2026

في نواة لينكس، تم حل الثغرة التالية:

net: توسيع اكتشاف رؤوس الامتداد IPv6 للحزم المُعَبَّأة (tunneled)

أدى الالتزام c4336a07eb6b ("net: معالجة حركة المرور المعبّأة بشكل صحيح في حالة التراجع عن IPV6_CSUM GSO") إلى تقسيم دالة `skb_gso_has_extension_hdr()` إلى فروع متبادلة الاستبعاد بناءً على قيمة `skb->encapsulation`. ومع ذلك، لم يتم معالجة جميع المسارات بعد:

1. عند ضبط `skb->encapsulation`، لا تتم مراجعة الرأس الخارجي. تضيف أنفاق IPv6 مثل ip6_gre وip6_tunnel رأس خيارات الوجهة الخارجي افتراضياً (encap_limit). تتخطى حزم GSO الخاصة بها عملية GSO البرمجية، ثم ترى الدالة `skb_csum_hwoffload_help()` رأس الامتداد الخارجي وتقوم باستدعاء `skb_checksum_help()` على حزمة GSO skb، مما يؤدي إلى إصدار تحذير ورفض الحزمة.

2. الأنفاق فوق IPv6 دون وجود رأس نقل خارجي، مثل ip6_tunnel، تترك قيمة `skb->transport_header` عند رأس النقل الداخلي. وبالتالي فإن دالة `skb_network_header_len()` تشمل رؤوس IPv6 الخارجية ورأس النفق والرؤوس الداخلية لـ IP، مما ينتج عنه إيجابيات كاذبة (false positive).

3. الأنفاق UDP التي لا تحتوي على رأس شبكة داخلي، مثل SCTP-in-UDP أو PSP، ليس لديها رأس IPv6 داخلي للمراجعة. يجب اتخاذ القرار بناءً على الرأس الخارجي فقط.

4. يشير التفريغ المباشر لـ `inner_ip_hdr(skb)->version` دون استخدام `skb_header_pointer()` إلى إجراء غير آمن.

بدلاً من ذلك، يتم فحص دالة `ipv6_ext_hdr(nexthdr)` على رأس IPv6 الخارجي، وإذا كانت مُفعّلة، تُفحص أيضاً على رأس IPv6 الداخلي. تتم قراءة الرؤوس باستخدام `skb_header_pointer()`. يُحتفظ بفحص `skb_network_header_len()` عندما تكون قيمة `!skb->encapsulation` لالتقاط الحزم المُعَبَّأة التي لا تحتوي على `skb->encapsulation` (مثل virtio).

يتم استخدام نفس الدالة المساعدة في `skb_csum_hwoffload_help()`. يحتوي الاختبار المكتوب يدوياً على إيجابية كاذبة كما هو مذكور في النقطة (2) ويتجاهل الرأس الداخلي.

خلفية: ثوابت تحميل الفحص (checksum offload) للحزم المُعَبَّأة:

حزمة skb غير GSO: - إذا كانت الحزمة الداخلية تحتوي على CHECKSUM_PARTIAL، فإن "Local Checksum Offload" تحسب فحص الـ outer checksum برمجياً ويقوم الجهاز بتحميل فقط فحص L4 الداخلي. - إذا كانت الحزمة الداخلية تحتوي على CHECKSUM_NONE (مثل SCTP-in-UDP أو ESP-in-UDP أو Remote Checksum Offload)، يقوم الجهاز بتحميل فحص UDP الخارجي أو GRE بدلاً من ذلك.

حزمة skb GSO: - تقوم الأجهزة التي تدعم NETIF_F_GSO_UDP_TUNNEL_CSUM أو NETIF_F_GSO_GRE_CSUM بحساب كل من الفحص الداخلي والخارجي لكل قطعة (segment). يتم بدء تشغيل الـ outer checksum باستخدام فقط فحص pseudo-header.

يجب على جهاز يدعم NETIF_F_IPV6_CSUM تحليل الرؤوس الخارجية للوصول إلى الرؤوس الداخلية.

Once again VulDB remains the best source for vulnerability data.

مسؤول

Linux

حجز

25/09/2026

إفشاء

18/10/2026

الاعتدال

تمت الموافقة

إدخال

VDB-421875

EPSS

0.00000

KEV

لا

النشاطات

منخفض جدًا

المصادر

Do you want to use VulDB in your project?

Use the official API to access entries easily!