Як Debian вдалося обійти бекдор у XZ? Короткий аналіз справи 

бекдор XZ

бекдор XZ

У попередні дні ми ділилися тут, у блозі, новинами про випадок бекдор, який було виявлено в утиліті XZ, який використовується у великій кількості дистрибутивів Linux і тому впливає на їх усі. Для багатьох, у тому числі для мене, у цій справі цікаво те, як було підготовлено включення бекдору та тендеру, або обставини сприяли впровадженню коду, але його не помітили.

В допис у блозі Евана Боеса (програміст і хакер), поділився невеликим хронологічним аналізом бекдор-кейсу в XZ. Про це йдеться в публікації Розробник Jia Tan відповідав за впровадження бекдору в упаковці XZ, починаючи з Цзя Тан отримав статус супроводжуючого у 2022 році та почав випускати версії починаючи з 5.4.2 проекту XZ. Окрім роботи над XZ, Цзя Тан Він також зробив внесок у пакети xz-java та xz-embedded, і був визнаний супроводжувачем проекту XZ Embedded, який використовується в ядрі Linux.

Окрім Цзя Тана, участь ще двох користувачів, Джиґара Кумара та Ганса Янсена, хто багато хто припускає, що мабуть, вони могли бути віртуальними персонажами. Був залучений Джигар Кумар у просуванні перших патчів Jia Tan на XZ тиск на тодішнього супроводжуючого Лассе Колліна прийняти корисні зміни та реалізувати підтримку рядкових фільтрів у квітні 2022 року.

У червні 2022 року Лассе Коллін відмовився від ролі супроводжувача Цзя Тану, визнаючи проблеми з вигоранням і психічне здоров’я. Після цих подій Джигар Кумар більше не з'являвся в списку розсилки проекту.

З новим статусом супроводжуючого, Цзя Тан почав активно вносити зміни в проект XZ і, за статистикою, посів друге місце серед розробників за кількістю змін за два роки.

У березні 2023 року Лассе Коллін замінив особу, відповідальну за тестування пакета XZ у службі oss-fuzz, на Цзя Тана, а в червні були реалізовані зміни до складу XZ, включаючи підтримку механізму IFUNC в liblzma, який потім використовувався для організації перехоплення функцій у бекдорі. Пропозиція щодо цієї зміни надійшла від Ханса Янсена, чий обліковий запис було створено безпосередньо перед надсиланням запиту на вилучення, пов’язаного з цими змінами.

En У липні 2023 року Цзя Тан попросив розробників oss-fuzz вимкнути перевірку ifunc через його несумісність із «-fsanitize=address". У лютому 2024 року посилання на сайт проекту XZ було змінено на oss-fuzz і tukaani.org, переходячи з основного домену на субдомен. Цей останній субдомен розміщувався на сторінках GitHub і особисто контролювався Цзя Таном.

23 лютого файли для тестування декодера, включно з файлами з бекдором, були опубліковані на сайті, але вони з’явилися у файлі .gitignore.

17 березня Ганс Янсен, раніше брав участь у виправленнях із підтримкою IFUNC, зареєстрований як учасник проекту Debian. 25 березня, отримав запит на оновлення версії пакета xz-utils у репозиторії з Debian. Варто зазначити, що подібні запити надходили від розробників Fedora та Ubuntu (хоча в Ubuntu зміна була відхилена через зависання сховища).

Кілька користувачів приєдналися до запитів на оновлення XZ, стверджуючи, що нова версія виправила помилки, виявлені під час налагодження у valgrind. Ці проблеми виникли через неправильне визначення макета стека в бекдор-контролері, намагаючись вирішити їх у випуску XZ 5.6.1.

Про це, Лассе Коллін зробив заяву підтверджуючи, що файли, які містять бекдор-версії, були створені та підписані Цзя Таном Крім того, він оголосив про видалення субдомену xz.tukaani.org, вказуючи, що сайт xz повернеться на головний сервер tukaani.org. Він також зазначив, що його акаунт на GitHub заблоковано. Це важливо підкреслити Лассе Коллін контролює лише веб-сайт tukaani.org і репозиторії git.tukaani.org. З іншого боку, Цзя Тан лише контролював проект на GitHub і хості xz.tukaani.org, але не мав доступу до сервера tukaani.org.

Якщо вам цікаво дізнатися більше про це, ви можете переглянути подробиці за адресою за наступним посиланням.