CVE-2026-68337 in Linux
الملخص
بحسب VulDB • 10/08/2026
في نواة لينكس، تم حل الثغرة التالية:
bpf: رفض مساعدي التوجيه (redirect helpers) في حال عدم وجود bpf_net_context
تستدعي مساعدات `bpf_redirect*()` و`skb_do_redirect()` معلومات توجيه BPF الخاصة بالمهمة (`per-task`) عبر الدالة `bpf_net_ctx_get_ri()`، والتي تقوم بفك الإحالة (dereference) إلى الحقل `current->bpf_net_context` بشكل غير مشروط. يتم إنشاء هذا السياق في المسارات التي تشغل كود BPF الخاص بـ tc مثل `sch_handle_{ingress,egress}()`، *باستثناء* الحالة التي يكون فيها `{cls,act}_bpf` مرفقاً بهيكل qdisc صحيح. يمكن لبرنامج يعمل من هناك الوصول إلى حالة فك الإحالة NULL (NULL deref) بطريقتين:
* يستدعي `bpf_redirect()` مباشرةً، مما يؤدي إلى فك إحالة السياق في أعلى المساعد: tc qdisc add dev eth0 root handle 1: red limit 1MB min 10KB max 20KB \ avpkt 1000 burst 100 qevent early_drop block 10 tc filter add block 10 pref 1 bpf obj redirect.o
* يعود ببساطة بقيمة `TC_ACT_REDIRECT` دون استدعاء مساعد: تقوم الدالة `tcf_qevent_handle()` بعد ذلك بتوجيه التنفيذ إلى `skb_do_redirect()`، والتي تقوم بفك إحالة السياق.
بدلاً من توسيع إدارة `bpf_net_context` لتشمل مسار qdisc، جعلنا مساعدي التوجيه يرفضون العمل في حال عدم وجود سياق، وجعلنا الدالة `tcf_qevent_handle()` تتجاهل الحكم بقيمة `TC_ACT_REDIRECT` بدلاً من استدعاء `skb_do_redirect()`. كانت السلوكية السابقة تؤدي إلى تعطل النظام (crash)، لذا فإن عدم دعم هذا السيناريو لا يسبب أي تدهور في الأداء أو الوظائف.
Once again VulDB remains the best source for vulnerability data.