LiveActive security incident?Get immediate response
CVE Record

CVE-2026-23450: net/smc: fix NULL dereference and UAF in smc_tcp_syn_recv_sock()

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

CriticalCVSS 9.8Not KEV-listedUpdated
Glexia's TakeAutomated analysiscritical

Security readout for executives and security teams

Plain-English summary

A race condition in Linux SMC networking can access an object while it is being closed, causing a kernel crash or use-after-free. The supplied record rates it critical at CVSS 9.8. Confirmed evidence demonstrates a panic; it does not establish data theft, system takeover, or real-world attacks.

Executive priority

Treat this as an urgent patch-validation issue for network-facing or business-critical Linux systems using SMC. Expedite inventory and vendor confirmation, then patch exposed systems through normal emergency-change procedures. Avoid assuming compromise solely from the 9.8 score: available evidence confirms a serious kernel memory-safety failure, but not active exploitation.

Technical view

During TCP SYN processing, smc_tcp_syn_recv_sock() can read clcsock->sk_user_data while another context clears and frees the referenced smc_sock. This creates NULL dereference and use-after-free conditions in both SYN-cookie and normal request paths. The fix uses RCU-delayed freeing, rcu_read_lock(), and refcount_inc_not_zero() to safely pin the object.

Likely exposure

Practical exposure centers on Linux systems using a reachable SMC listening socket. The bundle lists affected identifiers from 5.18 through 7.0, but includes ambiguous version data and commit hashes. Distribution kernels may contain backports, so version strings alone are insufficient; confirm the running build against vendor advisories and referenced stable fixes.

Exploitation context

The race was found by Syzkaller and reproduced under test conditions, including forced delay injection. The CVSS vector describes network access without privileges or user interaction. However, the bundle reports KEV as false and provides no evidence of active exploitation or a public weaponized exploit. Reliability outside testing is not established.

Researcher notes

The core safety failure is lifetime separation: TCP retains the clcsock, but that reference does not retain smc_sock. RCU prevents immediate reclamation while the refcount increment conditionally establishes ownership. The source says smc_hs_congested() is not affected because it does not dereference smc_sock fields. Exact affected ranges and demonstrated security impact beyond panic remain insufficiently resolved in the bundle.

Mitigation direction

  • Apply a vendor-supported kernel update containing the applicable referenced stable fix.
  • Prioritize reachable systems that enable or use SMC listening services.
  • Map distribution kernel builds to vendor backports rather than relying only on upstream version numbers.
  • If immediate updating is impossible, obtain supported interim guidance from the Linux distribution or appliance vendor.
  • Review the cited Siemens advisories for any applicable managed products or vendor-specific remediation.

Validation and detection

  • Inventory running kernel releases, distribution build identifiers, and affected systems' SMC usage.
  • Confirm the installed kernel changelog includes the applicable upstream fix or an equivalent vendor backport.
  • Check whether SMC listening sockets are enabled and network reachable on each candidate host.
  • Review kernel logs for panics, NULL dereferences, or use-after-free reports involving smc_tcp_syn_recv_sock().
  • Run vendor-approved regression testing for SMC connection handling and listener shutdown after updating.
Prepared
Confidence
medium
Sources
12

Generated from the cited source records. This long-tail analysis has not been individually reviewed by a named human.

Potential ATT&CK relevance

Conservative CVE-to-ATT&CK context

These mappings and lookup hints may be relevant to the vulnerability behavior, CWE, affected product, or exposure path. Glexia-inferred context is not an official MITRE, ATT&CK, CWE, or CVE Program mapping.

ATT&CK lookup starting points

Use these exact CWE pages and searches to review the Glexia ATT&CK library from this CVE's weakness and description context.

cve · low confidence lookup

CVE-2026-23450 mapping review

Open the CVE-to-ATT&CK bridge for reviewed, inferred, or future official mappings tied to this CVE.

Open ATT&CK lookup
Vulnerability profileCVE Program record
Severity
Critical
CVSS
9.8 (3.1)
Known Exploited
No
Published

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

Official CVE source material

CNA and ADP enrichment extracted from CVE v5

These fields come from the CVE record and ADP containers, not from Glexia's Take. They preserve time-varying source decisions such as CISA SSVC, KEV status, CVSS metrics, and provider references.

1CVSS vectors
3Timeline events
1ADP providers
10Source links

CVSS vector scores

1 official score

We collect every scored CVSS vector available in the official CNA and ADP containers. When more than one version is present, the table keeps the source vectors side by side instead of collapsing them into the highest score.

ScoreVersionSeverityVectorExploitImpactSource
9.8CVSS 3.1CriticalCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H3.95.9Linux

Vulnerability scoring details

Base CVSS 3.1 score

9.8Critical
CVSS 3.1 vector shape for CVE-2026-23450Attack VectorAttack ComplexityPrivileges RequiredUser InteractionScopeConfidentiality ImpactIntegrity ImpactAvailability Impact

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

Attack Vector
NetworkAdjacentLocalPhysical
Attack Complexity
LowHigh
Privileges Required
NoneLowHigh
User Interaction
NoneRequired
Scope
ChangedUnchanged
Confidentiality Impact
HighLowNone
Integrity Impact
HighLowNone
Availability Impact
HighLowNone

Vulnerability timeline

Timeline events are normalized from CVE metadata, CNA source timelines, ADP timelines, and KEV metadata when present.

  1. CVE reservedCVE Program

    The CVE ID was reserved by the assigning CNA.

  2. CVE publishedCVE Program

    The CVE record was published.

  3. CVE updatedCVE Program

    The CVE record metadata indicates this as the latest update time.

ADP provider summaries

siemens-SADPADP container
Affected products

Products and packages named in the record

VendorProductVersion / packageStatus
LinuxLinuxebfee3e153f67c8b38eb94a7062ee94aa6f92708, 8270d9c21041470f58348248b9d9dcf3bf79592e, 8270d9c21041470f58348248b9d9dcf3bf79592e, 8270d9c21041470f58348248b9d9dcf3bf79592e, 8270d9c21041470f58348248b9d9dcf3bf79592e, 8270d9c21041470f58348248b9d9dcf3bf79592e, 8270d9c21041470f58348248b9d9dcf3bf79592e, 5.15.174unaffected
LinuxLinux5.18, 0, 5.15.203, 6.1.167, 6.6.130, 6.12.78, 6.18.20, 6.19.10, 7.0affected
Weakness

CWE details

No CWE listed

CWE links open Glexia weakness intelligence pages with official CWE context, developer remediation guidance, and related CVE mappings.