CVE-2025-61600CVE-2025-61600是Stalwart邮件与协作服务器中存在的一个高危拒绝服务漏洞。该漏洞位于IMAP协议解析器的CommandParser实现中,由于在多个解析状态处理函数中缺少对动态缓冲区大小的限制检查,远程攻击者可以通过发送特制的IMAP命令请求,触发服务器无限制地分配内存资源,最终耗尽服务器可用内存,触发操作系统的OOM(Out-of-Memory) Killer机制,导致服务进程被强制终止,造成拒绝服务攻击。
该漏洞的CVSS 3.1评分为7.5分,属于高危级别。其攻击向量为网络(AV:N),攻击复杂度低(AC:L),无需任何权限(PR:N)和用户交互(UI:N),对可用性影响为高(A:H),但对机密性和完整性无直接影响。
Stalwart是一个开源的邮件与协作服务器,提供IMAP、SMTP、JMAP等多种邮件协议支持。由于IMAP是邮件客户端与服务器交互的核心协议,任何能够连接到服务器IMAP端口(默认143/993)的远程攻击者都可以利用此漏洞。该漏洞已在Stalwart 0.13.4版本中修复,官方建议用户尽快升级到最新版本以消除安全风险。
Stalwart服务器的IMAP协议解析器基于状态机实现,CommandParser结构体在解析IMAP命令时使用动态缓冲区来存储命令参数和标签数据。在大多数解析状态下,CommandParser会对动态缓冲区的大小施加限制(例如限制为8KB或64KB),以防止恶意输入导致内存耗尽。
然而,该实现在多个状态处理函数(如解析APPEND命令、FETCH命令参数、UID命令等状态)中遗漏了缓冲区大小验证检查。攻击者可以构造包含超大参数(如超长的邮箱名、消息标志、日期字符串等)的IMAP命令发送到服务器。由于缺少大小限制,CommandParser会持续为这些超长字符串分配内存,而不会进行截断或拒绝处理。
利用方式如下:
1. 攻击者通过TCP连接到目标服务器的IMAP端口(143或993);
2. 发送特制的IMAP命令,其中包含超长参数(例如一个数十MB甚至数百MB的字符串);
3. CommandParser的状态处理函数在缺少大小检查的情况下,持续分配内存来存储该参数;
4. 重复发送此类命令或单次发送足够大的数据,快速耗尽服务器内存;
5. 操作系统触发OOM Killer,终止Stalwart进程,导致拒绝服务。
该漏洞的核心问题在于防御性编程的缺失——在所有可能接收用户输入的解析路径上都应实施统一的输入大小限制策略。