Linux KernelOperating system · Linux

CVE-2026-23450

CRITICAL · 9.8 CVSS v3.1 Published 2026-04-03
Fix available
A fix is available. Upgrade to 5.15.203 / 6.1.167 or later.
See remediation →
100/100
Remediation priority · Urgent
Remotely reachable No privileges Zero-click Patch available

Official description Straight from the sourceThe vendor's or NVD's own wording, published unedited. Authoritative, but often terse — it says what broke, rarely what to do.

NVD · unedited
In the Linux kernel, the following vulnerability has been resolved: net/smc: fix NULL dereference and UAF in smc_tcp_syn_recv_sock() Syzkaller reported a panic in smc_tcp_syn_recv_sock() [1]. smc_tcp_syn_recv_sock() is called in the TCP receive path (softirq) via icsk_af_ops->syn_recv_sock on the clcsock (TCP listening socket). It reads sk_user_data to get the smc_sock pointer. However, when the SMC listen socket is being closed concurrently, smc_close_active() sets clcsock->sk_user_data to NULL under sk_callback_lock, and then the smc_sock itself can be freed via sock_put() in smc_release(). This leads to two issues: 1) NULL pointer dereference: sk_user_data is NULL when accessed. 2) Use-after-free: sk_user_data is read as non-NULL, but the smc_sock is freed before its fields (e.g., queued_smc_hs, ori_af_ops) are accessed. The race window looks like this (the syzkaller crash [1] triggers via the SYN cookie path: tcp_get_cookie_sock() -> smc_tcp_syn_recv_sock(), but the normal tcp_check_req() path has the same race): CPU A (softirq) CPU B (process ctx) tcp_v4_rcv() TCP_NEW_SYN_RECV: sk = req->rsk_listener sock_hold(sk) /* No lock on listener */ smc_close_active(): write_lock_bh(cb_lock) sk_user_data = NULL write_unlock_bh(cb_lock) ... smc_clcsock_release() sock_put(smc->sk) x2 -> smc_sock freed! tcp_check_req() smc_tcp_syn_recv_sock(): smc = user_data(sk) -> NULL or dangling smc->queued_smc_hs -> crash! Note that the clcsock and smc_sock are two independent objects with separate refcounts. TCP stack holds a reference on the clcsock, which keeps it alive, but this does NOT prevent the smc_sock from being freed. Fix this by using RCU and refcount_inc_not_zero() to safely access smc_sock. Since smc_tcp_syn_recv_sock() is called in the TCP three-way handshake path, taking read_lock_bh on sk_callback_lock is too heavy and would not survive a SYN flood attack. Using rcu_read_lock() is much more lightweight. - Set SOCK_RCU_FREE on the SMC listen socket so that smc_sock freeing is deferred until after the RCU grace period. This guarantees the memory is still valid when accessed inside rcu_read_lock(). - Use rcu_read_lock() to protect reading sk_user_data. - Use refcount_inc_not_zero(&smc->sk.sk_refcnt) to pin the smc_sock. If the refcount has already reached zero (close path completed), it returns false and we bail out safely. Note: smc_hs_congested() has a similar lockless read of sk_user_data without rcu_read_lock(), but it only checks for NULL and accesses the global smc_hs_wq, never dereferencing any smc_sock field, so it is not affected. Reproducer was verified with mdelay injection and smc_run, the issue no longer occurs with this patch applied. [1] https://syzkaller.appspot.com/bug?extid=827ae2bfb3a3529333e9

Technical summary Written by usOur analysis, written from the advisory, the CVSS vector and the affected-version data. It adds context the advisory leaves out, and never invents facts that are not in the source.

dbcve analysis · high confidence

A race condition in the Linux kernel's SMC (Shared Memory Communications) module allows concurrent access to sk_user_data without proper synchronization. When smc_close_active() sets clcsock->sk_user_data to NULL while smc_tcp_syn_recv_sock() reads it in the TCP receive path (softirq), this causes either a NULL pointer dereference or a use-after-free of the smc_sock object.

MitigationApply the kernel patch which adds RCU protection (SOCK_RCU_FREE flag, rcu_read_lock(), and refcount_inc_not_zero()) to safely access smc_sock from the TCP handshake path without taking heavy locks.

Verify against the referenced sources before acting — the references below are authoritative for this CVE, this summary is not.

Affected products & versions What the vendor confirmedThe version ranges the vendor confirmed as vulnerable. If your version sits inside a range here, treat yourself as exposed until you have upgraded.

NVD · CPE data
Linux KernelOperating system
Affected:>= 5.15.174, < 5.15.203>= 5.18, < 6.1.167>= 6.2, < 6.6.130>= 6.7, < 6.12.78>= 6.13, < 6.18.20>= 6.19, < 6.19.10= 7.0

CVSS breakdown How the score is builtThe industry scoring standard. It rates how the flaw is reached, what it takes to exploit, and what an attacker gains — the score is derived from those, not the other way round.

From the vector
Attack vector
Network
Complexity
Low
Privileges
None
User interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
High
Availability
High

CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H

Am I affected? How to checkSteps we derive from the advisory and the affected-version data, so you can decide whether this CVE reaches your setup. They are a guide, not a scan — your own configuration is the authority.

dbcve checks

Work through these to decide whether this CVE applies to you.

  1. Check kernel version
    Run `uname -r` to get the running kernel version
    Affected if The version falls within any of these ranges: 5.15.174 to 5.15.202, 5.18 to 6.1.166, 6.2 to 6.6.129, 6.7 to 6.12.77, 6.13 to 6.18.19, 6.19 to 6.19.9, or 7.0
  2. Verify SMC kernel support is present
    Check if the SMC (Socket Memory Classification) module or built-in support exists: `grep -i smc /boot/config-$(uname -r)` or look for `CONFIG_SMC` in kernel config
    Affected if SMC support is compiled into the kernel (CONFIG_SMC=y or module loaded)
  3. Check if SMC is actively in use
    Inspect for active SMC sockets: `ls -la /proc/net/smc/` or `cat /proc/net/smc/smc`
    Affected if The system has active SMC connections or the smc kernel module is loaded (`lsmod | grep smc`)
  4. Confirm vulnerability window exists
    This is a race condition occurring during concurrent socket close while TCP connection is in SYN receive state. The vulnerability exists in the smc_tcp_syn_recv_sock() code path.
    Affected if Kernel version is vulnerable AND SMC is enabled and in use

You are affected only if your kernel version is in the affected ranges AND the SMC (Socket Memory Classification) feature is enabled and actively handling connections on your system.

Generated from the published advisory. Verify against your own configuration.

Check your environment

Paste your version and any relevant configuration and it will be compared against the affected criteria above. Do not include secrets or credentials.

AI-assisted, checked against the advisory. Informational, not a guarantee.

Remediation Closing itWhat it takes to close this. Where a vendor fix exists we point at it; where none exists we say so plainly, and can build one. Effort estimates are scoped from the advisory, not from your codebase.

dbcve · scoped
Upgrade available Upgrade to 5.15.203 / 6.1.167 / 6.6.130 or later
Fixed in 5.15.2036.1.1676.6.130
Vendor patch git.kernel.org →
Interim mitigation

Apply the kernel patch which adds RCU protection (SOCK_RCU_FREE flag, rcu_read_lock(), and refcount_inc_not_zero()) to safely access smc_sock from the TCP handshake path without taking heavy locks.

Recommended fix High confidence

Linux Kernel 5.15.203, 6.1.167, 6.6.130, or 6.12.78 (depending on which branch you are on)

  1. Identify the currently running Linux kernel version using `uname -r`
  2. Determine which version range your current kernel falls into based on the affected versions: 5.15.174-5.15.202, 5.18-6.1.166, 6.2-6.6.129, or 6.7-6.12.77
  3. Obtain a kernel upgrade to a version that includes the fix: upgrade to kernel 5.15.203 or later for the 5.15.x branch, 6.1.167 or later for the 6.1.x branch, 6.6.130 or later for the 6.6.x branch, or 6.12.78 or later for the 6.7.x/6.12.x branch
  4. Apply the upgrade via your distribution's standard kernel update process (e.g., `apt-get dist-upgrade`, `yum update`, or distribution-specific package manager)
  5. Reboot the system to load the patched kernel
  6. Verify the running kernel version with `uname -r` to confirm the fix is active
Caveat Upgrading kernel versions may require system reboot and could introduce compatibility issues with custom kernel modules or specific hardware drivers; ensure backups and tested rollback plan are in place

Generated from the published advisory — verify against the referenced sources before acting.

Fix this in Linux Kernel Scoped from the published advisory
  • Consultation4.0 h
  • Implementation8.0 h
  • Testing12.0 h
  • Review / QA4.0 h
28.0 hours of engineering $4,760
Get the upgrade done

An estimate, not a bill — we confirm scope with you before any work starts. Need it this week? Rush from $7,616.

Scan for this in your stack

Free · runs locally
dbcve dependency scanner

Check whether your project pulls in CVE-2026-23450 — or any other known-vulnerable package — straight from your lock files. Free and open source; it runs locally and uploads nothing.

References Go to the primary sourcePrimary sources — vendor advisories, patches and trackers. Where our summary and a reference disagree, the reference wins.

Primary sources

Practitioner notes

Contributed

Peer-ranked notes from engineers who’ve handled CVE-2026-23450 in production — separate from our analysis above.

No notes yet

Be the first to add a field note for this CVE — a mitigation you’ve verified, a version caveat, or a link to a working fix. Sign in above to contribute.

What this is

A place for practitioners to share what actually worked: a mitigation you’ve tested, a configuration change, a version- or environment-specific caveat, or a link to a verified patch. The most useful notes rise to the top as peers upvote them, so the signal stays high.

What belongs here
  • Verified mitigations, workarounds, and config changes
  • Version or environment caveats, and links to real fixes
  • No weaponised exploit code, or anything meant to cause harm
  • No spam, self-promotion, credentials, or personal data