Linux内核KSMBD子系统漏洞可致远程攻击者耗尽服务器资源

image

  Linux 内核的 KSMBD(SMB Direct)子系统中发现一个拒绝服务漏洞,已在开源社区引发广泛关注。该漏洞编号为 CVE-2025-38501,远程攻击者无需认证即可通过利用内核处理半开 TCP 会话的机制耗尽所有可用 SMB 连接。

  **核心要点** 1. CVE-2025-38501 允许攻击者通过半开 TCP 握手耗尽 KSMBD 连接 2. 概念验证工具"KSMBDrain"通过 SYN 泛洪触发漏洞 3. Linux 6.1.15+ 版本已修复,建议升级或对 445 端口实施速率限制

  公开的概念验证工具 KSMBDrain 展示了攻击原理:攻击者只需发起数千次 TCP 三次握手但故意不完成会话建立,即可导致服务器无限期保持套接字连接。

  KSMBD 拒绝服务攻击原理

  该漏洞源于 KSMBD 默认会无上限保留不完整连接。当客户端发送 SYN 包时,内核会回复 SYN-ACK 并等待最终 ACK 确认。若始终未收到 ACK,KSMBD 将持续占用连接槽位。攻击者通过单一 IP 地址重复发送 SYN 包,可快速耗尽/etc/ksmbd/ksmbd.conf 中配置的 max_connections 上限,导致合法 SMB 流量被完全拒绝。

  虽然管理员可将 handshake_timeout 设置为最低 1 分钟,但这仅能延缓攻击而无法彻底防御,因为攻击者可持续发起新的半开连接。

  公开的 Python 版 PoC 利用原始套接字批量发起握手尝试。从 poc.py 代码片段可见其攻击方式极为简单:

KSMBD DoS Attack

  KSMBD 拒绝服务攻击示意图该脚本针对漏洞服务器运行时,可快速耗尽连接池,导致 SMB 共享不可用,文件传输和认证服务完全中断。

风险要素详情
受影响产品 Linux 内核 KSMBD 子系统(5.3 及后续版本)
影响程度 拒绝服务
利用条件 需能访问目标 KSMBD 服务器的 TCP 445 端口;无需认证
CVSS 3.1 评分 暂未分配

  缓解措施

  该漏洞随 Linux 内核 5.3 版本引入,当时 KSMBD 模块被合并入主线。上游维护者已通过提交 e6bb9193974059ddbb0ce7763fa3882bd60d4dc3 修复此问题,新增了可配置的积压连接限制,并对半开套接字实施更严格的 tcp_synack_retries 阈值。

  各发行版已开始推送更新内核包,用户应升级至 Linux 6.1.15 或更高版本。若无法立即升级内核,可通过以下措施缓解风险:

  • 在网络层对 TCP 445 端口实施速率限制
  • 配置更严格的防火墙规则
  • 监控异常 SYN 包数量
  • 调整 KSMBD 用户空间设置,降低 handshake_timeout 并限制积压连接数

  鉴于 SMB 服务在企业网络中承担文件共享和认证等关键功能,建议尽快打补丁。KSMBDrain 漏洞表明,防御利用协议特性而非代码注入或权限提升的资源耗尽攻击同样重要。持续监控和保持内核版本更新是防范 CVE-2025-38501 风险的关键措施。

  参考来源:

  Linux Kernel’s KSMBD Subsystem Vulnerability Let Remote Attackers Exhaust Server Resources