CVE-2025-67901openrsync through 0.5.0版本存在拒绝服务漏洞,该工具被广泛应用于OpenBSD 7.8及之前版本以及其他多个平台。漏洞源于openrsync在处理同步块数据时,未能正确验证p->rem(剩余数据长度)和p->len(块数据长度)之间的关系。当恶意客户端在rsync协议交互过程中指定长度为0的块数据时,服务器端会因内存访问错误触发SIGSEGV(段错误)而崩溃,从而造成服务中断。由于rsync协议常用于服务器间文件同步备份,该漏洞可被低权限认证用户远程利用,对系统可用性造成严重影响。攻击者无需特殊权限即可通过网络发起攻击,且无需用户交互即可完成攻击过程。
漏洞存在于openrsync的blocks.c文件第480-481行代码中。在rsync协议的文件同步过程中,服务器端需要处理客户端发送的块数据信息。正常情况下,p->rem表示当前块剩余需要处理的数据长度,p->len表示块数据的总长度。然而,当客户端故意构造一个长度为0的块数据时,这两个变量之间的关系未被正确验证。具体而言,当p->len为0但p->rem不为0时,代码继续执行会导致指针运算或内存访问错误,最终引发SIGSEGV(段错误)使服务器进程崩溃。攻击者只需在rsync协议握手后的同步请求中,构造特定的块数据长度字段为0,即可触发该漏洞。此漏洞属于边界条件检查不当导致的拒绝服务问题,与传统的缓冲区溢出不同,但同样可导致服务不可用。