CVE-2025-11624CVE-2025-11624是wolfSSH项目中SFTP服务器端存在的一个严重栈缓冲区溢出漏洞,CVSS评分为9.8,属于最高严重等级。该漏洞由wolfSSL团队成员[email protected]发现并报告。wolfSSH是一款基于wolfSSL加密库的轻量级SSH协议实现,广泛应用于嵌入式系统和IoT设备中提供安全的远程访问能力。该漏洞存在于SFTP(SSH File Transfer Protocol)子系统的服务器端处理逻辑中,当服务器接收来自客户端的恶意数据包时,如果该数据包中包含的句柄(handle)大小超过了系统底层句柄或文件描述符的大小,但又小于代码中允许的最大句柄大小限制,就会触发栈缓冲区溢出。由于该漏洞无需认证即可远程利用,且对机密性、完整性和可用性均产生高影响,因此被评定为关键级别的安全漏洞。攻击者可以通过向暴露在网络上的wolfSSH SFTP服务器发送特制的数据包,利用此漏洞实现远程代码执行,完全控制目标系统。该漏洞的修复通过GitHub Pull Request #834完成,建议所有使用受影响版本的用户尽快升级到修复版本。
该漏洞的核心问题在于wolfSSH SFTP服务器在处理客户端发送的SFTP协议数据包时,对句柄(handle)字段的大小校验存在缺陷。具体技术原理如下:
1. **协议层面**:SFTP协议是SSH协议的一个子系统,用于在SSH安全通道上进行文件传输。在SFTP协议中,服务器和客户端之间通过交换包含各种请求和响应的数据包进行通信,其中许多操作(如文件打开、读取、写入等)会涉及句柄(handle)的传递。
2. **漏洞触发条件**:服务器在接收SFTP数据包时,会解析其中的句柄字段。正常情况下,句柄大小应当与系统底层的文件描述符大小相匹配。然而,当攻击者构造一个恶意数据包,使其包含的句柄大小满足以下条件时,漏洞被触发:
- 句柄大小 > 系统句柄/文件描述符大小
- 句柄大小 < 代码中允许的最大句柄大小
3. **溢出机制**:由于服务器在栈上分配的缓冲区大小基于系统句柄大小,而传入的句柄数据大于该缓冲区大小但通过了最大尺寸检查,导致数据被写入超出栈缓冲区边界的内存区域,造成栈缓冲区溢出。
4. **利用方式**:攻击者无需任何认证凭据,只需通过网络向目标SFTP服务器的SSH端口(通常为22端口)发送特制的SFTP协议数据包即可触发漏洞。由于SSH连接建立初期存在协议握手阶段,攻击者需要先完成SSH握手,然后发送恶意的SFTP子系统请求。成功利用后,攻击者可覆盖栈上的返回地址或其他关键数据,实现远程代码执行。
5. **影响范围**:由于wolfSSH常用于嵌入式设备和IoT产品中,这些设备往往缺乏现代安全防护机制(如ASLR、栈保护等),使得漏洞利用更加容易。