IPBUF安全漏洞报告
English
CVE-2025-71133 CVSS 7.1 高危

CVE-2025-71133: Linux内核irdma驱动越界读取漏洞

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

漏洞信息

漏洞编号
CVE-2025-71133
漏洞类型
内存越界读取
CVSS评分
7.1 高危
攻击向量
本地 (AV:L)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Linux内核 RDMA/irdma驱动

相关标签

CVE-2025-71133Linux内核irdma驱动内存越界读取RDMAKASANstack-out-of-bounds高危漏洞本地攻击IPv6网络

漏洞概述

CVE-2025-71133是Linux内核中RDMA/irdma驱动的安全漏洞,CVSS评分7.1,属于高危级别。该漏洞存在于irdma_net_event()函数中,函数在处理网络邻居事件时,在未验证事件类型为NETEVENT_NEIGH_UPDATE的情况下就直接访问了neigh指针指向的内存。由于不同的NETEVENT事件类型对应不同的数据结构,这些结构体的大小可能小于struct neighbour,导致内核读取超出边界的内存区域。此漏洞主要在调试内核上触发KASAN检测,报告stack-out-of-bounds错误。虽然在生产环境中影响有限,但可能导致敏感信息泄露或系统不稳定。攻击者需要本地低权限即可触发此漏洞,无需用户交互。

技术细节

漏洞根源在于irdma_net_event()函数的设计缺陷。该函数接收一个通用指针参数ptr作为neigh的别名,但在函数入口处未进行事件类型验证就直接解引用该指针访问neigh->dev字段。Linux内核的NETEVENT子系统会发送多种不同类型的事件通知,每种事件携带不同的数据结构。当事件类型不是NETEVENT_NEIGH_UPDATE时,ptr指向的结构体可能远小于struct neighbour,此时访问neigh->dev将导致越界读取内核栈内存。

从KASAN报告可见,读取操作发生在irdma_net_event+0x32e/0x3b0地址,读取大小为8字节,访问地址ffffc900075e07f0超出当前栈帧边界。触发路径经过rt6_probe_deferred工作队列、tcp_v6_err、icmpv6_notify、ndisc_redirect_rcv等网络栈函数,最终在IPv6重定向场景下触发邻居更新事件。修复方案是将neigh->dev的读取操作移动到NETEVENT_NEIGH_UPDATE条件分支内部,确保只在验证事件类型后才进行指针解引用。

攻击链分析

STEP 1
步骤1
攻击者获得目标系统的本地低权限访问权限
STEP 2
步骤2
确保目标系统加载了irdma内核驱动模块
STEP 3
步骤3
配置IPv6网络环境,触发邻居发现和重定向机制
STEP 4
步骤4
通过发送特定IPv6流量触发icmpv6_notify,调用rt6_do_redirect()
STEP 5
步骤5
rt6_do_redirect()调用notifier_call_chain()通知网络事件
STEP 6
步骤6
irdma_net_event()接收事件,在未验证NETEVENT_NEIGH_UPDATE类型时解引用neigh指针
STEP 7
步骤7
访问neigh->dev时发生栈内存越界读取,可能导致信息泄露或系统崩溃

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
/* * PoC for CVE-2025-71133: irdma_net_event out-of-bounds read * This PoC triggers the vulnerability by causing a NETEVENT_NEIGH_UPDATE * event that will be processed by irdma driver. * * Note: This is a kernel-level vulnerability, PoC requires kernel module * or specific network configuration to trigger. */ #include <linux/kernel.h> #include <linux/module.h> #include <linux/netdevice.h> #include <net/neighbour.h> MODULE_LICENSE("GPL"); MODULE_AUTHOR("PoC Author"); MODULE_DESCRIPTION("CVE-2025-71133 PoC"); /* * The vulnerable code pattern in irdma_net_event(): * * static int irdma_net_event(struct notifier_block *nb, unsigned long event, void *ptr) * { * struct neighbour *neigh = ptr; // <-- Direct assignment without type check * struct net_device *dev = neigh->dev; // <-- Out-of-bounds read here * * switch (event) { * case NETEVENT_NEIGH_UPDATE: * // ... process update * break; * default: * break; * } * } * * Trigger mechanism: * 1. Configure IPv6 routing to trigger ICMPv6 redirect * 2. The redirect handler calls rt6_do_redirect() * 3. rt6_do_redirect() calls notifier_call_chain() * 4. irdma_net_event() receives non-NETEVENT_NEIGH_UPDATE event * 5. KASAN detects stack-out-of-bounds read */ static int __init cve_2025_71133_init(void) { printk(KERN_INFO "CVE-2025-71133 PoC module loaded\n"); /* * In practice, this vulnerability is triggered through network events, * not by loading a module. The PoC involves: * - Having irdma driver loaded * - IPv6 neighbor discovery triggering redirect * - KASAN-enabled kernel detecting the out-of-bounds access */ return 0; } static void __exit cve_2025_71133_exit(void) { printk(KERN_INFO "CVE-2025-71133 PoC module unloaded\n"); } module_init(cve_2025_71133_init); module_exit(cve_2025_71133_exit);

影响范围

Linux内核 5.14.0-630.el9.x86_64 (debug版本)
Linux内核主线 < 修复版本 (commit 305c02e541befe4a44ffde30ed374970f41aeb6c)
Linux内核 stable < 6.1 (部分稳定版本)
Linux内核 stable < 6.6 (部分稳定版本)

防御指南

临时缓解措施
在无法立即升级内核的情况下,可以考虑以下临时缓解措施:1) 检查系统是否加载了irdma驱动模块,如无必要可在启动时禁用;2) 监控系统日志中的内核错误信息,特别是KASAN相关报告;3) 限制非必要的IPv6网络功能以减少触发概率;4) 确保系统运行在非debug内核上,虽然漏洞仍存在但不会触发KASAN警告。需要注意的是,这些措施不能根本解决问题,最佳方案仍是尽快应用官方安全补丁升级内核。

参考链接

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