{"id":"CVE-2026-99053","kind":"vulnerability","aliases":["CVE-2026-99053"],"related":[],"title":"Linux kernel TIPC: use-after-free when netlink handlers reach freed nodes","description":"In the Linux kernel, the following vulnerability has been resolved:\n\ntipc: hold a reference to nodes found by link name\n\ntipc_node_find_by_name() returns a node after dropping its RCU read lock\nwithout taking a reference.  The LINK_SET, LINK_GET and LINK_RESET_STATS\nhandlers then lock and access the node, racing with timer-driven cleanup of\na down peer.  Generic netlink serialization does not exclude the node\ntimer.\n\nThe following interleaving can leave a handler using a freed node:\n\n  CPU 0: find the node under RCU and release the node read lock\n  CPU 1: tipc_node_timeout() clears the links and unlinks the down node\n  CPU 1: drop the list and timer references, queuing tipc_node_free()\n  CPU 0: leave the RCU read-side critical section\n  CPU 1: complete the grace period and free the node\n  CPU 0: acquire the node lock through the stale pointer\n\nLINK_SET also uses the node's media address after releasing the node lock,\nwhen passing queued packets to tipc_bearer_xmit().\n\nKASAN on v7.3-rc5 reported:\n\n  BUG: KASAN: slab-use-after-free in _raw_read_lock_bh\n  Write of size 4 at addr ffff88807e06f008 by task poc/92\n  Call Trace:\n   _raw_read_lock_bh                 kernel/locking/spinlock.c:287\n   tipc_nl_node_set_link             net/tipc/node.c:2475\n   genl_family_rcv_msg_doit          net/netlink/genetlink.c:1114\n   genl_rcv_msg                      net/netlink/genetlink.c:1209\n   netlink_rcv_skb                   net/netlink/af_netlink.c:2575\n\n  Allocated by task 0:\n   tipc_node_create                  net/tipc/node.c:539\n   tipc_node_check_dest              net/tipc/node.c:1196\n   tipc_disc_rcv                     net/tipc/discover.c:252\n\n  Freed by task 92:\n   kfree                             mm/slub.c:6801\n   rcu_core                          kernel/rcu/tree.c:2919\n\n  Last potentially related work creation:\n   __call_rcu_common.constprop.0     kernel/rcu/tree.c:3181\n   tipc_node_timeout                 net/tipc/node.c:814\n\nAcquire a reference to the selected node with kref_get_unless_zero() before\nleaving RCU, returning NULL if the node has already been released.  Release\nthat reference on every caller exit after the last node access, including\ntransmission in LINK_SET.  Keep the existing link lookup order and locking\nso concurrent link removal still takes the existing error paths.","summary":"The TIPC networking code in the Linux kernel looked up a node by link name and used it after leaving the RCU read lock without holding a reference, so a timer-driven cleanup could free the node mid-use. A local or netlink-capable user could trigger a use-after-free in kernel memory, which may allow privilege escalation, though the sources do not state an exploit outcome.","severity":"unknown","cvss":null,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["linux-kernel","runtime","self-hosted","tipc"],"not_affected_if":["tipc-module-not-loaded"],"how_to_check":"- Check the running kernel version with `uname -r` and compare it against the fixed kernel release in the NVD entry.\n- Check whether TIPC is loaded with `lsmod | grep tipc`; unknown whether the sources give a further check.","fix":"- Update the Linux kernel to a release that includes the upstream fix referenced in the NVD entry (fixed version: unknown from the sources).","status":"open","published_at":"2026-10-23T13:17:28+00:00","first_seen_at":"2026-10-23T21:57:33+00:00","triaged_at":"2026-10-25T04:54:02+00:00","updated_at":"2026-10-25T04:54:02+00:00","category":"runtime","confidence":0.6,"triage":{"at":"2026-10-25T04:54:02Z","model":"claude-haiku-5-5","output":{"fix":"- Update the Linux kernel to a release that includes the upstream fix referenced in the NVD entry (fixed version: unknown from the sources).","reach":"local","title":"Linux kernel TIPC: use-after-free when netlink handlers reach freed nodes","impact":"high","summary":"The TIPC networking code in the Linux kernel looked up a node by link name and used it after leaving the RCU read lock without holding a reference, so a timer-driven cleanup could free the node mid-use. A local or netlink-capable user could trigger a use-after-free in kernel memory, which may allow privilege escalation, though the sources do not state an exploit outcome.","category":"runtime","nicknames":[],"who_cares":["linux-kernel","tipc","self-hosted"],"confidence":0.6,"needs_auth":"yes","worst_case":"kernel memory corruption from a use-after-free, possibly privilege escalation","analyst_note":"Confirm the fixed kernel versions and whether TIPC requires unprivileged netlink access, using the kernel.org commit referenced by NVD.","how_to_check":"- Check the running kernel version with `uname -r` and compare it against the fixed kernel release in the NVD entry.\n- Check whether TIPC is loaded with `lsmod | grep tipc`; unknown whether the sources give a further check.","needs_analyst":true,"not_affected_if":["tipc-module-not-loaded"],"who_is_affected":"Systems running a Linux kernel with the TIPC protocol module, typically those using TIPC cluster messaging. Hosts that do not load the tipc module are likely not affected, but the sources do not say this explicitly.","user_interaction":"no","needs_special_setup":"yes","severity_if_unknown":"unknown"},"cost_usd":0.000714,"input_tokens":4118,"output_tokens":605,"severity_before":"unknown"},"analyst_status":null,"analyst_note":null,"search":"'-2026':15A,18A '-99053':16A,19A '0':185C,223C,243C,335C,369C '1':198C,211C,233C '1114':321C '1196':346C '1209':326C '2475':314C '252':351C '2575':331C '287':307C '2919':362C '3181':371C '4':293C '539':340C '6801':358C '814':376C '92':355C 'access':151C,412C 'acquir':244C,377C 'addr':295C 'address':260C 'alloc':332C 'allow':88B 'alreadi':398C 'also':254C 'bearer':272C 'bh':289C,305C 'bug':278C 'call':300C 'call_rcu_common.constprop':368C 'caller':406C 'capabl':74B 'check':343C 'cleanup':61B,159C 'clear':202C 'code':31B 'complet':234C 'concurr':427C 'core':360C 'could':62B,76B 'cpu':184C,197C,210C,222C,232C,242C 'creat':338C 'creation':367C 'critic':230C 'cve':14A,17A 'dest':344C 'disc':348C 'doit':319C 'driven':60B,158C 'drop':129C,212C 'error':434C 'escal':90B 'everi':405C 'exclud':169C 'exist':420C,433C 'exit':407C 'exploit':98B 'famili':316C 'ffff88807e06f008':296C 'find':122C,186C 'follow':105C,174C 'found':116C 'free':7A,63B,82B,221C,239C,284C 'freed':12A,182C,352C 'generic':164C 'genl':315C,322C 'get':142C,386C 'grace':236C 'handler':10A,147C,179C 'hold':53B,111C 'host':26B 'includ':413C 'interleav':175C 'kasan':274C,279C 'keep':418C 'kernel':2A,22B,35B,84B,103C 'kernel/locking/spinlock.c':306C 'kernel/rcu/tree.c':361C,370C 'kfree':356C 'kref':385C 'last':363C,410C 'leav':47B,177C,224C,390C 'link':41B,118C,139C,141C,144C,204C,252C,312C,416C,421C,428C 'linux':1A,21B,34B,102C 'linux-kernel':20B 'list':214C 'local':70B 'lock':51B,133C,149C,196C,247C,265C,288C,304C,425C 'look':36B 'lookup':422C 'may':87B 'media':259C 'memori':85B 'mid':67B 'mid-us':66B 'mm/slub.c':357C 'msg':318C,324C 'name':42B,119C,124C 'net/netlink/af_netlink.c':330C 'net/netlink/genetlink.c':320C,325C 'net/tipc/discover.c':350C 'net/tipc/node.c':313C,339C,345C,375C 'netlink':9A,73B,165C,327C 'netlink-cap':72B 'network':30B 'nl':309C 'node':13A,39B,65B,115C,121C,127C,153C,171C,183C,188C,194C,200C,209C,220C,241C,246C,257C,264C,310C,337C,342C,373C,383C,396C,411C 'null':393C 'order':423C 'outcom':99B 'packet':269C 'pass':267C 'path':435C 'peer':163C 'period':237C 'poc/92':299C 'pointer':251C 'potenti':364C 'privileg':89B 'queu':218C,268C 'race':154C 'raw':286C,302C 'rcu':49B,131C,190C,226C,359C,391C 'rcv':317C,323C,328C,349C 'reach':11A 'read':50B,132C,195C,228C,287C,303C 'read-sid':227C 'refer':55B,113C,137C,217C,379C,403C 'relat':365C 'releas':192C,262C,400C,401C 'remov':429C 'report':277C 'reset':145C 'resolv':109C 'return':125C,392C 'runtim':23B 'section':231C 'select':382C 'self':25B 'self-host':24B 'serial':166C 'set':140C,253C,311C,417C 'side':229C 'size':292C 'skb':329C 'slab':281C 'slab-use-after-fre':280C 'sourc':93B 'stale':250C 'stat':146C 'state':96B 'still':430C 'take':135C,431C 'task':298C,334C,354C 'though':91B 'timeout':201C,374C 'timer':59B,157C,172C,216C 'timer-driven':58B,156C 'tipc':3A,27B,29B,110C,120C,199C,219C,271C,308C,336C,341C,347C,372C 'trace':301C 'transmiss':414C 'trigger':77B 'unless':387C 'unlink':206C 'use':5A,44B,68B,80B,180C,255C,282C 'use-after-fre':4A,79B 'user':75B 'v7.3-rc5':276C 'vulner':106C 'without':52B,134C 'work':366C 'write':290C 'xmit':273C 'zero':388C","nicknames":[],"mitigations":[],"who_affected":"Systems running a Linux kernel with the TIPC protocol module, typically those using TIPC cluster messaging. Hosts that do not load the tipc module are likely not affected, but the sources do not say this explicitly.","tier":"C","verified":{},"analyst_revisit_at":null,"first_public_at":"2026-10-23T13:17:28+00:00","kev":null,"cvss_vector":null,"cvss_by":null,"poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-99053","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-99053","severity":null,"published_at":"2026-10-23T13:17:28+00:00","modified_at":"2026-10-23T13:17:28+00:00","first_seen_at":"2026-10-23T21:57:33+00:00","fetched_at":"2026-10-23T22:29:03+00:00","note":null}],"documents":[],"notice":"Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai"}