编程 rsync 3.5.2 修 sender 侧 CPU 耗尽:hosts deny 会 fail-open,auth users 会静默跳过规则

2026-11-10 21:11:32

rsync 3.5.2 修复 sender 侧 CPU 耗尽:3.5.0 批次 33 个问题与升级自查

rsync 3.5.2 于 2026-11-04 发布,修复安全公告页列出的全部问题;3.5.1 及更早版本均受影响。3.5.0(2026-08-13)则是一次集中修复,共处理 33 个安全问题,其中多个只在非默认配置下可达。安全公告:。

3.5.2:CVE-2026-119741

3.5.2 限制了 CVE-2026-70453 缓解后仍残留的 sender 侧校验和计算量。

项目内容
CVECVE-2026-119741(HIGH)
位置match.c 的 hash_search()
触发方式恶意 receiver 提供弱校验和,使其与连续的滚动窗口逐一碰撞,同时配上不匹配的强校验和,sender 在每个字节偏移都计算完整强校验和,且结果始终失败
影响版本/mnt/disk。其他 uid 创建的符号链接目标现在会被拒绝,以此关闭 chdir TOCTOU。--insecure-links` 可恢复无条件跟随。

proxy protocol = true 未配 proxy protocol hosts。 daemon 改为拒绝所有连接(fail-closed),并在启动时输出警告。此前该配置可能被静默接受。

rrsync 受限子目录。 support/rrsync 在受限子目录下强制 --no-D,并拒绝 --copy-unsafe-links。

3.5.2 的其他修复

  • 中断的 --append 与 --inplace 传输会把最后 256 KiB 缓冲区写两次。修复后中断的目标保持干净前缀,下一次传输可以续传或修复。
  • rrsync 上传在目标文件已存在时的失败。
  • 大稀疏文件和重复块文件的匹配性能:重复校验和链耗尽搜索上限。
  • 恶意 receiver 提供弱校验和、与连续滚动窗口碰撞时,限制强校验和计算量(CVE-2026-119741)。
  • daemon receiver 在排队删除输出达到 --max-alloc 时的栈溢出。
  • --files-from 从 daemon 模块子目录拉取时,实际从模块根读取每个列出的文件。这可能发送、并在配合 --remove-source-files 时删除模块过滤器排除的同名文件。
  • 密码文件首行为空:解析器不再跳过空行并改用后面的密码。
  • 转义写入 stdout / stderr / 日志的文件名和诊断信息中的终端控制字符。
  • IPv6 对端在 daemon hosts allow / hosts deny 中的前向 DNS 主机名条目。

新选项与输出变化

--nice / --no-nice

用于调整本地和远端 rsync 进程的 CPU 与 I/O 调度优先级。daemon 客户端和 rrsync 不能提升服务端优先级;daemon 客户端只能请求 CPU nice 19、idle I/O 优先级,或两者同时。

延迟创建新增和变更的符号链接,直到其他传输文件就位。它隐含 --no-inc-recursive,要求 protocol 29 或更高且接收端支持。不能与 --remove-source-files、--hard-links、--compare-dest、--copy-dest、--link-dest 同时使用。

人类可读输出

动态精度显示三位有效数字,二进制单位后缀追加 i。--progress 使用同一格式化器,字节数和速率分别标注 B 与 B/s。示例:46.7M、48.8Mi、782,448B、113,295B/s。

Debian 12 LTS 的 backport

DLA-4888-1(2026-11-09)面向 Debian 12 bookworm,修复版本为 3.5.0+ds1-0+deb12u1。该版本 backport 了 rsync 3.5.0 以及 3.5.1 的回归修复,而不是把每个补丁逐个塞回 3.2.7。公告提示这一变更可能造成中断,因为安全修复自带上述行为变化。

升级与自查清单

确认版本:

rsync --version
# 期望 3.5.2;Debian 12 LTS 期望 3.5.0+ds1-0+deb12u1

Debian 包状态与升级:

dpkg -l rsync | tail -n 1
apt-cache policy rsync
sudo apt-get update && sudo apt-get install --only-upgrade rsync

检查 daemon 配置中的关键项:

grep -nE '^\s*(hosts allow|hosts deny|auth users|use chroot|proxy protocol|read only)\s*=' /etc/rsyncd.conf

列出模块,逐个确认是否为公共可读/可写:

grep -nE '^\s*\[' /etc/rsyncd.conf
检查项关注点
hosts deny主机名解析失败现在应 fail-closed;升级后确认原本被拒的主机仍被拒
auth users按文档的逗号分隔解析,确认没有因解析差异静默跳过 deny / read-only 规则
use chroot模块若为 no,核对 CVE-2026-53793 与 CVE-2026-70460 涉及的模块根逃逸路径
可写模块审计对端可控的 --temp-dir、--partial-dir、--backup-dir,以及 --files-from 配合 --remove-source-files 的删除语义
proxy protocol设为 true 时必须配置 proxy protocol hosts,否则 daemon 拒绝所有连接
公共模块3.5.2 之前,CVE-2026-119741 无需账号即可打满 CPU;无法立即升级时先限制匿名访问

来源

  • rsync 安全公告:
  • rsync NEWS:
  • Help Net Security,2026-11-04:
  • LWN:
复制全文 生成海报 运维 rsync 安全公告 备份

推荐文章

程序员茄子在线接单