В популярном пакете xz Utils для сжатия данных без потерь и работы с форматом .xz обнаружили бэкдор. Проблема затрагивает практически все основные дистрибутивы Linux и не только. Судя по выясняющимся теперь подробностям, злоумышленники несколько лет готовили эту атаку и втирались в доверие к сопровождающему проекта xz Utils.
Бэкдор, который получил идентификатор CVE-2024-3094 (и 10 баллов из 10 возможных по шкале CVSS), случайно обнаружил специалист компании Microsoft и разработчик проекта PostgresSQL Андрес Фройнд (Andres Freund).
По его собственным словам, он занимался микробенчмаркингом и пытался стабилизировать систему, когда обратил внимание на повышенную нагрузку на процессор со стороны демона SSH, что вызывало задержки и увеличивало время входа в систему. Изучение этой проблемы привело Фройнда к сложному вредоносному коду в xz Utils. Известно, что бэкдор появился в xz Utils версий 5.6.0 (опубликована 23 февраля) и 5.6.1 (опубликована 9 марта).
Так как xz Utils и входящая в его состав библиотека liblzma очень популярен и включен в большинство дистрибутивов Linux (а также используется множеством приложений для Linux и macOS), обнаружение бэкдора взбудоражило все опенсорсное сообщество.
В настоящее время наличие бэкдора подтвердили разработчики: Fedora (40 Beta и Rawhide), Debian (Sid), openSUSE (Tumbleweed и MicroOS), Kali Linux (Rolling), Gentoo и Arch Linux (Rolling). Также опасные версии xz Utils успели проникнуть в Homebrew и OpenWrt, и длинный список пострадавших проектов, скорее всего, продолжит пополняться. К счастью, как можно заметить, вредоносный код, в основном, добрался лишь до бета-версий и версий разработчиков, то есть не успел попасть в стабильные релизы, получив по-настоящему широкое распространение.
За появление бэкдора в коде xz Utils ответственен некий Цзя Тан (Jia Tan), также известный под ником JiaT75. И судя по детальной хронологии событий, составленной разработчиком Эваном Бохсом (Evan Boehs), атака на xz Utils и его сопровождающего, Лассе Коллина (Lasse Collin aka Larhzu), началась еще несколько лет назад, в 2021 году, когда был создан аккаунт JiaT75 на GitHub. Походе, операция по внедрению бэкдора представляла собой сложную, продуманную атаку, и многие полагают, что за произошедшим могли стоять профессионалы из спецслужб, а Цзя Тан – полностью вымышленная личность.
Так, JiaT75 и его вероятные сообщники использовали несколько подставных аккаунтов, чтобы постепенно убедить Коллина принять помощь Цзя Тана в работе над проектом и уступить место новому мейнтейнеру. В то время у Коллина действительно был сложный период из-за проблем с психическим здоровьем, и он не мог уделять xz Utils должного внимания.
Также уже обнаружилось, что Цзя Тан не только работал над постепенным внедрением в проект бэкдора, но и проявлял активность за пределами xz Utils. Например, был найден пулл-реквест в Google OSS-Fuzz, призванный скрыть бэкдор, а также JiaT75 пытался давить на разработчиков Fedora и Ubuntu, чтобы те поскорее обновились до опасных версий xz Utils.
Когда инцидент получил большой резонанс, из соображений безопасности GitHub заблокировал репозитории xz, xz-java и xz-embedded, а также аккаунты Коллина и JiaT75. Сам Лассе Коллин подтвердил компрометацию xz Utils на сайте проекта tukaani.org, куда Цзя Тан не имел доступа.
При этом сообщает, что бэкдор был внедрен не в репозиторий xz Utils, а в TAR-архивы. Так, вредоносный код серьезно обфусцирован и его можно обнаружить только в полном пакете загрузки, а не в Git-дитрибутиве, где отсутствует макрос M4, запускающий процесс билда бэкдора. Если же вредоносный макрос присутствует, артефакты второго этапа из Git-репозитория внедряются во время сборки.
«Полученная вредоносная сборка вмешивается в аутентификацию sshd через systemd. SSH — это широко используемый протокол для удаленного подключения к системам, а sshd — служба, обеспечивающая доступ, — писали специалисты Red Hat. — При удачном стечении обстоятельств это вмешательство может позволить злоумышленнику обойти аутентификацию sshd и получить несанкционированный удаленный доступ ко всей системе».
Однако теперь, когда анализом бэкдора занимаются многие ИБ-специалисты, выясняется, что, по сути, он перехватывает и перенаправляет операции расшифровки ключей SSH RSA (функцию RSA_public_decrypt). И это позволяет атакующему изменить способ работы ПО при выполнении операций, связанных со сжатием или распаковкой lzma, передавать специальные аргументы во время операции SSH-аутентификации, выполняя произвольный код на удаленных системах, при этом не оставляя следов в логах.
В настоящее время исследователи, разработчики и даже Агентство по кибербезопасности и защите инфраструктуры США (CISA) просят всех срочно провести даунгрейд xz Utils до незатронутой версии (например, 5.4.6 Stable).
Эксперты же продолжают изучать сам бэкдор (1, 2, 3), а также анализируют вклад Цзя Тана в другие проекты, помимо xz Utils, так как любые его коммиты и предложения теперь рассматриваются как потенциально опасные.