Rsync 3.5

13 августа состоялся выпуск rsync 3.5.0, свободной утилиты для синхронизации и передачи файлов, широко применяемой для резервного копирования, создания зеркал и переноса данных между системами. Основное внимание в новой версии уделено безопасности: разработчики устранили 33 проблемы, обнаруженные в ходе целевого аудита обработки путей, фаззинга сетевого протокола rsync daemon и анализа сообщений внешних исследователей.
Среди наиболее важных изменений rsync 3.5.0:
-
Исправлена критическая CVE-2026–53791 в PROXY Protocol. Сервер с параметром
proxy protocol = trueмог принимать предоставленный клиентом исходный IP-адрес даже при непосредственном подключении в обход доверенного прокси. Это позволяло обходить правилаhosts allowиhosts deny, основанные на IP. Теперь адрес из PROXY Protocol принимается только от явно настроенных доверенных прокси, а конфигурация без спискаproxy protocol hostsработает по принципу запрета доступа. -
Закрыта возможность чтения произвольных файлов через символические ссылки (CVE-2026–53802). Проблема могла проявляться при обработке
--filter,--files-from,--include-from,--exclude-from, файлов паролей и секретов демона. Проверка компонентов пути теперь выполняется черезopenat()сO_NOFOLLOWи дополнительной проверкой владельца. -
Устранена возможность перенаправления записи через подмену пути (CVE-2026–53803). Уязвимость затрагивала
--log-file, batch-файлы и ряд конфигурационных файлов. В качестве одного из потенциальных последствий разработчики приводят возможность добавления данных вauthorized_keys. -
Усилена ограниченная SSH-обёртка
rrsync(CVE-2026–53783). Исправлена TOCTOU-гонка между проверкой пути черезrealpath()и его последующим использованием. В Linux проверенный объект теперь может закрепляться через/proc/self/fd. Для ограниченного режима также запрещён ряд потенциально опасных параметров. -
Исправлены несколько ошибок нарушения границ памяти. CVE-2026–70461 приводила к однобайтовой записи за пределами heap-буфера при обработке специально сформированных фильтров, CVE-2026–70458 — к выходу за пределы выделенной памяти при работе с некорректной hardlink-записью, а CVE-2026–70456 — к записи завершающего
NULLза пределы массива аргументов. -
Закрыты сетевые способы вызвать отказ в обслуживании. CVE-2026–70464 позволяла клиенту пройти первоначальное приветствие rsync daemon и затем неопределённо долго удерживать соединение, занимая в том числе доступные слоты
max connections. Для начальной стадии протокола введён отдельный тайм-аут. -
Ограничено число потоков Zstandard. Через CVE-2026–70455 клиент мог передать чрезмерное значение
--compress-threadsи заставить сервер создать сотни потоков на одно соединение. При тестировании значение 256 приводило к созданию 257 потоков. Для rsync daemon теперь установлен предел в восемь потоков. -
Исправлена DoS-проблема в алгоритме поиска контрольных сумм (CVE-2026–70453). Специально подобранная последовательность блоков с одинаковыми слабыми контрольными суммами могла привести к квадратичному росту нагрузки CPU в
hash_search(). Изначально проблема была зарегистрирована ещё в 2021 году как ошибка производительности. -
Изменена обработка ошибок DNS в
hosts deny(CVE-2026–70452). Если имя запрещённого хоста не удавалось разрешить, правило могло фактически работать в режиме fail-open. Теперь при ошибках разрешения имени используется безопасное поведение с запретом доступа. -
Усилена проверка TLS в
rsync-ssl(CVE-2026–70454). При использовании stunnel ранее не всегда обеспечивалась обязательная проверка центра сертификации и соответствия сертификата имени сервера, что позволяло провести атаку «человек посередине». В rsync 3.5 эти проверки включены по умолчанию. -
Ужесточена работа с символическими ссылками каталогов назначения. Теперь rsync по умолчанию следует такой ссылке только в том случае, если она принадлежит root или пользователю, запустившему процесс. Старое менее безопасное поведение можно вернуть параметром
--insecure-links. -
Добавлены дополнительные ограничения входных данных. Ограничены размеры HTTP CONNECT-запросов и ответов прокси, объём расширения xattr и потенциально опасные значения некоторых параметров сетевого протокола.
-
Добавлены проверки целочисленных переполнений при расчёте размеров хеш-таблиц, списков файлов и других внутренних структур данных.
-
Переработан обработчик
SIGUSR2, чтобы вызываемые из обработчика сигнала операции были async-signal-safe. -
Исправлено чтение памяти за границей буфера в AVX2-коде. Оптимизированная реализация скользящей контрольной суммы могла читать до 64 байт после окончания входного буфера.
-
Исправлена работа
--link-destна файловых системах, которые не поддерживают создание hardlink для некоторых типов объектов. -
Исправлена обработка
%%в параметрах--out-formatи--log-file-format. -
Исправлена работа
--chmod=a+sи ряд других менее заметных ошибок командной строки и обработки файлов.
Для каждой из 33 исправленных проблем разработчики подготовили регрессионный тест, который воспроизводит дефект на старом коде и проверяет его отсутствие после исправления.
Значительная часть изменений появилась в результате аудита безопасности. В работе участвовали исследователи Trail of Bits в рамках программы Patch the Planet, Грег Кроа-Хартман и другие специалисты. Сопровождающий rsync Эндрю Триджелл также отметил вклад новых участников команды проекта, занимавшихся разбором отчётов, подготовкой исправлений и тестов.
rsync распространяется под лицензией GPLv3 и используется как самостоятельная программа, так и в составе многочисленных систем резервного копирования и зеркалирования. Исходный код и готовые архивы rsync 3.5.0 опубликованы на GitHub.
>>> Источник
