Security Week 2414: последствия взлома xz-utils

Security Week 2414: последствия взлома xz-utils
История со взломом набора утилит xz-utils, несомненно, войдет в категорию легендарных событий в сфере информационной безопасности. Эта тщательно спланированная атака на цепочку поставок была в шаге от полного успеха. Могла быть реализована ситуация, когда десятки и сотни тысяч систем на базе Linux имеют в своем коде скрытый бэкдор, задействуемый организаторами атаки с помощью известного им приватного ключа. Поражает как сложность самой атаки, так и неординарная история обнаружения бэкдора. Последнее все же заставляет надеяться, что сообщество разработчиков открытого ПО найдет средства противодействия подобным атакам в будущем.


Таймлайн атаки достаточно подробно описан на Хабре здесь (еще одна обновляемая статья — тут ), подверженные дистрибутивы приведены здесь , в этой статье мы постараемся выделить самые важные моменты и попробуем представить, как это повлияет на разработку ПО с открытым исходным кодом.

Максимально кратко история взлома xz-utils выглядит следующим образом. Xz-utils — это набор утилит, состоящий из (де)архиватора xz и библиотеки liblzma. Xz-utils широко используются в популярных дистрибутивах на базе Linux, включая Debian и Red Hat. Начиная с 2022 года к мейнтейнеру xz-utils втирался в доверие пользователь по имени Цзя Тан, который в итоге получил контроль над репозиторием. Это привело к релизу двух версий (5.6.0 и 5.6.1) со встроенным бэкдором. Бэкдор находился в коде, отвечающем за компрессию и декомпрессию данных по алгоритму lzma. Этот код задействуется множеством программ и утилит в составе дистрибутивов Linux, в том числе к нему обращается сервер OpenSSH. В результате создается ситуация, когда неавторизованный пользователь подключается по протоколу SSH, передает специфический ключ, который и активирует бэкдор. Атакующий через выполнение произвольного кода получает полный контроль над уязвимой системой.

Прежде всего стоит отметить, что эта атака была тщательно спланирована и заняла много времени. Цзя Тан прислал первый патч в репозиторий XZ-utils в апреле 2022 года. Впоследствии в истории общения с «настоящим» мейнтейнером пакета Лассе Колином были обнаружены виртуалы, которые высказывали недовольство недостаточно активной разработкой, давили на загруженного работой человека. Внедрение вредоносного кода происходило постепенно, его первые элементы были присланы в виде пул-реквеста от анонима в июне 2023 года. Финальные элементы были добавлены в феврале 2024 года, тогда же Цзя Тан сообщил о смене сайта проекта xz-utils. В марте началась агитация разработчиков дистрибутивов поскорее включить в их состав новую версию программного пакета. В агитации участвовали вроде бы не связанные с Таном виртуалы. Для каждого из них создавалась какая-никакая репутация в сообществе в виде вклада в код разнообразных проектов с открытыми исходниками.

Атакующие прицельно атаковали проекты, которые можно назвать инфраструктурными. К xz-utils, точнее к библиотеке liblzma, обращается большое количество других программ в составе дистрибутивов на базе Linux. Ранее, еще в 2021 году, тот же Цзя Тан, возможно, пытался атаковать схожий по потенциальному ущербу проект libarchive.

Бэкдор пытались протащить максимально скрытно. Весь код, необходимый для его работы, присутствовал только в архивах исходников, которые забираются мейнтейнерами дистрибутивов. Была сделана попытка скрыть вредоносный довесок от различных способов тестирования, как автоматического, так и ручного, в том числе путем намеренного добавления опечатки в исходники.

Собственно, протащить почти удалось: вредоносный пакет попал в бета-версию дистрибутива Fedora 40 , Kali Linux и присутствовал в тестовой ветке Debian, откуда позднее мог распространиться по большому количеству родственных дистрибутивов. Несмотря на наличие вредоносного кода в Fedora 40, бэкдор там, судя по всему, не работал. Обнаружение проблемы само по себе в одночасье стало легендой. Сотрудник Microsoft Андрес Фройнд обнаружил бэкдор, проводя тестирование производительности . В ходе тестирования было обнаружено довольно длительное (полсекунды) подвисание процесса liblzma, к которому обращался демон sshd.


Дизайн бэкдора в общих чертах описывается здесь и здесь . На самом деле, и несмотря на раннее (чуть больше месяца, но это считая со времени публикации вредоносного кода, а не его внедрения в дистрибутивы) обнаружение бэкдора, масштаб атаки до сих пор до конца не определен. В обсуждениях кода допускается, что у него может быть и иная функциональность, не связанная с SSH. Не ясно также, были ли атакованы системы, получившие обновления раньше всех и доступные по SSH. Среди них могут быть и серверы либо персональные системы разработчиков, у которых максимально свежий код устанавливается с большей вероятностью.

Подведем итог: это была сложная, долговременная атака на проект с открытым исходным кодом, которая в случае успеха могла привести к массовой компрометации систем на базе Linux по всему миру. Кто за ней стоит — неизвестно (и скорее всего, мы не узнаем). Активность Цзя Тана, достаточно хорошо задокументированную, можно детально проанализировать. Вряд ли это был взлом аккаунта добросовестного разработчика, хотя анализ коммитов этого пользователя, приведенный на скриншоте в начале текста, показывает, что большая часть вредоносного кода была внедрена за пределами стандартных для него часов работы.

Атака, безусловно, повлияет на сообщество разработчиков открытого ПО, в котором сотрудничество с незнакомцами в Интернете (доказавшими, впрочем, свою квалификацию и полезность) является нормой. Последствием внедрения бэкдора в XZ-utils станет усиление подозрительности по отношению к новичкам, да и вообще внутри сообщества. Для экосистемы, построенной на открытости, это плохой знак. Хороший признак — что бэкдор все же был обнаружен достаточно оперативно, хотя его и пытались скрыть. Да, это произошло при довольно случайном, удачном стечении обстоятельств. Но они все же произошли, а значит, разработка кода с открытыми исходниками, скорее всего, сможет адаптироваться и к такой относительно новой реальности.


Что еще произошло:

Опубликованы сразу три новые статьи от экспертов «Лаборатории Касперского». Исследование зараженного текстового редактора, распространяемое под видом Notepad++ для пользователей в Китае. Подробный анализ троянской программы DinodasRAT для Linux. Описание нетривиальной и долгоживущей уязвимости в Windows, позволяющей получить максимальные привилегии за счет подмены системного носителя данных.

Отличную историю про «галлюцинации ИИ» рассказывает The Register. Исследователь безопасности Бар Ланьядо заметил, что если использовать популярные ИИ-ассистенты для разработки ПО, то они регулярно предлагают импортировать несуществующие программные пакеты. Один из таких «придуманных» пакетов назывался huggingface-cli, и Бар создал пакет с таким именем в репозитории Python Package Index. Через некоторое время пакет обнаружился в зависимостях в корпоративном коде компании Alibaba. Также на прошлой неделе сообщалось о, возможно, первой масштабной атаке на инфраструктуру ИИ: эксплуатируется уязвимость во фреймворке Ray, на основе которого построены ИИ-модели в различных организациях.

Команда исследователей Google опубликовала отчет об эволюции уязвимостей нулевого дня за 2023 год. Всего таких уязвимостей было зафиксировано 97, что больше, чем в 2022 году (62), но меньше рекордного показателя 2021 года (106). Одним из важных выводов отчета является перенос внимания атакующих на сторонние библиотеки и компоненты. Это объясняется усилиями вендоров по защите собственного ПО, что делает привлекательными атаки на плохо контролируемый код, поставляемый третьей стороной. Это интересное дополнение к главной истории прошлой недели с xz-utils.

Исследователи из Швейцарии успешно адаптировали аппаратную атаку Rowhammer для процессоров AMD Zen 2 и Zen 3. В том числе в этой работе впервые продемонстрирована атака на модули памяти стандарта DDR5.

Издание Ars Technica пишет о случае атаки на учетную запись Apple ID, в которой применен метод MFA Fatigue. Как следует из названия, при такой атаке пользователя «бомбят» запросами на сброс пароля пользователя в учетной записи, которые массово приходят на привязанный к учетке iPhone. Расчет сделан на то, что жертва согласится на сброс пароля либо по ошибке, либо просто «чтобы отвязались». Проблема явно на стороне Apple, которая не ввела ограничение на количество отправляемых запросов.
xz-utils CVE-2024-3094
Alt text

Домашний Wi-Fi – ваша крепость или картонный домик?

Узнайте, как построить неприступную стену