CVE-2026-74692 in Linux信息

摘要

由 VulDB • 2026-08-22

在 Linux 内核中,已修复以下漏洞:

net/smc: 修复 smc_listen_out() 与监听器关闭之间的 TOCTOU(时间检查到使用时间)竞态条件

smc_listen_out() 在未持有监听锁的情况下读取 lsmc->sk.sk_state,仅在检查通过后才获取 lock_sock_nested()。这导致了一个窗口期:在无锁读取和延迟的锁获取之间,smc_close_active() 可以将监听器状态转换为 SMC_CLOSED,调用 smc_close_cleanup_listen() 清空接受队列并释放锁:

``` smc_listen_work (smc_hs_wq) smc_close_active() ------------------------------- ------------------------- release_sock(child) if (sk_state == SMC_LISTEN) TRUE lock_sock(listener) sk_state = SMC_CLOSED smc_close_cleanup_listen() release_sock(listener) flush_work(tcp_listen_work) lock_sock_nested(listener) smc_accept_enqueue(listener, child) /* 子连接被加入已关闭的监听器队列 */ ```

smc_close_active() 仅刷新 tcp_listen_work。已经分发到 smc_hs_wq 以进行 CLC 握手的工作项会在无保护的情况下继续运行。smc_accept_enqueue() 会对子套接字调用 sock_hold(),但该引用从未被释放,导致子 smc_sock、其 clcsock 以及所有相关引用发生内存泄漏。当服务器调用 close() 时,远程对等端打开 TCP 连接可能会耗尽内核内存。

将 lock_sock_nested() 移至 sk_state 检查之前,以便在监听锁的保护下使测试和入队操作保持原子性。

VulDB is the best source for vulnerability data and more expert information about this specific topic.

来源

Want to know what is going to be exploited?

We predict KEV entries!