IPBUF安全漏洞报告
English
CVE-2026-43620 CVSS 6.5 中危

CVE-2026-43620 Rsync接收端越界读取导致崩溃漏洞

披露日期: 2026-05-20

漏洞信息

漏洞编号
CVE-2026-43620
漏洞类型
越界读取
CVSS评分
6.5 中危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
需要交互 (UI:R)
影响产品
Rsync

相关标签

越界读取拒绝服务RsyncCVE-2026-43620

漏洞概述

Rsync 3.4.2及更早版本存在接收端越界读取漏洞。该漏洞位于receiver.c的recv_files()函数中,允许恶意服务器导致rsync客户端崩溃。攻击者通过设置CF_INC_RECURSE标志并发送特制文件列表(首个条目非前导点目录,且ndx=0)来触发漏洞。这会导致接收端在指针数组前读取8字节并解引用无效指针,造成客户端进程确定性崩溃(SIGSEGV)。

技术细节

漏洞的根源在于Rsync客户端在处理接收文件时的逻辑缺陷。当攻击者控制的服务器设置了CF_INC_RECURSE兼容性标志时,客户端会进入特定的处理流程。漏洞触发条件要求发送的文件列表中,排序后的第一个条目不是前导点目录(即“.”目录)。随后,服务器发送一个索引(ndx)为0的传输记录,且该记录的iflag字段不包含ITEM_TRANSFER标志。在这种情况下,`recv_files()`函数中的逻辑错误会导致程序尝试访问位于指针数组起始位置之前的内存。具体来说,程序会读取指针数组前8个字节的数据,并试图将其作为指针进行解引用。由于该地址通常是未映射的或无效的,这会触发段错误(SIGSEGV),导致rsync客户端进程立即终止。这是一个拒绝服务漏洞,虽然主要影响可用性,但越界读取理论上也可能存在信息泄露的风险,尽管主要表现为崩溃。

攻击链分析

STEP 1
步骤1
攻击者搭建恶意的Rsync服务器,并在握手阶段设置CF_INC_RECURSE兼容性标志。
STEP 2
步骤2
受害端的Rsync客户端连接到该恶意服务器并请求同步文件。
STEP 3
步骤3
服务器向客户端发送特制的文件列表,确保排序后的第一个条目不是前导点目录('.')。
STEP 4
步骤4
服务器发送一个ndx为0且iflag字段不包含ITEM_TRANSFER的传输记录。
STEP 5
步骤5
客户端recv_files()函数处理该记录时,在指针数组前读取8字节并解引用无效指针。
STEP 6
步骤6
客户端进程触发SIGSEGV信号,发生确定性崩溃。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import socket import struct def send_exploit_payload(client_sock): """ PoC for CVE-2026-43620 Simulates a malicious rsync server to trigger the OOB read. """ # 1. Handshake: Ensure CF_INC_RECURSE is negotiated in the protocol flags. # This requires protocol manipulation during the initial connection setup. # 2. Send Crafted File List # The first entry in the sorted list must NOT be the leading dot directory ('.') # Normally '.' is first. We send a list like ['file1', 'file2'] without '.'. # file_list_data = pack_file_list(['malicious_file']) # client_sock.send(file_list_data) # 3. Send Trigger Packet # Construct a packet with ndx=0 and iflags missing ITEM_TRANSFER. # This causes the receiver to access file_pool[-1]. ndx = 0 # Example iflags value without ITEM_TRANSFER (e.g. 0x00 or specific flags) # Assuming ITEM_TRANSFER is a specific bit not set here. iflags = 0x00 # Construct the multiplexed packet (simplified rsync protocol structure) # payload = struct.pack('>I', ndx) + struct.pack('>I', iflags) # pkt = make_rsync_packet(payload) # client_sock.send(pkt) print("[+] Exploit payload sent to trigger SIGSEGV.") # Note: This code needs to be integrated into a functioning rsync server # simulation that handles the protocol handshake to set CF_INC_RECURSE.

影响范围

Rsync <= 3.4.2

防御指南

临时缓解措施
建议用户尽快将Rsync升级至3.4.3或更高版本以修复此漏洞。如果无法立即升级,应确保仅连接到受信任的rsync服务器,避免从不可信源同步数据,以防止遭受恶意服务器攻击导致客户端崩溃。

参考链接

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