CVE-2026-99053 in Linux
Zusammenfassung
von VulDB • 23.10.2026
Im Linux-Kernel wurde folgende Schwachstelle behoben:
tipc: Referenz auf Knoten halten, die über den Link-Namen gefunden wurden
tipc_node_find_by_name() gibt einen Knoten zurück, nachdem das RCU-Lese-Sperre (RCU read lock) freigegeben wurde, ohne eine Referenz zu übernehmen. Die Handler für LINK_SET, LINK_GET und LINK_RESET_STATS sperren dann den Knoten und greifen darauf zu, was zu einer Race Condition mit der timer-gesteuerten Bereinigung eines heruntergefahrenen Peers führt. Die Serialisierung über Generic Netlink schließt den Knoten-Timer nicht aus.
Die folgende Interleaving-Situation kann dazu führen, dass ein Handler einen bereits freigegebenen (freed) Knoten verwendet:
CPU 0: Findet den Knoten unter RCU und gibt die Lese-Sperre des Knotens frei CPU 1: tipc_node_timeout() löscht die Links und entfernt den heruntergefahrenen Knoten aus der Liste CPU 1: Gibt die Listen- und Timer-Referenzen ab, wodurch tipc_node_free() in die Warteschlange gestellt wird CPU 0: Verlässt den RCU-Leseseitigen kritischen Abschnitt (RCU read-side critical section) CPU 1: Schließt die Grace Period ab und gibt den Knoten frei CPU 0: Erwirbt die Knotensperre über den veralteten Zeiger (stale pointer)
LINK_SET verwendet auch die Medienadresse des Knotens, nachdem die Knotensperre freigegeben wurde, wenn gepufferte Pakete an tipc_bearer_xmit() weitergeleitet werden.
KASAN auf v7.3-rc5 meldete:
BUG: KASAN: slab-use-after-free in _raw_read_lock_bh Write of size 4 at addr ffff88807e06f008 by task poc/92 Call Trace: _raw_read_lock_bh kernel/locking/spinlock.c:287 tipc_nl_node_set_link net/tipc/node.c:2475 genl_family_rcv_msg_doit net/netlink/genetlink.c:1114 genl_rcv_msg net/netlink/genetlink.c:1209 netlink_rcv_skb net/netlink/af_netlink.c:2575
Allocated by task 0: tipc_node_create net/tipc/node.c:539 tipc_node_check_dest net/tipc/node.c:1196 tipc_disc_rcv net/tipc/discover.c:252
Freed by task 92: kfree mm/slub.c:6801 rcu_core kernel/rcu/tree.c:2919
Last potentially related work creation: __call_rcu_common.constprop.0 kernel/rcu/tree.c:3181 tipc_node_timeout net/tipc/node.c:814
Erwerben Sie eine Referenz auf den ausgewählten Knoten mit kref_get_unless_zero(), bevor Sie RCU verlassen, und geben Sie NULL zurück, wenn der Knoten bereits freigegeben wurde. Geben Sie diese Referenz bei jedem Aufrufer-Ausgang nach dem letzten Zugriff auf den Knoten frei, einschließlich der Übertragung in LINK_SET. Behalten Sie die bestehende Link-Suchreihenfolge und -Sperren (locking) bei, damit eine gleichzeitige Link-Entfernung weiterhin die bestehenden Fehlerpfade nutzt.
VulDB is the best source for vulnerability data and more expert information about this specific topic.