Технический разбор бэкдора в XZ Utils (CVE-2024-3094), охватывающий злоупотребление доверием в цепочке поставок, вредоносные артефакты релизов, инъекцию на этапе сборки, злоупотребление зависимостью sshd, инженерию обнаружения и уроки для Red Team.
CASE-002 реконструирует бэкдор в XZ Utils / liblzma, раскрытый 29 марта 2024 года как CVE-2024-3094.
Отчёт прослеживает операцию от долгосрочного доверия к мейнтейнеру и полномочий на выпуск релизов, через несоответствие между проверенным исходным кодом в Git и распространяемыми релизными tarball-архивами, к извлечению полезной нагрузки на этапе сборки, модификации liblzma, пути транзитивной зависимости в sshd, злоупотреблению GNU IFUNC / динамическим компоновщиком и триггеру предварительной аутентификации, доступному только оператору.
В центре внимания не просто что делал бэкдор, а как множество легитимных доверительных отношений было превращено в путь выполнения.
Главный урок: проверка исходного кода — это не верификация релиза, а подписанный артефакт вышестоящего проекта заслуживает доверия ровно настолько, насколько надёжны человек и процесс сборки, его создавшие.
Проверка целостности: report/SHA256SUMS.txt
Доверие к контрибьютору
↓
Мейнтейнер / полномочия на выпуск релизов
↓
Непрозрачные тестовые артефакты
↓
Логика сборки, специфичная для tarball-архива
↓
Извлечение вредоносного объекта на этапе сборки
↓
Полезная нагрузка скомпонована в liblzma
↓
Сборка доверенного пакета дистрибутива
↓
Транзитивная загрузка в sshd
↓
IFUNC / перенаправление символов на этапе загрузчика
↓
Криптографический триггер SSH, доступный только оператору
↓
Обход предварительной аутентификации / возможность выполнения команд
| Вывод | Почему это важно |
|---|---|
| Доверие к мейнтейнеру было частью цепочки эксплуатации | Атакующий действовал изнутри легитимной роли в проекте, а не просто украл учётную запись пакета на финальном этапе. |
| Исходный код в Git и релизные tarball-архивы не были эквивалентны с точки зрения безопасности | Логика сборки, генерируемая только в релизе, создавала путь, который обычная проверка Git не выявляла. |
| Непрозрачные тестовые данные стали исполняемым входом сборки | Специально созданные фикстуры .xz / .lzma несли скрытые этапы, которые восстанавливались во время компиляции. |
| Полезная нагрузка опиралась на путь транзитивной зависимости | Сам OpenSSH не был бэкдорнут; liblzma достигала отдельных сборок sshd косвенно через интеграцию с systemd, специфичную для дистрибутива. |
| Активация во время выполнения была намеренно узкой | Ограничения по платформе, сборке, процессу, окружению и криптографии снижали случайное раскрытие и затрудняли анализ. |
| Обнаружение произошло в результате исследования аномалий | Аномалии CPU, задержек и Valgrind выявили компрометацию цепочки поставок, которую статические сигналы доверия принимали как допустимую. |
sshd → libsystemd → liblzmaЭто тематическое исследование намеренно выходит за рамки простого изложения инцидента.
Отчёт отображает шесть преобразований доверия:
контрибьютор → мейнтейнер → релизный артефакт → пакет дистрибутива → библиотека времени выполнения → путь управления SSH
В каждой точке преобразования он определяет рычаг воздействия атакующего и точку обороны.
Анализ превращает инцидент в проверяемые гипотезы вокруг:
Раздел эмуляции сосредоточен на безопасном тестировании путей доверия, например на безвредных несоответствиях tarball-архива и исходного кода и проверке путей зависимостей, без необходимости в работающем бэкдоре аутентификации SSH.
PDF генерируется из HTML/CSS под контролем версий с помощью .github/workflows/publish-report.yml.
Рабочий процесс отдельно рендерит тело и специальную обложку, объединяет их, вычисляет SHA-256, коммитит сгенерированный PDF и публикует артефакт релиза. Это поддерживает соответствие самой публикации центральному уроку кейса: путь от исходного кода к артефакту должен быть наблюдаемым и воспроизводимым.
Первичные доказательства имеют приоритет над ретроспективными комментариями. Отчёт разделяет подтверждённое техническое поведение, записи проекта, подверженность дистрибутивов, последующий реверс-инжиниринг и аналитические выводы.
.
├── .github/workflows/
│ └── publish-report.yml
├── assets/
│ └── cover-mobile-safe.svg
├── docs/
│ ├── METHODOLOGY.md
│ └── REFERENCES.md
├── report/
│ ├── cover.html
│ ├── source.html
│ ├── XZ_Utils_Backdoor_Case_Study_Michel-DV.pdf
│ └── SHA256SUMS.txt
├── CHANGELOG.md
├── CITATION.cff
├── DISCLAIMER.md
├── RELEASE_NOTES.md
├── LICENSE
└── README.md
Если это тематическое исследование полезно в исследованиях, обучении, курсовых работах или внутренней документации, пожалуйста, ссылайтесь на репозиторий или используйте CITATION.cff.
Автор: @Michel-DV
Серия: Michel-DV Threat Case Studies — CASE-002
Релиз: v1.0.0
Год: 2026
© 2026 Michel-DV.
Эта публикация лицензирована под Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0).
Это независимое техническое исследование, основанное на общедоступной информации. Оно не связано с Tukaani Project, Red Hat, Debian, OpenSSF, OpenSSH, systemd, Kaspersky или другими упомянутыми организациями и не одобрено ими.
Инцидент с XZ не был единичным вредоносным патчем. Это была цепочка доверенных передач, которую никто не проверил независимо.