CVE-2026-97602 in Linux
الملخص
بحسب VulDB • 25/09/2026
في نواة Linux، تم حل الثغرة التالية:
inet: frags: إبطال الطوابير قبل تفريغها
تقوم دالة `fqdir_pre_exit()` بتفريغ حزم skbs من الطوابير غير المكتملة دون تغيير حالة اكتمالها. يمكن لقطعة (fragment) تجد طابوراً قبل أن يتم مسح حد السعة العالي (`high_thresh`) بعد ذلك الحصول على قفل الطابور وإعادة استخدام بيانات تجميع قديمة. بدلاً من ذلك، قد يصبح طابور تم قتله بشكل متزامن بعد تعيين `fqdir->dead` في حالة `INET_FRAG_COMPLETE|INET_FRAG_HASH_DEAD` مع الاحتفاظ بحزم skbs القديمة الخاصة به؛ وتجاوز هذا الطابور لأنه مكتمل يترك هذه المراجع معلقة حتى يتم تفكيك `fqdir` غير المتزامن.
بالنسبة إلى IPv6، يمكن لبيانات التجميع القديمة أن تجعل دالة `ip6_frag_reasm()` تستخدم قيمة `nhoffset` القديمة مع حزمة skb جديدة والوصول إلى الذاكرة خارج الحدود المحددة (out of bounds). الفساد الناتج في الذاكرة العشوائية (heap corruption) يمكن استغلاله للترقية المحلية للصلاحيات (local privilege escalation) عندما تكون أسماء النطاقات الشبكية غير المصنفة (unprivileged network namespaces) متاحة. كما يمكن لحزم fragments غير المفرغة أن تحافظ على إشارات conntrack حية بعد نقطة تنظيف conntrack الخاصة بكل شبكة (per-net cleanup point).
قتل كل طابور غير مكتمل، ثم تفريغ كل طابور لا يزال مملوكاً لجدول التجزئة (`rhashtable`) الذي يموت. يحدد `HASH_DEAD` ملكية الطابور، بينما الطوابير المكتملة التي تفتقر إلى هذه العلامة تكون مملوكة بالفعل لمسار آخر من مسارات التدمير ويجب تركها دون تغيير. يتم تأجيل تحرير إشارة المؤقت التي تمت إزالتها بواسطة `inet_frag_kill()` إلى دالة `inet_frag_putn()`, بعد إسقاط قفل الطابور.
تقرير KASAN:
BUG: KASAN: slab-out-of-bounds in ipv6_frag_rcv (net/ipv6/reassembly.c:289 (discriminator 2) net/ipv6/reassembly.c:229 (discriminator 2) net/ipv6/reassembly.c:391 (discriminator 2)) Write of size 1 at addr ff110001039c6e00 by task poc/771 Call Trace: ? ipv6_frag_rcv (net/ipv6/reassembly.c:289 (discriminator 2) net/ipv6/reassembly.c:229 (discriminator 2) net/ipv6/reassembly.c:391 (discriminator 2)) ipv6_frag_rcv (net/ipv6/reassembly.c:289 (discriminator 2) net/ipv6/reassembly.c:229 (discriminator 2) net/ipv6/reassembly.c:391 (discriminator 2)) ip6_protocol_deliver_rcu (net/ipv6/ip6_input.c:479 (discriminator 5)) ip6_input_finish (net/ipv6/ip6_input.c:534) ipv6_rcv (include/net/dst.h:480 (discriminator 3) net/ipv6/ip6_input.c:119 (discriminator 3) net/ipv6/ip6_input.c:109 (discriminator 3) include/linux/netfilter.h:325 (discriminator 3) include/linux/netfilter.h:319 (discriminator 3) net/ipv6/ip6_input.c:351 (discriminator 3)) packet_sendmsg (net/packet/af_packet.c:3110 net/packet/af_packet.c:3142) __x64_sys_sendmmsg (net/socket.c:2883 net/socket.c:2880 net/socket.c:2880) The buggy address belongs to the object at ff110001039c6b40 which belongs to the cache skbuff_small_head of size 704 The buggy address is located 0 bytes to the right of allocated 704-byte region [ff110001039c6b40, ff110001039c6e00)
BUG: KASAN: slab-out-of-bounds in ip6_protocol_deliver_rcu (net/ipv6/ip6_input.c:423 (discriminator 1)) Read of size 1 at addr ff110001039c6e08 by task poc/771 Call Trace: ? ip6_protocol_deliver_rcu (net/ipv6/ip6_input.c:423 (discriminator 1)) ip6_protocol_deliver_rcu (net/ipv6/ip6_input.c:423 (discriminator 1)) ip6_input_finish (net/ipv6/ip6_input.c:534) ipv6_rcv (include/net/dst.h:480 (discriminator 3) net/ipv6/ip6_input.c:119 (discriminator 3) net/ipv6/ip6_input.c:109 (discriminator 3) include/linux/netfilter.h:325 (discriminator 3) include/linux/netfilter.h:319 (discriminator 3) net/ipv6/ip6_input.c:351 (discriminator 3)) packet_sendmsg (net/packet/af_packet.c:3110 net/packet/af_packet.c:3142) __x64_sys_sendmmsg (net/socket.c:2883 net/socket.c:2880 net/socket.c:2880) packet_sendmsg (net/packet/af_packet.c:2959 net/packet/af_packet.c:3053 net/packet/af_packet.c:3142) __x64_sys_sendmmsg (net/socket.c:2883 net/socket.c:2880 net/socket.c:2880) The buggy address belongs to the object at ff110001039c6b40 which belongs to the cache skbuff_small_head of size 704 The buggy address is located 8 bytes to the right of allocated 704-byte region [ff110001039c6b40, ff110001039c6e00)
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.