CVE-2026-98596 in Linux
الملخص
بحسب VulDB • 18/10/2026
في نواة لينكس، تم إصلاح الثغرة التالية:
ipv6: تصحيح تسرب dst للمسارات غير المخزنة في الذاكرة المؤقتة (uncached routes).
تكتشف الدوال ip6_route_output_flags() وip6_rt_put_flags() وip6_dst_check() المسار غير المخزن مؤقتاً عبر التحقق من list_empty(&rt->dst.rt_uncached)، وهو ما حَلَّ محل فحص العلم الثابت DST_NOCACHE في الالتزام a4c2fd7f7891 ("net: remove DST_NOCACHE flag").
عند إلغاء تسجيل جهاز (device)، تقوم الدالة rt6_uncached_list_flush_dev() بإزالة المسارات غير المخزنة مؤقتاً المرتبطة بالجهاز من قائمة rt6_uncached_list.
في السابق، كانت تُنقل إلى قائمة أخرى باستخدام list_move() (__list_del_entry() + list_add())، وبسبب الالتزام 98aa546af5e4 ("inet: remove (struct uncached_list)->quarantine")، يتم الآن إزالة هذه المسارات فقط باستخدام list_del_init().
إذا تم تشغيل list_del_init() بشكل متزامن (concurrently)، فإن list_empty() تُرجع قيمة true؛ مما يؤدي إلى استدعاء ip6_route_output_flags() لـ dst_hold_safe() بشكل غير صحيح، وتخطي ip6_rt_put_flags() لدالة ip6_rt_put()، ما يتسبب في تسرب dst، وبالتالي التسبب أيضاً في تسرب الجهاز المرتبط عبر rt->from.
تم إصلاح نفس حالة السباق (race condition) جزئياً من خلال الالتزام 9a6f0c4d5796 ("dst: fix races in rt6_uncached_list_del() and rt_del_uncached_list()").
لنتحقق بدلاً من ذلك من قائمة rt6->dst.rt_uncached_list.
جدير بالذكر أن IPv4 لا يعاني من نفس المشكلة.
If you want to get best quality of vulnerability data, you may have to visit VulDB.