Бэкдор XZ в Linux и важность программного обеспечения с открытым исходным кодом
Свободно видимый код и бдительное око остановили глобальный инцидент безопасности
Что произошло?
Сядьте и пристегнитесь, потому что эта история просто безумна.
В марте 2024 года Андреас Фройнд, сотрудник Microsoft, изучал некоторые проблемы производительности Debian-sid. Он заметил, что система генерирует большое количество SSH-соединений, которые потребляют ненормальное количество ресурсов процессора. После дальнейшей проверки он сообщил об этой проблеме в проект OpenWall, а затем она попала к ряду поставщиков программного обеспечения для дальнейшей проверки.
И вот, господин Фройнд обнаружил скрытый кусок кода, который был внедрен в последние версии 5.6.0 и 5.6.1 XZ давним участником проекта Цзянь Таном.
Изменения, внесенные в эти версии, ставят под угрозу безопасность операционной системы, предоставляя злоумышленнику полный административный доступ.
Г-н Фройнд назвал обнаружение этой крупной атаки на цепочку поставок, сходной с атакой на SolarWinds, “действительно требующим большого количества совпадений” и сказал: “Мне кажется, что нам просто очень, очень повезло”.
Что делает код бэкдора XZ
Вредоносный код, который был незаметно добавлен в проект XZ Utils, нацелен на sshd - исполняемый файл, который используется для удаленного создания SSH-соединений. Если у злоумышленника есть доступ к правильному ключу шифрования, он сможет добавить его в сертификаты SSH-логинов, рассылать их и затем выполнять через устройства с бэкдором.
Связь между программой сжатия XZ и SSH обусловлена патчем в Debian и других дистрибутивах, который создает связь между SSH и systemd. Systemd, в свою очередь, связана с библиотекой LZMA от XZ, которая создает путь от бэкдора XZ до доступа к SSH.
Томас Роччиа сделал подробную инфографику, объясняющую точные шаги этого процесса:
Что особенно поражает в этом бэкдоре, так это его изощренность и шаги, предпринятые злоумышленником для внедрения в проект XZ в течение нескольких лет, чтобы получить достаточный доступ для осуществления атаки. После этого открытия взоры исследователей угроз сосредоточились на одном из основных участников атаки под псевдонимом Jian Tan.
Кто такой Цзянь Тань?
На данный момент мы не знаем истинной личности пользователя, работающего под именем Jian Tan. Однако исследователям удалось обнаружить несколько зацепок. Цзянь Тань, работающий под именем JiaT75, впервые засветился в работе над кодом XZ Utils в 2021 году. Это не является серьезным поводом для беспокойства, поскольку XZ - проект с открытым исходным кодом, и каждый может предложить свою помощь в его улучшении или устранении ошибок. На протяжении многих лет Тан продолжал вносить небольшие вклады в проект, что повышало его репутацию и доверие в сообществе, сформировавшемся вокруг проекта.
В мае 2022 года неизвестный пользователь под псевдонимом Dennis Ens начал жаловаться на недавнее обновление, после чего другой неизвестный под ником Jigar Kumar подтолкнул основного разработчика XZ Utils к добавлению нового сопровождающего (человека, который собирает и организует исходный код для проектов с открытым исходным кодом), чтобы разработка шла быстрее. Это давление в конечном итоге привело к тому, что Цзянь Тан был добавлен в проект в качестве сопровождающего.
В середине 2023 года Тан попросил отключить публичную проверку уязвимостей, что позволило бы внедрить код бэкдора.
Скриншот запроса Тана на GitHub об отключении ifunc.
Продолжив работу над проектом, в феврале 2024 года Тан сделал коммиты финальных версий XZ Utils 5.6.0 и 5.6.1, содержащих вредоносный бэкдор.
Эта долгосрочная социально-инженерная атака завоевала доверие сообщества разработчиков открытого кода, что дало Тану доступ, необходимый для осуществления атаки. Количество потраченного времени и высокий технический уровень самого бэкдора заставляют некоторых исследователей безопасности полагать, что за ним стоит государственный спонсор.
Что дальше для XZ?
Веб-сайт XZ Utils полностью контролируется его основным разработчиком Лассе Коллином, а Цзянь Тань полностью отстранен от проекта. Страница проекта на GitHub снова работает, и Коллин сообщил, что в настоящее время они проверяют репозиторий, и как только это будет завершено, он планирует опубликовать статью об этом инциденте.
На момент обнаружения бэкдора были подтверждены следующие дистрибутивы Linux:
- Arch Linux
- Debian тестовые, нестабильные и экспериментальные версии с 5.5.1alpha-01 по 5.6.1-1
- Fedora 40 Beta, Fedora 41 и Fedora Rawhide
- Kali Linux
- openSUSE Tumbleweed и openSUSE MicroOS.
Homebrew, менеджер пакетов для MacOS, использовал 5.6.x, но вернулся к XZ Utils 5.4.6.
Если вы хотите проверить, установлена ли на вашем устройстве версия XZ Utils, вы можете выполнить команду “xz —version” в терминале. Если установлена версия 5.6.0 или 5.6.1, рекомендуется вернуться к версии 5.4.x.
Открытый исходный код - единственный способ предоставить безопасное программное обеспечение
Нам чрезвычайно повезло. Если бы проект XZ Utils был частным и Фройнд был вынужден подать заявку в службу поддержки, мы могли бы сегодня оказаться в совершенно ином положении. Инцидент с бэкдором в XZ - прекрасный пример того, почему публикация программного обеспечения с открытым исходным кодом дает серьезные преимущества в плане безопасности. Только предоставляя всем желающим доступ к просмотру исходного кода, мы даем исследователям безопасности шанс обнаружить подобные атаки до того, как все пойдет не так, как хотелось бы.
Программное обеспечение с открытым исходным кодом повышает уровень безопасности каждого:
- Разрешение публичного обзора кода для обеспечения безопасности дает возможность получить конструктивную критику от экспертов любого уровня и происхождения.
- Сообщество может обнаружить ошибки и уязвимости быстрее, чем команда разработчиков с закрытым исходным кодом.
- Повышение доверия за счет прозрачности позволяет конечным пользователям знать, что они могут доверять продуктам, которые они выбирают для защиты себя и своих данных.
Программное обеспечение с открытым исходным кодом - важнейший аспект цифровой безопасности. Проект XZ Utils используется в корпоративных продуктах, и, если бы не было возможности проверить сообщество, эта внутренняя атака могла бы остаться незамеченной. В случае с закрытым программным обеспечением только избранные лица имеют право просматривать исходный код, что в конечном итоге повышает вероятность упущения подобных изменений.
Хотя в крупных технологических компаниях есть множество разработчиков, которые просматривают код, никогда нельзя гарантировать, что один из сотрудников, подобно Цзянь Тану, не пытается протащить вредоносный код. Открытый исходный код гарантирует, что за кодом следит больше людей, а это значит, что в дополнение к строгим протоколам безопасности и многократным проверкам кода больше людей могут заметить больше проблем. Согласно закону Линуса: “Если есть достаточно глаз, то все ошибки неглубоки”.
В Tuta мы публикуем все наши протоколы шифрования и клиентский код с открытым исходным кодом, чтобы наши пользователи могли быть уверены в том, что мы выполняем свои обещания по безопасности. Наше шифрование не только разрабатывается и тестируется экспертами в области криптографии, но и предоставляется всем исследователям безопасности для тестирования и анализа. Доверие заслуживается, и, публикуя наш код полностью с открытым исходным кодом, мы доказываем, что Tuta обеспечивает лучшую защиту электронной почты.
Оставайтесь в безопасности и счастливого шифрования.