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

CVE-2026-31422 Linux内核cls_flow空指针解引用

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

漏洞信息

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

相关标签

Linux Kernel拒绝服务空指针解引用net/schedcls_flow本地漏洞

漏洞概述

Linux内核net/sched模块中的cls_flow组件存在空指针解引用漏洞。攻击者可利用该漏洞在共享块上创建未完全限定的流过滤器,导致系统崩溃,从而造成拒绝服务。该漏洞源于flow_change()函数在未检查block->q是否为NULL的情况下直接解引用该指针。

技术细节

该漏洞位于Linux内核网络流量控制子系统的cls_flow模块中。漏洞根源在于flow_change()函数处理过滤器创建请求时的逻辑缺陷。当用户尝试在共享块上创建一个没有完全限定基类的流过滤器时,该函数会调用tcf_block_q()获取队列指针,并直接访问q->handle以推导默认基类。然而,对于共享块而言,block->q字段明确被设置为NULL,因为它们不依附于特定的队列实例。由于代码缺少对tcf_block_shared()的预检查,直接解引用NULL指针导致内核访问非法内存。这会触发KASAN(内核地址消毒剂)检测到空指针解引用,进而引发内核崩溃,导致本地低权限用户可造成拒绝服务攻击。

攻击链分析

STEP 1
步骤1
攻击者获取本地系统的低权限访问权限(PR:L)。
STEP 2
步骤2
攻击者识别目标系统上使用了共享流量控制块。
STEP 3
步骤3
攻击者利用Netlink套接字发送特制的RTM_NEWTFILTER消息,在共享块上创建流过滤器,且不提供完全限定的基类。
STEP 4
步骤4
内核执行flow_change()函数,尝试访问block->q指针。由于是共享块,该指针为NULL。
STEP 5
步骤5
内核发生空指针解引用错误,触发KASAN报错并导致系统崩溃(DoS)。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
/* * PoC for CVE-2026-31422: Linux Kernel cls_flow NULL pointer dereference * Trigger: Create a flow filter on a shared block without a base class. * Compile: gcc -o poc_cve2026_31422 poc_cve2026_31422.c */ #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <sys/socket.h> #include <linux/netlink.h> #include <linux/rtnetlink.h> #include <linux/pkt_sched.h> void trigger_vulnerability() { // In a real scenario, this would involve: // 1. Creating a shared block (ingress/egress or qdisc binding). // 2. Sending a netlink message (RTM_NEWTFILTER) with: // - tca[TCA_OPTIONS] pointing to a flow filter. // - Missing tca[TCA_CHAIN] or specific parent handle information // that forces flow_change() to derive baseclass from q->handle. // - The block index must indicate a shared block. printf("Attempting to trigger cls_flow null ptr deref...\n"); // This requires specific netlink message crafting which is omitted for brevity. // The following command sequence mimics the high-level intent: // tc qdisc add dev eth0 ingress // tc filter add dev eth0 parent ffff: protocol ip pref 1 flower ... // (The specific PoC requires setting up a shared block context first) // Hypothetical command line representation if root: // system("tc filter add dev eth0 protocol ip parent ffff: handle ::1 flow ..."); } int main() { trigger_vulnerability(); return 0; }

影响范围

Linux Kernel (Stable versions)

防御指南

临时缓解措施
限制非特权用户对网络命名空间的访问权限,禁止非管理员用户配置流量控制(tc)规则,直到应用补丁。

参考链接

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