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

CVE-2026-31684 Linux内核act_csum模块越界读取漏洞

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

漏洞信息

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

相关标签

Linux KernelCVE-2026-31684Memory CorruptionDoSVLANPrivilege Escalation

漏洞概述

该漏洞存在于Linux内核的net/sched/act_csum.c模块中。在处理带有嵌套VLAN标签的数据包时,tcf_csum_act()函数未充分验证VLAN头部是否完全位于线性数据区域,直接访问h_vlan_encapsulated_proto可能导致越界读取,进而破坏skb数据结构不变量,可能造成系统崩溃或拒绝服务。

技术细节

漏洞发生在Linux内核网络流量控制(tc)的校验和动作(act_csum)处理逻辑中。当SKB(套接字缓冲区)携带嵌套的VLAN标签时,攻击者可通过构造特制的网络数据包,使得嵌套的VLAN头部仅部分位于线性区域。tcf_csum_act()函数在遍历这些头部时,未调用pskb_may_pull()检查数据长度,直接读取h_vlan_encapsulated_proto字段并进行skb_pull操作。这种不当的内存访问违反了SKB的不变量,可能导致内核空指针解引用或其他内存破坏,引发本地拒绝服务攻击。

攻击链分析

STEP 1
权限获取
攻击者需要在目标系统上拥有本地低权限用户账号。
STEP 2
环境探测
检查系统内核版本及是否加载了act_csum相关模块,确认漏洞存在性。
STEP 3
构造特制数据包
构造包含嵌套VLAN头部的网络数据包,精心设计数据包布局,使得VLAN头部跨越线性区域和非线性区域(分页边界)。
STEP 4
触发漏洞
发送特制数据包经过配置了tc csum动作的网络接口,触发tcf_csum_act()函数处理。
STEP 5
达成影响
内核在处理未完全线性化的VLAN头部时发生越界读取,导致系统崩溃或拒绝服务。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
// Conceptual PoC to trigger the vulnerability // This requires a setup where tc (traffic control) is configured with act_csum. // The attacker sends a packet with nested VLAN headers that straddle the linear/non-linear boundary. #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <sys/socket.h> #include <linux/if_packet.h> #include <linux/if_ether.h> #include <arpa/inet.h> // Function to craft a packet with specific VLAN headers to trigger the bug // Actual exploitation requires precise memory layout control. void trigger_vuln() { int sockfd; struct sockaddr_ll sa; char buffer[1024]; memset(buffer, 0, sizeof(buffer)); // Construct Ethernet header struct ethhdr *eth = (struct ethhdr *)buffer; // ... set MAC addresses ... // Construct Nested VLAN Headers // The goal is to make the inner VLAN header split across pages unsigned short *vlan_ptr = (unsigned short *)(buffer + sizeof(struct ethhdr)); *vlan_ptr = htons(ETH_P_8021Q); // Outer VLAN // ... fill rest to create the specific layout ... sockfd = socket(AF_PACKET, SOCK_RAW, htons(ETH_P_ALL)); // ... sendto logic ... close(sockfd); } int main() { printf("Attempting to trigger CVE-2026-31684...\n"); trigger_vuln(); return 0; }

影响范围

Linux Kernel (具体受影响版本请参考Git提交记录修复范围)

防御指南

临时缓解措施
建议立即应用官方发布的内核补丁。对于无法升级的关键系统,应严格限制本地用户权限,并监控内核日志中异常的SKB错误或系统崩溃事件。

参考链接

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