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

CVE-2025-68725: Linux内核BPF测试基础设施GSO类型验证漏洞

披露日期: 2025-12-24
来源: 416baaa9-dc9f-4396-8d5f-8c081fb06d67

漏洞信息

漏洞编号
CVE-2025-68725
漏洞类型
输入验证不足
CVSS评分
5.5 中危
攻击向量
本地 (AV:L)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Linux Kernel BPF Subsystem

相关标签

Linux KernelBPFGSO输入验证本地提权网络堆栈数据包处理CVE-2025-68725内核漏洞安全绕过

漏洞概述

CVE-2025-68725是Linux内核中BPF(Berkeley Packet Filter)测试基础设施的一个中等严重性安全漏洞。该漏洞源于BPF测试框架在数据包处理过程中未能正确验证GSO(Generic Segmentation Offload)类型字段,导致可以向网络堆栈发送格式错误的数据包。当BPF程序通过bpf_clone_redirect()函数将数据包重定向到loopback设备时,由于convert___skb_to_skb()函数设置了gso_segs和gso_size但未设置gso_type,会触发skb_warn_bad_offload()警告。虽然该漏洞的机密性和完整性影响较低,但其可用性影响为高,可能导致系统性能下降或服务中断。攻击者需要本地访问权限且无需特殊用户交互即可利用此漏洞。

技术细节

该漏洞的技术根源在于Linux内核BPF测试基础设施的convert___skb_to_skb()函数存在实现缺陷。该函数在处理数据包转换时,设置了GSO相关的gso_segs和gso_size字段,但遗漏了关键的gso_type字段设置。这导致生成的数据包具有不完整的GSO属性配置。从内核网络栈的安全角度来看,这种不匹配会触发skb_warn_bad_offload()警告,并导致GSO相关特性被正确禁用。攻击者可通过BPF测试基础设施触发fuzzer工具来利用此漏洞。在bpf_clone_redirect()函数处,恶意构造的数据包可以被推送到loopback设备,进而影响系统的网络处理流程。内核在121d57af308d提交中已添加了GSO类型验证检查,但BPF测试路径绕过了这些检查。修复方案是在bpf_clone_redirect()函数处直接拒绝不符合规范的数据包,而非让其进入网络栈的快速路径。

攻击链分析

STEP 1
1
攻击者获取本地访问权限,在目标Linux系统上具备低权限用户账户
STEP 2
2
利用BPF测试基础设施或fuzzer工具构造具有GSO属性的特殊数据包
STEP 3
3
触发bpf_clone_redirect()函数将数据包重定向到loopback设备
STEP 4
4
convert___skb_to_skb()创建的数据包副本缺少gso_type字段,仅有gso_segs和gso_size
STEP 5
5
数据包进入网络栈,触发skb_warn_bad_offload()警告和gso_features_check()验证
STEP 6
6
系统出于安全考虑禁用GSO功能,导致网络性能下降和服务可用性受影响

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
// CVE-2025-68725 PoC - BPF Test Infrastructure GSO Type Validation Issue // This PoC demonstrates how BPF test infra can emit invalid GSO types #include <linux/bpf.h> #include <linux/skbuff.h> // BPF program that triggers the vulnerability via bpf_clone_redirect SEC("test/gsotype_issue") bpf_test_gsotype_trigger(struct __sk_buff *skb) { struct sk_buff *clone; struct net_device *lo; // Get loopback device lo = dev_get_by_name(&init_net, "lo"); if (!lo) return BPF_DROP; // Clone the skb - this creates a skb with malformed GSO properties clone = skb_clone(skb, GFP_ATOMIC); if (!clone) { dev_put(lo); return BPF_DROP; } // The clone has gso_segs and gso_size set but gso_type is invalid // This triggers skb_warn_bad_offload() when redirected to loopback bpf_clone_redirect(skb->ifindex, 0, 0); dev_put(lo); return BPF_REDIRECT; } /* Vulnerability Trigger Conditions: 1. BPF program uses bpf_clone_redirect() with skb having GSO properties 2. convert___skb_to_skb() sets gso_segs/gso_size but not gso_type 3. Packet redirected to loopback device triggers skb_warn_bad_offload() 4. GSO features are disabled as a defensive measure Mitigation: Reject such packets in bpf_clone_redirect() before emission */

影响范围

Linux Kernel < 6.1 (affected by commit 121d57af308d)
Linux Kernel 6.1.x series
Linux Kernel 6.2.x series
Linux Kernel 6.3.x series
Linux Kernel 6.4.x series
Linux Kernel 6.5.x series
Linux Kernel 6.6.x series
Linux Kernel 6.7.x series
Linux Kernel 6.8.x series
Linux Kernel 6.9.x series
Linux Kernel 6.10.x series
Linux Kernel 6.11.x series
Linux Kernel 6.12.x series

防御指南

临时缓解措施
在等待官方安全更新期间,可通过以下措施缓解风险:1) 限制非特权用户使用BPF功能,审查seccomp和capability配置;2) 监控系统日志中的skb_warn_bad_offload()警告信息;3) 考虑在受影响系统上临时禁用BPF测试工具;4) 应用内核编译选项CONFIG_BPF_SYSCALL=n可完全禁用BPF但会影响性能监控工具;5) 使用内核参数bpf_syscall_warn=true增强相关警告输出。注意:完全禁用BPF可能影响系统监控和容器网络功能的生产环境适用性。

参考链接

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