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

CVE-2025-71153 Linux内核ksmbd模块get_file_all_info内存泄漏漏洞

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

漏洞信息

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

相关标签

CVE-2025-71153内存泄漏Linux内核ksmbd本地攻击拒绝服务SMB/CIFS资源耗尽

漏洞概述

CVE-2025-71153是Linux内核中ksmbd模块的一个中等严重性内存泄漏漏洞。ksmbd是Linux内核中实现SMB/CIFS文件共享协议的服务端组件。该漏洞存在于get_file_all_info()函数中,当该函数调用vfs_getattr()系统调用失败时,会立即返回错误,但此时已分配的filename内存没有被正确释放,导致内存泄漏。攻击者可以通过本地低权限账户触发此漏洞,持续利用可导致系统内存资源耗尽,影响系统可用性。该漏洞CVSS 3.1基础评分为5.5分,属于中等严重级别。攻击向量为本地攻击,需要低权限但无需用户交互,机密性和完整性影响均为无,但可用性影响为高。

技术细节

漏洞位于Linux内核的ksmbd模块,具体在get_file_all_info()函数中。该函数负责获取文件的全部信息,在执行过程中会动态分配filename内存用于存储文件名。当函数调用vfs_getattr()获取文件属性失败时,按照原有代码逻辑会直接返回错误码-1,而没有执行释放filename内存的代码路径。这个遗漏导致每次vfs_getattr()调用失败时都会有内存泄漏。修复方案是在返回错误前添加kfree(filename)调用,确保内存被正确释放。攻击者需要具有本地访问权限,通过SMB协议触发ksmbd处理特定文件请求,当文件属性查询失败时即可触发内存泄漏。长期利用可导致系统内存逐渐耗尽。

攻击链分析

STEP 1
1
攻击者获得Linux系统的本地低权限访问账户
STEP 2
2
攻击者通过SMB客户端连接目标系统的ksmbd服务
STEP 3
3
攻击者请求访问特定文件路径,触发get_file_all_info()函数
STEP 4
4
函数调用vfs_getattr()获取文件属性失败(如文件不存在或权限不足)
STEP 5
5
函数在错误处理路径中直接返回,未释放已分配的filename内存
STEP 6
6
重复触发导致内存持续泄漏,系统内存资源逐渐耗尽
STEP 7
7
最终导致系统可用性下降,可能引发拒绝服务

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
// CVE-2025-71153 PoC - Memory leak trigger in ksmbd get_file_all_info() // This PoC demonstrates the memory leak condition #include <stdio.h> #include <stdlib.h> #include <string.h> // Simulated vulnerable code structure struct file_info { char *filename; int fd; }; // Vulnerable function - get_file_all_info() int get_file_all_info(const char *path) { struct file_info *info = malloc(sizeof(struct file_info)); if (!info) return -1; // Allocate filename memory info->filename = malloc(256); if (!info->filename) { free(info); return -1; } strncpy(info->filename, path, 255); info->fd = -1; // Simulate vfs_getattr() failure int ret = -1; // vfs_getattr() fails if (ret != 0) { // BUG: Memory leak here - filename not freed before return // Should be: free(info->filename); free(info); return ret; } // Normal cleanup path (leak doesn't happen here) free(info->filename); free(info); return 0; } // Fixed version int get_file_all_info_fixed(const char *path) { struct file_info *info = malloc(sizeof(struct file_info)); if (!info) return -1; info->filename = malloc(256); if (!info->filename) { free(info); return -1; } strncpy(info->filename, path, 255); info->fd = -1; int ret = -1; if (ret != 0) { // FIX: Free filename before return free(info->filename); free(info); return ret; } free(info->filename); free(info); return 0; } int main() { printf("CVE-2025-71153 Memory Leak PoC\n"); printf("Triggering vulnerable function...\n"); for (int i = 0; i < 1000; i++) { get_file_all_info("/path/to/invalid/file"); } printf("Memory leak triggered - check with valgrind\n"); return 0; }

影响范围

Linux Kernel ksmbd < 0c56693b06a68476ba113db6347e7897475f9e4c
Linux Kernel ksmbd < 5012b4c812230ae066902a00442708c999111183
Linux Kernel ksmbd < 676907004256e0226c7ed3691db9f431404ca258
Linux Kernel ksmbd < d026f47db68638521df8543535ef863814fb01b1

防御指南

临时缓解措施
如无法立即应用内核更新,可通过以下措施缓解:1) 禁用ksmbd服务如果不需要SMB文件共享;2) 限制本地用户访问权限,遵循最小权限原则;3) 使用AppArmor或SELinux限制ksmbd进程的权限范围;4) 监控系统内存使用情况,设置告警阈值检测异常内存增长;5) 考虑使用iptables限制SMB端口访问,仅允许受信任的客户端连接。

参考链接

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