{"id":"CVE-2026-99032","kind":"vulnerability","aliases":["CVE-2026-99032"],"related":[],"title":"Linux kernel SMC: getsockname use-after-free when link group terminates","description":"In the Linux kernel, the following vulnerability has been resolved:\n\nnet/smc: protect clcsock lifetime in smc_getname\n\nsmc_getname() dereferences smc->clcsock without holding\nclcsock_release_lock. Link-group termination can release the CLC socket\nthrough smc_close_active_abort() while the SMC socket is still open,\nfor example after shutdown(SHUT_WR).\n\nA getsockname() caller can load smc->clcsock, then the termination worker\ncan clear the pointer and call sock_release() before the caller accesses\nclcsock->ops or invokes getname(). This causes a use-after-free; if the\nworker clears the pointer before the load, it causes a NULL dereference.\nThe syscall's file reference keeps the SMC socket alive but does not\nprevent asynchronous release of its CLC socket.\n\nKASAN reported the following with test-only timing instrumentation:\n\n  BUG: KASAN: slab-use-after-free in smc_getname+0x19e/0x1b0\n  Read of size 8 at addr ffff888109abb4e0 by task poc/103\n  Call Trace:\n   smc_getname+0x19e/0x1b0\n   do_getsockname+0xe5/0x170\n   __sys_getsockname+0x8c/0x100\n\n  Allocated by task 95:\n   sock_alloc_inode+0x1e/0x280\n   sock_alloc+0x3d/0x240\n   __sock_create+0x7e/0x430\n   smc_create+0x121/0x240\n\n  Freed by task 0:\n   kmem_cache_free+0xcc/0x340\n   rcu_core+0x50a/0x1850\n\n  Last potentially related work creation:\n   evict+0x446/0x6c0\n   smc_clcsock_release+0xa8/0xd0\n   smc_close_active_abort+0x26a/0x3a0\n   __smc_lgr_terminate.part.0+0x137/0x2e0\n\nHold clcsock_release_lock across the pointer check and the getname()\ncallback to serialize with smc_clcsock_release(). Return -EBADF if the\nCLC socket has already been released, preserving the existing peer\nstate check and the callback's return value otherwise.","summary":"A race in the Linux kernel's SMC socket code lets a getsockname() call touch a CLC socket that another worker has already released. The result is a use-after-free or NULL dereference in kernel memory, which can crash the machine or be turned into code execution by a local user.","severity":"unknown","cvss":null,"epss":0.00209,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["linux-kernel","multi-tenant","runtime","self-hosted"],"not_affected_if":["no-smc-sockets","smc-module-not-loaded"],"how_to_check":"- `uname -r` and compare against the fixed kernel builds in your distribution's advisory\n- `lsmod | grep smc` or `grep -i smc /proc/net/protocols` to see whether the SMC protocol is loaded\n- `sysctl net.smc.autocorking_size` to confirm the SMC module is present (unknown if the sources do not say otherwise)","fix":"- Update the Linux kernel to a build that includes the upstream fix 'net/smc: protect clcsock lifetime in smc_getname'\n- Until patched, unload the SMC module with `modprobe -r smc_diag smc` where it is not in use (unknown if the sources give a supported workaround)","status":"open","published_at":"2026-10-23T13:17:26+00:00","first_seen_at":"2026-10-23T21:57:33+00:00","triaged_at":"2026-10-25T04:54:22+00:00","updated_at":"2026-10-25T12:38:50+00:00","category":"runtime","confidence":0.6,"triage":{"at":"2026-10-25T04:54:22Z","model":"claude-haiku-5-5","output":{"fix":"- Update the Linux kernel to a build that includes the upstream fix 'net/smc: protect clcsock lifetime in smc_getname'\n- Until patched, unload the SMC module with `modprobe -r smc_diag smc` where it is not in use (unknown if the sources give a supported workaround)","reach":"local","title":"Linux kernel SMC: getsockname use-after-free when link group terminates","impact":"high","summary":"A race in the Linux kernel's SMC socket code lets a getsockname() call touch a CLC socket that another worker has already released. The result is a use-after-free or NULL dereference in kernel memory, which can crash the machine or be turned into code execution by a local user.","category":"runtime","nicknames":[],"who_cares":["linux-kernel","self-hosted","multi-tenant"],"confidence":0.6,"needs_auth":"yes","worst_case":"local user gets kernel memory corruption and possible privilege escalation","analyst_note":"Check the distribution kernel advisories and the upstream commit for the fixed kernel versions; sources here list no versions.","how_to_check":"- `uname -r` and compare against the fixed kernel builds in your distribution's advisory\n- `lsmod | grep smc` or `grep -i smc /proc/net/protocols` to see whether the SMC protocol is loaded\n- `sysctl net.smc.autocorking_size` to confirm the SMC module is present (unknown if the sources do not say otherwise)","needs_analyst":true,"not_affected_if":["smc-module-not-loaded","no-smc-sockets"],"who_is_affected":"Only systems running a Linux kernel with the SMC (Shared Memory Communications) protocol in use are exposed, which is mainly hosts using SMC-R or SMC-D with multi-link-group setups; most ordinary servers do not load the module. The race needs a local process that can open SMC sockets and call getsockname() while link-group termination runs, so multi-tenant hosts and shared compute nodes are the main concern. Systems without the smc module can skip it.","user_interaction":"no","needs_special_setup":"yes","severity_if_unknown":"unknown"},"cost_usd":0.000764,"input_tokens":3940,"output_tokens":740,"severity_before":"unknown"},"analyst_status":null,"analyst_note":null,"search":"'+0':225C,241C,245C,249C,258C,262C,266C,270C,279C,283C,291C,296C,302C,306C '-2026':14A,17A '-99032':15A,18A '0':275C,305C '8':230C '95':254C 'abort':122C,301C 'access':158C 'across':312C 'activ':121C,300C 'addr':232C 'aliv':194C 'alloc':251C,256C,261C 'alreadi':51B,333C 'anoth':48B 'asynchron':199C 'bug':215C 'cach':277C 'call':42B,152C,237C 'callback':319C,344C 'caller':138C,157C 'caus':165C,181C 'check':315C,341C 'clc':45B,116C,203C,330C 'clcsock':94C,103C,106C,142C,159C,294C,309C,324C 'clear':148C,174C 'close':120C,299C 'code':38B,76B 'core':282C 'crash':69B 'creat':265C,269C 'creation':289C 'cve':13A,16A 'derefer':63B,101C,184C 'ebadf':327C 'evict':290C 'exampl':131C 'execut':77B 'exist':338C 'ffff888109abb4e0':233C 'file':188C 'follow':87C,208C 'free':8A,60B,170C,221C,278C 'freed':272C 'getnam':98C,100C,163C,224C,240C,318C 'getsocknam':4A,41B,137C,244C,248C 'group':11A,111C 'hold':105C,308C 'host':28B 'inod':257C 'instrument':214C 'invok':162C 'kasan':205C,216C 'keep':190C 'kernel':2A,21B,34B,65B,85C 'kmem':276C 'last':285C 'let':39B 'lifetim':95C 'link':10A,110C 'link-group':109C 'linux':1A,20B,33B,84C 'linux-kernel':19B 'load':140C,179C 'local':80B 'lock':108C,311C 'machin':71B 'memori':66B 'multi':23B 'multi-ten':22B 'net/smc':92C 'null':62B,183C 'op':160C 'open':129C 'otherwis':348C 'peer':339C 'poc/103':236C 'pointer':150C,176C,314C 'potenti':286C 'preserv':336C 'prevent':198C 'protect':93C 'race':30B 'rcu':281C 'read':227C 'refer':189C 'relat':287C 'releas':52B,107C,114C,154C,200C,295C,310C,325C,335C 'report':206C 'resolv':91C 'result':54B 'return':326C,346C 'runtim':25B 'self':27B 'self-host':26B 'serial':321C 'shut':134C 'shutdown':133C 'size':229C 'slab':218C 'slab-use-after-fre':217C 'smc':3A,36B,97C,99C,102C,119C,125C,141C,192C,223C,239C,268C,293C,298C,323C 'smc_lgr_terminate.part':304C 'sock':153C,255C,260C,264C 'socket':37B,46B,117C,126C,193C,204C,331C 'state':340C 'still':128C 'sys':247C 'syscal':186C 'task':235C,253C,274C 'tenant':24B 'termin':12A,112C,145C 'test':211C 'test-on':210C 'time':213C 'touch':43B 'trace':238C 'turn':74B 'use':6A,58B,168C,219C 'use-after-fre':5A,57B,167C 'user':81B 'valu':347C 'vulner':88C 'without':104C 'work':288C 'worker':49B,146C,173C 'wr':135C 'x121/0x240':271C 'x137/0x2e0':307C 'x19e/0x1b0':226C,242C 'x1e/0x280':259C 'x26a/0x3a0':303C 'x3d/0x240':263C 'x446/0x6c0':292C 'x50a/0x1850':284C 'x7e/0x430':267C 'x8c/0x100':250C 'xa8/0xd0':297C 'xcc/0x340':280C 'xe5/0x170':246C","nicknames":[],"mitigations":[],"who_affected":"Only systems running a Linux kernel with the SMC (Shared Memory Communications) protocol in use are exposed, which is mainly hosts using SMC-R or SMC-D with multi-link-group setups; most ordinary servers do not load the module. The race needs a local process that can open SMC sockets and call getsockname() while link-group termination runs, so multi-tenant hosts and shared compute nodes are the main concern. Systems without the smc module can skip it.","tier":"C","verified":{},"analyst_revisit_at":null,"first_public_at":"2026-10-23T13:17:26+00:00","kev":null,"cvss_vector":null,"cvss_by":null,"poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-99032","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-99032","severity":null,"published_at":"2026-10-23T13:17:26+00:00","modified_at":"2026-10-23T13:17:26+00:00","first_seen_at":"2026-10-23T21:57:33+00:00","fetched_at":"2026-10-23T22:29:03+00:00","note":null},{"source":"epss","external_id":"CVE-2026-99032","url":"https://api.first.org/data/v1/epss?cve=CVE-2026-99032","severity":null,"published_at":null,"modified_at":null,"first_seen_at":"2026-10-25T12:38:50+00:00","fetched_at":"2026-10-25T12:38:50+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"}