CVE-2026-43050Linux内核的ATM LEC模块中存在一个竞争条件漏洞。该漏洞源于`lec_atm_close()`在设置`priv->lecd`为NULL时缺乏同步机制,导致与其他线程访问该指针产生冲突。当套接字被释放后仍有线程访问时,会触发释放后使用(UAF)漏洞,可能导致系统崩溃、权限提升或信息泄露。
该漏洞位于Linux内核net/atm/lec.c驱动中。根本原因是`lec_atm_close()`函数在清除`priv->lecd`指针时未进行加锁保护,而`send_to_lecd()`、`lec_handle_bridge()`等函数在并发访问该指针时也未进行相应的防护。当`vcc_release()`调用`lec_atm_close()`释放套接字时,若此时有其他路径(如软中断或工作队列)正在通过`priv->lecd`调用`sock_def_readable()`访问套接字的等待队列,就会访问到已释放的内存。
具体利用场景涉及两个并发执行路径:一个是关闭ATM虚拟电路(VCC)的路径,另一个是处理数据发送的路径。由于缺乏同步,读取路径可能在检查指针非空后,实际访问前,指针被释放路径置空并释放,导致UAF。修复方案引入RCU机制,将`priv->lecd`标记为`__rcu`,并使用`rcu_assign_pointer`和`rcu_dereference`确保指针操作的安全性和可见性,防止UAF发生。