Краткое содержание
В этом видео рассказывается об уязвимости в XZ, инструменте сжатия данных, широко используемом в Linux, и о том, как злоумышленник по имени Цзя Тан пытался внедрить бэкдор в OpenSSH через эту уязвимость. Подчеркивается важность открытого исходного кода, но также и риски, связанные с зависимостью от проектов, поддерживаемых отдельными волонтерами. История начинается с основания Фонда свободного программного обеспечения Ричардом Столлманом и эволюции Linux, а затем переходит к детальному объяснению попытки взлома, обнаруженной Андресом Фройндом. В заключение обсуждаются последствия для сообщества открытого исходного кода и вопросы о личности и мотивах Цзя Тана.
- Уязвимость в XZ, инструменте сжатия данных, широко используемом в Linux.
- Попытка внедрения бэкдора в OpenSSH злоумышленником по имени Цзя Тан.
- Важность открытого исходного кода и риски, связанные с зависимостью от проектов, поддерживаемых отдельными волонтерами.
- Обнаружение попытки взлома Андресом Фройндом.
- Последствия для сообщества открытого исходного кода и вопросы о личности и мотивах Цзя Тана.
The Free Software Foundation
В 1980-х годах Ричард Столлман, работавший в лаборатории искусственного интеллекта Массачусетского технологического института, столкнулся с проблемой, когда не смог получить исходный код принтера Xerox для устранения постоянных замятий бумаги. Это событие стало для него поворотным моментом, когда он осознал, что мир разработки программного обеспечения меняется, и компании стремятся закрыть свой код и запретить его распространение. В 1985 году Столлман уволился из Массачусетского технологического института и основал Фонд свободного программного обеспечения (Free Software Foundation), чтобы продвигать четыре основные свободы: свободу запуска программного обеспечения для любых целей, свободу изучения, изменения и распространения программного обеспечения. Для защиты этих свобод он создал Генеральную общественную лицензию (General Public License, GPL). Чтобы противостоять AT&T, он начал проект GNU (GNU is Not Unix), рекурсивный акроним, целью которого было создание Unix-подобной операционной системы с нуля.
Why is Linux so popular?
Проект GNU разработал множество ключевых компонентов, таких как компилятор GCC и оболочка Bash, но не хватало ядра. В 1991 году Линус Торвальдс, студент Университета Хельсинки, создал собственное ядро, которое позже лицензировал под GPL и назвал Linux. Объединение ядра Linux с компонентами GNU привело к созданию полноценной операционной системы. Открытый и бесплатный характер Linux способствовал развитию новой модели разработки программного обеспечения, где любой мог изучать, улучшать и исправлять код. Linux стал широко использоваться в различных областях, от настольных компьютеров до серверов и встроенных систем. Операционная система Android, используемая на более чем 3 миллиардах устройств, построена на базе Linux. Linux также используется в суперкомпьютерах, Пентагоне и на атомных подводных лодках США. Адаптируемость Linux позволяет настраивать его под конкретные нужды, что делает его популярным во многих областях.
The XZ Weakness
Широкое распространение Linux основано на предположении о безопасности кода. Считается, что благодаря большому количеству людей, просматривающих код, любые ошибки или уязвимости будут быстро обнаружены. Это известно как закон Линуса: "При достаточном количестве глаз все ошибки поверхностны". Однако открытое сообщество состоит из множества небольших проектов и библиотек, поддерживаемых часто одним человеком. Лассе Коллин из Финляндии с 2005 года работал над инструментом сжатия данных XZ, который стал настолько эффективным, что его используют почти во всех основных дистрибутивах Linux. На протяжении 20 лет Лассе в одиночку поддерживал XZ, не получая за это денег. В последнее время он столкнулся с растущим давлением и критикой из-за медленной работы над проектом, что привело к выгоранию.
End To End Encryption - SSH
В 1995 году в Хельсинкском технологическом университете произошла атака, в результате которой были перехвачены тысячи имен пользователей и паролей, передаваемых по сети в открытом виде. Тату Йлёнен, исследователь из университета, разработал протокол Secure Shell (SSH) для обеспечения безопасного удаленного доступа к машинам. SSH использует шифрование для защиты данных и аутентификацию для проверки подлинности пользователей. Процесс установления безопасного соединения включает в себя обмен секретными ключами с использованием математических алгоритмов, таких как RSA, чтобы предотвратить перехват данных злоумышленниками. OpenSSH является наиболее широко используемой реализацией SSH с открытым исходным кодом и играет важную роль в поддержании безопасности серверов в интернете.
How To Compress Data
Первоначальной целью Лассе Коллина при создании XZ было улучшение сжатия данных в Linux. Сжатие данных может быть полезным для уменьшения размера файлов, таких как код, изображения или текст, при этом важно, чтобы после сжатия и распаковки данные оставались идентичными. Один из методов сжатия - кодирование Хаффмана, который присваивает более коротким кодам часто встречающимся символам и более длинным кодам - редко встречающимся. Алгоритм LZ77 сканирует текст и создает словарь повторяющихся фрагментов, заменяя их кодами, указывающими на местоположение и длину фрагмента. Алгоритм LZMA (Lempel Ziv Markov chain algorithm) использует вероятности появления фрагментов данных для дальнейшего сжатия. XZ использует LZMA и обеспечивает высокую степень сжатия, что делает его популярным для распространения файлов и обновлений в Linux.
How The .XZ Hack Worked
Примерно в феврале 2024 года Цзя Тан начал активно участвовать в проекте XZ, предлагая новые функции и исправления. Он быстро завоевал доверие Рича, одного из сопровождающих Fedora, благодаря своей компетентности и отзывчивости. Цзя Тан планировал внедрить бэкдор в OpenSSH, чтобы получить контроль над скомпрометированными машинами. Его план состоял из трех этапов: троянский конь, зона "Златовласки" и кот-воришка. На первом этапе он внес небольшие изменения в код XZ, размещенный на GitHub, и добавил бинарные файлы, содержащие вредоносный код. Затем он использовал IFUNC resolver и dynamic audit hook для внедрения вредоносного кода в процесс аутентификации SSH. На третьем этапе он реализовал мини-криптографический обмен внутри SSH, чтобы убедиться, что только он может получить доступ к бэкдору, и удалил все следы своей деятельности.
A Bug In Jia’s Code
Цзя Тан стремился включить свой скомпрометированный XZ в основные выпуски Linux, такие как Fedora и RHEL. Ему удалось добавить его в предварительную версию Fedora, но в коде обнаружилась ошибка. Инструмент Valgrind выявил утечку памяти в коде Цзя Тана. Чтобы скрыть проблему, Цзя Тан придумал правдоподобное объяснение, заявив, что случайные данные, используемые для создания тестовых файлов, не воспроизводятся, и заменил их. Он также внес изменения в код IFUNC, чтобы создать впечатление, что он исправляет ошибку Valgrind. Рич, не подозревая о злом умысле, принял исправление Цзя Тана.
Henry Hacks Derek
Чтобы продемонстрировать атаку, Генри взломал веб-сайт Veritasium, используя бэкдор Цзя Тана. Он изменил содержимое веб-сайта, добавив свои идеи для видео, которые Дерек ранее отклонил. Дерек был удивлен и обеспокоен тем, что это стало возможным на сервере Linux. Генри объяснил, что он открыл порт на сервере Veritasium и скопировал свои файлы, получив root-доступ. Он подчеркнул, что в реальной атаке злоумышленники действовали бы более скрытно, чтобы избежать обнаружения.
The Back Door Is Exposed
Андрес Фройнд, программист из Microsoft, заметил замедление работы при подключении к серверу в нестабильной версии Debian. Он провел расследование и обнаружил, что проблема связана с обновлением XZ. Он заметил, что бинарные тестовые файлы никогда не использовались в тестах. В конце концов, Андрес понял, что это не просто ошибка, а бэкдор. Он сообщил об этом в команду безопасности Debian и опубликовал подробный отчет в списке рассылки по безопасности. Red Hat быстро откатила Fedora и посоветовала всем пользователям вернуться к предыдущей версии.
Who is Jia Tan?
Личность Цзя Тана остается загадкой. Предполагается, что за ним стоит группа людей, работавших над этим проектом около двух с половиной лет. Учетные записи, оказывавшие давление на Лассе, использовали бесплатные адреса электронной почты и не имели следов активности за пределами тем XZ. Вероятно, это были подставные учетные записи, созданные для оказания давления в рамках многоэтапной кампании социальной инженерии. Некоторые эксперты считают, что за этим стоит государство, возможно, Китай или Россия. Цзя Тан исчез, как только эксплойт стал известен.
Open Vs Closed Source
Некоторые эксперты утверждают, что инцидент с XZ выявил фундаментальный недостаток в модели открытого исходного кода, но другие с этим не согласны. Они утверждают, что закрытое программное обеспечение не было бы лучше в данной ситуации. Вполне возможно, что государственные шпионы работают в крупных компаниях, внедряя бэкдоры. В случае с открытым исходным кодом, член сообщества случайно обнаружил бэкдор. Инцидент с XZ подчеркивает важность поддержки людей, работающих над проектами с открытым исходным кодом.

