CVE-2026-90071 in Linux
Zusammenfassung
von VulDB • 17.09.2026
Im Linux-Kernel wurde folgende Schwachstelle behoben:
net/sched: sch_teql: Wiederherstellung von skb->dev im Fehlerpfad des Slaves
teql_master_xmit() setzt skb->dev = slave, bevor es ndo_start_xmit() des Slaves aufruft, stellt diesen Wert jedoch nicht wieder her, wenn die Übertragung fehlschlägt. Das Paket (skb) wird dann an den nächsten Slave weitergegeben, zeigt aber weiterhin auf den vorherigen.
Wenn ein späterer Slave keinen aufgelösten Nachbarn hat, übergibt teql_resolve() das skb an neigh_event_send(), welches es in der arp_queue dieses Nachbarn mit dem veralteten skb->dev wartet. Da skb->dev keine Referenz hält, wird das net_device freigegeben, während das skb noch in der Warteschlange liegt. Jeder folgende Vorgang auf diesemskb – sei es arp_error_report() bei Zeitablauf oder neigh_direct_output() -> dev_queue_xmit(), sobald sich der Nachbar auflöst – verursacht einen Use-After-Free (UAF), wie im Folgenden dargestellt:
BUG: KASAN: slab-use-after-free in __icmp_send (net/ipv4/icmp.c:914 (discriminator 2)) Lesezugriff auf Größe 4 bei Adresse ffff888106e100b0 durch Task flood_packet/527 CPU: 0 UID: 0 PID: 527 Comm: flood_packet Nicht getaintet 7.2.0-rc6-g594d90519502 #1 PREEMPT(lazy) Hardwarename: QEMU Ubuntu 24.04 PC v2 (i440FX + PIIX, arch_caps fix, 1996), BIOS 1.16.3-debian-1.16.3-2 04/01/2014 Call Trace: <IRQ> dump_stack_lvl (lib/dump_stack.c:94 lib/dump_stack.c:120) print_report (mm/kasan/report.c:378 mm/kasan/report.c:482) ? __pfx__raw_spin_lock_irqsave (./include/asm-generic/qrwlock.h:122 (discriminator 4)) ? __icmp_send (net/ipv4/icmp.c:914 (discriminator 2)) kasan_report (mm/kasan/report.c:595) ? __icmp_send (net/ipv4/icmp.c:914 (discriminator 2)) __icmp_send (net/ipv4/icmp.c:914 (discriminator 2)) [...]
ipv4_link_failure (net/ipv4/route.c:1251 net/ipv4/route.c:1258) ? __pfx_ipv4_link_failure (./include/linux/skbuff.h:4327) ? _raw_write_lock (./include/linux/instrumented.h:55 ./include/linux/atomic/atomic-instrumented.h:1301 ./include/asm-generic/qrwlock.h:98 ./include/linux/rwlock_api_smp.h:230 kernel/locking/spinlock.c:304) ? __pfx__raw_write_lock (kernel/locking/spinlock.c:175) arp_error_report (./include/net/dst.h:438 net/ipv4/arp.c:296) neigh_invalidate (net/core/neighbour.c:1077) neigh_timer_handler (net/core/neighbour.c:1169) [...]
Zugewiesen durch Task 505: kasan_save_stack (mm/kasan/common.c:57) kasan_save_track (mm/kasan/common.c:78) __kasan_kmalloc (mm/kasan/common.c:398 mm/kasan/common.c:415) __kvmalloc_node_noprof (./include/linux/kasan.h:263 mm/slub.c:5334 mm/slub.c:6905) alloc_netdev_mqs (net/core/dev.c:12055 (discriminator 2)) rtnl_create_link (net/core/rtnetlink.c:3721) rtnl_newlink (net/core/rtnetlink.c:3903 net/core/rtnetlink.c:4044 net/core/rtnetlink.c:4159) rtnetlink_rcv_msg (net/core/dev.c:7076) [...]
Freigegeben durch Task 536: kasan_save_stack (mm/kasan/common.c:57) kasan_save_track (mm/kasan/common.c:78) kasan_save_free_info (mm/kasan/generic.c:584) __kasan_slab_free (mm/kasan/common.c:253 mm/kasan/common.c:285) kfree (./include/linux/kasan.h:235 mm/slub.c:2677 mm/slub.c:6377 mm/slub.c:6692) device_release (drivers/base/core.c:2636) kobject_put (lib/kobject.c:689 lib/kobject.c:720 ./include/linux/kref.h:65 lib/kobject.c:737) netdev_run_todo (net/core/dev.c:11756) rtnl_dellink (net/core/rtnetlink.c:157 ./include/linux/rtnetlink.h:135 net/core/rtnetlink.c:3651) rtnetlink_rcv_msg (net/core/rtnetlink.c:7076) [...]
Behoben wird dies durch die Wiederherstellung von skb->dev auf den Master am Ende jeder Iteration des Slaves.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.