Бэкдор в xz/liblzma, предназначенный для атаки ssh-серверов
dl // 30.03.24 17:23
Совершенно прекрасный бэкдор в библиотеке liblzma, входящей в состав архиватора xz, обнаружил разработчик из Microsoft Андрес Фройнд.
[Не забывайте при копировании материала указывать полный адрес источника: //bugtraq.ru/rsn/archive/2024/03/02.html]
Один из двух основных разработчиков xz JiaT75 в конце февраля добавил в архивированный релиз (tarball) скрипт, который вызывался при сборке deb/rpm-пакетов и внедрял в библиотеку вредоносный код, меняя поведение функций crc32_resolve и crc64_resolve. При вызове выполнялись различные проверки (типа процессора, параметров вызова программы, переменных окружения и т.п.), после чего происходил довольно медленный парсинг символьных таблиц динамически загружаемых библиотек (что и обратило на себя внимание Фройнда).
Полный анализ сильно обфусцированного кода еще не закончен, предварительно он предназначен для удаленного исполнения кода, не требующего предварительной авторизации. Несмотря на то, что стандартный openssh не использует liblzma, некоторые популярные дистрибутивы включают в него поддержку уведомлений systemd, а вызываемая при этом libsystemd уже использует liblzma.
За последние недели разработчики нескольких дистрибутивов получили запросы на включение обновленной версии xz, а разработчики Fedora даже поработали с автором над исправлением ошибок valgrind, связанных как раз с механизмом внедрения вредоносного кода. Фактически лишь чудо и внимательность Фройнда не дали бэкдору распространиться.
Пока linux-сообществу повезло и стабильные версии популярных дистрибутивов не успели пострадать, хотя, например, популярному пакетному менеджеру для macOS HomeBrew пришлось срочно откатить xz c версии 5.6.1 на версию 5.4.6.