CVE-2026-43029Linux内核的MPTCP子系统中存在一个拒绝服务漏洞。当应用程序使用`MSG_PEEK`和`MSG_WAITALL`标志调用`recvmsg`接收MPTCP数据时,由于未正确处理套接字缓冲区,导致内核陷入无限循环。这会触发软死锁,使CPU核心卡死,从而导致系统失去响应。
该漏洞位于Linux内核`net/mptcp/protocol.c`文件的`mptcp_recvmsg`函数。漏洞产生的根本原因在于处理接收标志时的逻辑缺陷。当使用`MSG_PEEK`标志时,数据包(skb)保留在接收队列中不被移除;若同时使用`MSG_WAITALL`,函数逻辑期望等待直到数据充足。然而,代码未能正确传递或跟踪“最后检查的skb”状态,导致循环中的`sk_wait_data`函数错误地判断队列始终有数据可读。结果,接收进程在一个紧凑的循环中无限期运行,阻塞了CPU核心,触发内核看门狗报警(Soft Lockup)。攻击者可利用此缺陷,通过诱导系统处理特定的MPTCP数据流,耗尽目标系统的CPU资源,导致本地拒绝服务。