Skip to main content

Linux Kernel CVE-2026-43050

| EUVD-2026-26649 HIGH
Use After Free (CWE-416)
2026-05-01 Linux
7.0
CVSS 3.1
Share

CVSS VectorNVD

CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H
Attack Vector
Local
Attack Complexity
High
Privileges Required
Low
User Interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
High
Availability
High

Lifecycle Timeline

7
Analysis Generated
May 07, 2026 - 20:30 vuln.today
CVSS changed
May 07, 2026 - 18:22 NVD
7.0 (HIGH)
Patch available
May 01, 2026 - 16:33 EUVD
Patch released
May 01, 2026 - 15:24 nvd
Patch available
EUVD ID Assigned
May 01, 2026 - 15:00 euvd
EUVD-2026-26649
CVE Published
May 01, 2026 - 14:15 nvd
HIGH 7.0
CVE Published
May 01, 2026 - 14:15 nvd
N/A

DescriptionNVD

In the Linux kernel, the following vulnerability has been resolved:

atm: lec: fix use-after-free in sock_def_readable()

A race condition exists between lec_atm_close() setting priv->lecd to NULL and concurrent access to priv->lecd in send_to_lecd(), lec_handle_bridge(), and lec_atm_send(). When the socket is freed via RCU while another thread is still using it, a use-after-free occurs in sock_def_readable() when accessing the socket's wait queue.

The root cause is that lec_atm_close() clears priv->lecd without any synchronization, while callers dereference priv->lecd without any protection against concurrent teardown.

Fix this by converting priv->lecd to an RCU-protected pointer:

  • Mark priv->lecd as __rcu in lec.h
  • Use rcu_assign_pointer() in lec_atm_close() and lecd_attach()

for safe pointer assignment

  • Use rcu_access_pointer() for NULL checks that do not dereference

the pointer in lec_start_xmit(), lec_push(), send_to_lecd() and lecd_attach()

  • Use rcu_read_lock/rcu_dereference/rcu_read_unlock in send_to_lecd(),

lec_handle_bridge() and lec_atm_send() to safely access lecd

  • Use rcu_assign_pointer() followed by synchronize_rcu() in

lec_atm_close() to ensure all readers have completed before proceeding. This is safe since lec_atm_close() is called from vcc_release() which holds lock_sock(), a sleeping lock.

  • Remove the manual sk_receive_queue drain from lec_atm_close()

since vcc_destroy_socket() already drains it after lec_atm_close() returns.

v2: Switch from spinlock + sock_hold/put approach to RCU to properly fix the race. The v1 spinlock approach had two issues pointed out by Eric Dumazet:

  1. priv->lecd was still accessed directly after releasing the

lock instead of using a local copy.

  1. The spinlock did not prevent packets being queued after

lec_atm_close() drains sk_receive_queue since timer and workqueue paths bypass netif_stop_queue().

Note: Syzbot patch testing was attempted but the test VM terminated unexpectedly with "Connection to localhost closed by remote host", likely due to a QEMU AHCI emulation issue unrelated to this fix. Compile testing with "make W=1 net/atm/lec.o" passes cleanly.

AnalysisAI

Race condition in Linux kernel ATM LEC driver allows local attackers with low privileges to trigger use-after-free memory corruption in sock_def_readable(), potentially achieving arbitrary code execution, privilege escalation, or denial of service. The flaw affects systems using ATM (Asynchronous Transfer Mode) LAN Emulation Client functionality, present since Linux kernel version 2.4 (commit 1da177e4c3f4). …

Sign in for full analysis, threat intelligence, and remediation guidance.

RemediationAI

Within 24 hours: Inventory all Linux systems with ATM LEC driver enabled (check /proc/modules for 'lec'). Within 7 days: Apply vendor-released patches to kernel versions 5.10.253, 5.15.203, 6.1.168, 6.6.134, 6.12.81, 6.18.22, 6.19.12, or 7.0 depending on your deployed kernel branch. …

Sign in for detailed remediation steps.

Vendor StatusVendor

Share

CVE-2026-43050 vulnerability details – vuln.today

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy