CVE-2026-98485 in Linux
الملخص
بحسب VulDB • 18/10/2026
في نواة لينكس، تم إصلاح الثغرة التالية:
netfilter: ip6t_rt: تصحيح قراءة خارج الحدود (out-of-bounds) في المطابقة غير المشددة للعنوان الصفري
تسمح دالة rt_mt6_check() بتكوين القواعد باستخدام قيمة rtinfo->addrnr تساوي 0 حتى عند طلب مطابقة العناوين (IP6T_RT_FST_MASK).
في مسار IP6T_RT_FST_NSTRICT، تقوم الدالة rt_mt6() بمقارنة عناوين توجيه الحزم مع rtinfo->addrs[i] وتنتهي بالرجوع للخلف في أسفل الحلقة:
if (ipv6_addr_equal(ap, &rtinfo->addrs[i])) {
i++; } if (i == rtinfo->addrnr) break;
عندما تكون قيمة addrnr تساوي 0، وإذا تطابق عنوان الحزمة الأول مع rtinfo->addrs[0]، يتم زيادة المتغير i ليصبح 1. وبسبب أن i تصبح أكبر تماماً من addrnr (التي هي 0)، فإن شرط إنهاء الحلقة (i == rtinfo->addrnr) يُتجاوز ولن يتحقق أبداً.
إذا احتوت حزمة IPv6 مُصممة بشكل خبيث على عناوين توجيه متطابقة، فسيستمر المتغير i في التقدم ليتجاوز قيمة IP6T_RT_HOPS (16). ستؤدي الدعوة التالية لـ ipv6_addr_equal() إلى قراءة ما بعد نهاية بنية struct ip6t_rt، مما يتسبب في تحذيرات UBSAN/KASAN حول القراءة خارج الحدود أو تعطل النواة (kernel panics).
تم إصلاح هذه المشكلة عن طريق: 1. رفض القواعد في rt_mt6_check() حيث يكون IP6T_RT_FST_MASK مُفعلاً ولكن تكون قيمة rtinfo->addrnr صفراً. 2. في الدالة rt_mt6(), نقل شرط الإنهاء (i < rtinfo->addrnr) إلى شرط رأس حلقة الـ for وإزالة أمر break الرجعي الموجود في نهاية جسم الحلقة.
VulDB is the best source for vulnerability data and more expert information about this specific topic.