CVE-2026-99053
High · 7.8CVSS
7.8
EPSS
0.2%
Published
Oct 23, 2026
CISA due date
—
Cloudanix analysis
A bug in Linux kernel networking code can let nearby programs on the same machine crash the system or possibly take control of it.
- Exploitation
- Local Privilege
- Attacker needs
- Low Privilege
- Complexity
- Low
- Impact
- Full Compromise
- Component
- OS kernel
- Class
- Memory Corruption
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
Race condition in TIPC node lookup allows use-after-free: tipc_node_find_by_name releases RCU lock without reference, enabling concurrent timer cleanup to free the node while netlink handlers (LINK_SET, LINK_GET, LINK_RESET_STATS) still hold and dereference the pointer.
Why it matters to the business
Local attackers on affected Linux systems can trigger kernel crashes or potential privilege escalation; high-urgency patching required given public disclosure only two days ago.
How an attack unfolds
Local attacker invokes TIPC netlink commands to trigger node lookup while simultaneously causing node timeout events that unlink and free the node under RCU; the handler then acquires a stale pointer and performs lock operations or media address access on freed memory.
How to fix it
Upgrade to a kernel containing the fix that calls kref_get_unless_zero before leaving the RCU read-side critical section in tipc_node_find_by_name and releases the reference after all node accesses including packet transmission.
How to confirm the fix worked
Confirm the source change adding kref_get_unless_zero in tipc/node.c around line 1196 and recompile; run KASAN-enabled tests exercising tipc_nl_node_set_link under concurrent node removal.
Typical attack path
- Invoke TIPC netlink handlers (LINK_SET/LINK_GET) from unprivileged process
- Trigger concurrent tipc_node_timeout via peer link state changes
- RCU grace period completes freeing the node
- Handler dereferences stale pointer causing slab-use-after-free
How to detect it
Search kernel logs and KASAN reports for slab-use-after-free involving _raw_read_lock_bh called from tipc_nl_node_set_link or tipc_node_timeout; inspect RCU free paths tied to tipc_node_free.
- BUG: KASAN: slab-use-after-free in _raw_read_lock_bh
- tipc_nl_node_set_link
- tipc_node_timeout
- tipc_node_find_by_name
- kref_get_unless_zero
What your security team should do
- Apply the TIPC reference-counting patch immediately
- Restrict unprivileged access to TIPC netlink families until patched
- Monitor kernel logs for KASAN reports involving tipc_node structures
The record
In the Linux kernel, the following vulnerability has been resolved: tipc: hold a reference to nodes found by link name tipc_node_find_by_name() returns a node after dropping its RCU read lock without taking a reference. The LINK_SET, LINK_GET and LINK_RESET_STATS handlers then lock and access the node, racing with timer-driven cleanup of a down peer. Generic netlink serialization does not exclude the node timer. The following interleaving can leave a handler using a freed node: CPU 0: find the node under RCU and release the node read lock CPU 1: tipc_node_timeout() clears the links and unlinks the down node CPU 1: drop the list and timer references, queuing tipc_node_free() CPU 0: leave the RCU read-side critical section CPU 1: complete the grace period and free the node CPU 0: acquire the node lock through the stale pointer LINK_SET also uses the node's media address after releasing the node lock, when passing queued packets to tipc_bearer_xmit(). KASAN on v7.3-rc5 reported: 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 Acquire a reference to the selected node with kref_get_unless_zero() before leaving RCU, returning NULL if the node has already been released. Release that reference on every caller exit after the last node access, including transmission in LINK_SET. Keep the existing link lookup order and locking so concurrent link removal still takes the existing error paths.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|