Инциденты и уязвимости
Бэкдор XZ Utils (CVE-2024-3094) — когда целью было само доверие
В 2024 году в xz/liblzma нашли бэкдор — внедрённый тем, кто годами зарабатывал доверие мейнтейнеров, и пойманный прямо перед стабильным релизом из-за «что-то стало медленно» одного инженера. Как целью было доверие, и уроки цепочки поставок.
Возвращаемся к знаковому событию ради уроков, которые всё ещё применимы к вашей эксплуатации.
Что произошло
Библиотека была недосопровождаема, долго держалась на одном человеке. Другой человек стабильно вносил вклад, наращивал доверие и в конце концов получил статус со-мейнтейнера. Затем, вплетённый в обычные обновления, он поэтапно внедрил механизм, позволяющий несанкционированный внешний доступ при определённых условиях.
Целью была не дыра в коде, а предположение, что «легитимное обновление доверенного человека» безопасно.
Целью были люди и доверие
Файрволы и патчи этого не останавливают. Мейнтейнеры OSS работают на доброй воле и волонтёрском времени, и эти перегрузка и изоляция стали точкой входа. Это показало, что здоровье самой экосистемы — вопрос безопасности.
Как это поймали — не проигнорировав «что-то стало медленно»
Перелом наступил, когда инженер посреди не связанной с этим работы заметил, что путь входа «явно медленнее, чем раньше», а цифры бенчмарка выглядели странно — и докопался до корня вместо того, чтобы проигнорировать. В результате мир был спасён до того, как это широко распространилось в стабильных релизах.
«Что-то ощущается не так» — лучший детектор. Здесь он буквально спас мир.
Хронология
годами ранее
Злоумышленник стабильно вносит вклад, выстраивая доверие мейнтейнеров.начало 2024
Бэкдор поэтапно внедряется в легитимные обновления.2024-03
Инженер преследует аномалию «медленно»; это поймано и раскрыто прямо перед стабильным релизом.
Уроки, которые всё ещё применимы
Минимизируйте зависимости
Меньше библиотек — меньше сторон, которым нужно доверять. Не добавляйте «потому что удобно».
Закрепляйте версии, следите за изменениями
Lock-файлы ловят неожиданные обновления; смотрите на содержимое важных изменений зависимостей (кто, что).
Улучшайте воспроизводимость сборки
Чем больше один и тот же ввод даёт один и тот же артефакт, тем легче заметить тихое вмешательство.
Никогда не игнорируйте аномалию
«Ощущается медленно / не так» — лучший детектор; здесь он спас мир. Стройте культуру преследования малых аномалий до конца.
Уважайте и поддерживайте мейнтейнеров
Здоровье OSS, от которого вы зависите, в конечном счёте — ваша собственная безопасность. Перегрузка и изоляция — точка входа.
Читать дальше
- Глоссарий: Что такое CVE · Что такое RCE
- Инцидент: Codecov — взломанный доверенный инструмент CI
- Защита: Машинно мониторьте свои зависимости
FAQ
QЧем случай XZ Utils был необычен?
Целью были люди и доверие, а не баг в коде. Злоумышленник годами становился доверенным мейнтейнером OSS и протащил бэкдор как легитимное обновление — это трудно остановить одними техническими средствами.
QКак это обнаружили?
Инженер посреди не связанной с этим работы заметил, что путь входа «явно медленнее, чем раньше», а цифры бенчмарка выглядели странно — и докопался до корня вместо того, чтобы проигнорировать. В результате это поймали прямо перед широким распространением в стабильных релизах.
QЧто может сделать инди-разработчик?
Минимизировать зависимости, следить за происхождением и содержимым обновлений, закреплять версии, чтобы неожиданные изменения были обнаружимы, улучшать воспроизводимость сборки и никогда не игнорировать ощущение «что-то не так».