В Rsync, популярном инструменте синхронизации файлов для Unix-систем, было обнаружено шесть уязвимостей безопасности, некоторые из которых позволяют злоумышленникам выполнять произвольный код на клиентской системе. CERT Coordination Center (CERT/CC) сообщил, что при наличии контроля над вредоносным сервером злоумышленники могут читать и записывать любые файлы на подключённых клиентах. Это создаёт угрозу утечки конфиденциальной информации, такой как SSH-ключи, и выполнения вредоносного кода путём изменения файлов, например, ~/.bashrc или ~/.popt.
Список обнаруженных уязвимостей включает:
CVE-2024-12084 (CVSS 9.8): переполнение кучи из-за некорректной обработки длины контрольной суммы;
CVE-2024-12085 (CVSS 7.5): утечка данных через неинициализированное содержимое стека;
CVE-2024-12086 (CVSS 6.1): утечка произвольных файлов клиента сервером Rsync;
CVE-2024-12087 (CVSS 6.5): уязвимость обхода пути;
CVE-2024-12088 (CVSS 6.5): обход опции —safe-links, ведущий к атаке обхода пути;
CVE-2024-12747 (CVSS 5.6): состояние гонки при обработке символических ссылок.
Первые пять уязвимостей обнаружили исследователи из Google Cloud Vulnerability Research — Саймон Сканнелл, Педро Галлегос и Джазиел Спелман. Последняя уязвимость была раскрыта исследователем безопасности Алексеем Горбанем. Особо опасной признана CVE-2024-12084, для эксплуатации которой злоумышленнику достаточно иметь анонимный доступ на чтение к серверу Rsync. Как отметил Ник Тейт из Red Hat Product Security, комбинированное использование уязвимостей CVE-2024-12084 и CVE-2024-12085 позволяет добиться выполнения произвольного кода на клиенте, использующем сервер Rsync. В версии Rsync 3.4.0, доступной с сегодняшнего дня, разработчики устранили все шесть уязвимостей. Пользователям, не имеющим возможности обновиться, рекомендуется применить следующие меры:
Для CVE-2024-12084: отключить поддержку SHA, скомпилировав с флагами CFLAGS=-DDISABLE_SHA512_DIGEST и CFLAGS=-DDISABLE_SHA256_DIGEST.
Для CVE-2024-12085: использовать флаг компиляции -ftrivial-auto-var-init=zero, чтобы заполнить содержимое стека нулями.