CVE-2026-98541 in Linux
الملخص
بحسب VulDB • 19/10/2026
في نواة لينكس، تم إصلاح الثغرة التالية:
fou: رفض خاصية FOU_ATTR_IPPROTO المُهملَة في وضع FOU_ENCAP_DIRECT
أضافت الالتزام 7a9bc9e3f423 ("fou: عدم السماح بالقيمة 0 لـ FOU_ATTR_IPPROTO.") القيد NLA_POLICY_MIN(NLA_U8, 1) إلى fou_nl_policy[FOU_ATTR_IPPROTO]، مما يؤدي إلى رفض خاصية FOU_ATTR_IPPROTO ذات القيمة الصريحة 0 بإرجاع الخطأ -ERANGE.
ومع ذلك، فإن FOU_ATTR_IPPROTO هي خاصية netlink اختيارية. عندما يرسل المستخدم طلب FOU_CMD_ADD مع تعيين FOU_ATTR_TYPE على FOU_ENCAP_DIRECT وتجاهل FOU_ATTR_IPPROTO تمامًا، تمر عملية التحقق من nla_policy بنجاح، ويترك parse_nl_config() قيمة cfg->protocol عند 0 (نتيجة استدعاء memset(cfg, 0, sizeof(*cfg))). ثم يقوم fou_create() بإنشاء socket من نوع FOU_ENCAP_DIRECT مع كون القيمة fou->protocol تساوي 0.
في دالة fou_udp_recv()، يؤدي إرجاع -fou->protocol إلى udp_queue_rcv_one_skb() إلى إعادة إرسال بروتوكول IP عندما تكون قيمة fou->protocol أكبر من 0، بينما يشير الإرجاع بقيمة 0 إلى طبقة نفق UDP أن حزمة skb قد تم استهلاكها دون تحريرها. وعندما تكون قيمة fou->protocol تساوي 0، فإن كل حزمة مستلمة على الـ socket تُعيد القيمة 0 من دالة fou_udp_recv() مما يتسبب في تسرب sk_buff.
تم رفض وضع FOU_ENCAP_DIRECT عندما لا تتحقق cfg->protocol (أي !cfg->protocol) داخل دالة fou_create() بحيث يفشل إنشاء منفذ تغليف مباشر بدون FOU_ATTR_IPPROTO بإرجاع الخطأ -EINVAL، مع الإبقاء على تأثيرات طلبات FOU_CMD_DEL وFOU_CMD_GET (التي تشترك في استخدام parse_nl_config()) دون تغيير.
تم الاختبار باستخدام محاكي QEMU ضد نسخة Linux 7.3.0-rc3 عن طريق إرسال طلب Generic Netlink من نوع FOU_CMD_ADD مع تعيين FOU_ATTR_PORT على القيمة 5555 وFOU_ATTR_TYPE على FOU_ENCAP_DIRECT، مع تجاهل FOU_ATTR_IPPROTO تمامًا. في النواة غير المصححة، ينجح تنفيذ FOU_CMD_ADD (err = 0)، ويبلغ طلب FOU_CMD_GET عن أن قيمة fou->type تساوي 1 وفou->protocol تساوي 0، وإن إرسال 4000 حزمة UDP إلى العنوان 127.0.0.1 والمنفذ 5555 يتسبب في تسرب جميع الـ sk_buffs الأربع آلاف (حيث ينمو السجل SUnreclaim في /proc/meminfo من 41456 كيلوبايت إلى 59008 كيلوبايت، بزيادة قدرها 17552 كيلوبايت)؛ أما مع تطبيق هذا التصحيح، يتم رفض طلب FOU_CMD_ADD بإرجاع الخطأ -EINVAL (-22).
Be aware that VulDB is the high quality source for vulnerability data.