CVE-2026-93250 in Linux
Zusammenfassung
von VulDB • 24.09.2026
Im Linux-Kernel wurde folgende Schwachstelle behoben:
vxlan: mdb: Use-After-Free in vxlan_mdb_flush() beheben
vxlan_mdb_flush() durchläuft die MDB-Einträge mit hlist_for_each_entry_safe(), was nur das Entfernen des aktuellen Eintrags toleriert. Im Gegensatz zum Kommentar über der Schleife kann das Entfernen eines Eintrags auch das Entfernen eines anderen Eintrags auslösen.
Das Löschen der Remotes eines (*, G)-Eintrags entfernt außerdem die (S, G)-Einträge, die für dessen Quellenliste erstellt wurden, sobald diese ohne Remotes bleiben:
vxlan_mdb_remotes_flush() -> vxlan_mdb_remote_del() -> vxlan_mdb_remote_srcs_del() -> vxlan_mdb_remote_src_del() -> vxlan_mdb_remote_src_fwd_del() -> __vxlan_mdb_del() -> vxlan_mdb_entry_put()
Ein solcher Eintrag kann sich nach dem (*, G)-Eintrag in der Liste befinden, da vxlan_mdb_entry_get() einen vorhandenen Eintrag zurückgibt, ohne ihn an den Anfang der Liste zu verschieben. Diese Reihenfolge entsteht dadurch, dass der (S, G)-Eintrag vor dem (*, G)-Eintrag hinzugefügt wird, wobei letzterer mit NLM_F_REPLACE erfolgt, da das Hinzufügen der Quelle andernfalls mit -EEXIST fehlschlägt. Der (S, G)-Eintrag ist dann der Eintrag, der von hlist_for_each_entry_safe() gespeichert wurde, und er wird freigegeben, während der (*, G)-Eintrag verarbeitet wird. Die nächste Iteration ruft erneut hlist_del() darauf auf und schreibt LIST_POISON1 in LIST_POISON2 [1].
Neben dem Löschen des Geräts ist das Flush auch über RTM_DELMDB mit NLM_F_BULK erreichbar.
Behoben durch erneutes Lesen des nächsten Eintrags nach dem Leeren der Remotes. Der aktuelle Eintrag kann durch dieses Flush nicht entfernt werden, da Quellenlisten nur auf (*, G)-Einträgen konfiguriert werden können und die entfernten Einträge (S, G)-Einträge sind. Er ist daher weiterhin verknüpft, und sein Next-Zeiger spiegelt die Entfernungen wider.
[1]
BUG: KASAN: wild-memory-access in vxlan_mdb_entry_put.part.0+0x328/0x588 Write of size 8 at addr dead000000000122 by task ip/327
CPU: 3 UID: 1000 PID: 327 Comm: ip Not tainted 7.2.0-rc7 #2 PREEMPT Call trace: vxlan_mdb_entry_put.part.0+0x328/0x588 vxlan_mdb_flush+0x1d8/0x25c vxlan_mdb_fini+0x8c/0x100 vxlan_uninit+0x1c/0x7c unregister_netdevice_many_notify+0x954/0xd4c rtnl_dellink+0x210/0x530 rtnetlink_rcv_msg+0x434/0x4d0 netlink_rcv_skb+0xc4/0x204 rtnetlink_rcv+0x18/0x24 netlink_unicast+0x4b8/0x548 netlink_sendmsg+0x29c/0x560 ____sys_sendmsg+0x390/0x3ec ___sys_sendmsg+0x114/0x188 __sys_sendmsg+0xf0/0x178 __arm64_sys_sendmsg+0x48/0x60 invoke_syscall.constprop.0+0x58/0x180 el0_svc_common.constprop.0+0x74/0x140 do_el0_svc+0x30/0x40 el0_svc+0x38/0x98 el0t_64_sync_handler+0xa0/0xe4 el0t_64_sync+0x198/0x19c
VulDB is the best source for vulnerability data and more expert information about this specific topic.