Команда Linux-дистрибутива OpenMandriva обвинила бывшего участника проекта в попытке внутреннего саботажа. Разработчик с сохранившимися административными правами удалил часть репозиториев на GitHub и отправил в ветку Cooker пустой пакет, объявлявший устаревшими компоненты рабочих окружений GNOME и COSMIC.
Опасный пакет мог заставить систему управления программами удалить установленные компоненты рабочего стола во время обновления. Инцидент обнаружили до появления подтверждённых сообщений о повреждении пользовательских систем. Основной риск относился к Cooker — экспериментальной ветке, где разработчики собирают и проверяют новые пакеты.
Обвинённый разработчик Давиде Беатричи отрицает намерение навредить дистрибутиву. При этом он подтвердил, что осознанно удалил репозитории GNOME и COSMIC, соответствующие пакеты из Cooker и опубликовал пакет с инструкциями Obsoletes. Спор сторон поэтому касается в первую очередь мотива и допустимости действий, а не самого факта удаления.
OpenMandriva — независимый дистрибутив, созданный сообществом после прекращения развития Mandriva Linux. Проект поддерживает стабильную редакцию Rock, непрерывно обновляемую ROME и экспериментальную ветку Cooker. Большинство компонентов собирается с помощью LLVM/Clang вместо более распространённого GCC.
Беатричи присоединился к проекту несколько лет назад. Он известен участием в разработке голосового мессенджера Mumble и предложил перенести либо зеркалировать часть инфраструктуры OpenMandriva на собственный сервер OneDev. В частном экземпляре системы оказались копии нескольких десятков репозиториев.
Часть команды изначально сомневалась в такой схеме. Важная инфраструктура сообщества фактически зависела от сервера, который контролировал один человек. Проект всё же согласился на зеркалирование из-за репутации разработчика и доверия к нему.
Конфликт начался после жалоб на агрессивное поведение другого участника. OpenMandriva утверждает, что несколько разработчиков покинули проект из-за личных сообщений и споров в рабочих каналах. После очередного инцидента пользователя исключили из Matrix-чата OpenMandriva-Cooker, сохранив возможность участвовать в разработке другими способами.
Беатричи и ещё один участник ушли в знак протеста. Мейнтейнер OpenMandriva под псевдонимом AngryPenguin решил отключить зеркалирование пакетов на частный OneDev-сервер. Административные права бывшего участника в инфраструктуре проекта к этому моменту всё ещё действовали.
Ранним утром 8 июля эти полномочия использовали для удаления репозиториев и изменения пакетов. OpenMandriva расценила действия как умышленную попытку повредить дистрибутив.
Команда сообщила об удалении части репозиториев, над которыми участники работали много лет. AngryPenguin отдельно отметил, что некоторым затронутым материалам было почти десять лет. Точное число удалённых проектов OpenMandriva не раскрыла.
Разработчик подтвердил, что удалил с GitHub репозитории, относящиеся к GNOME и COSMIC, а также соответствующие пакеты из Cooker. Он назвал действия аккуратными и заявил, что не ставил целью повредить системы пользователей.
GNOME — одно из крупнейших рабочих окружений Linux. Оно включает оболочку, настройки, файловый менеджер, библиотеки и набор системных приложений. COSMIC разрабатывает компания System76 как отдельное современное окружение на Rust. OpenMandriva предлагает оба варианта наряду с KDE Plasma и LXQt.
Удаление репозиториев с GitHub нарушило привычную точку совместной разработки. Исчезли доступные через организацию исходники, ветки и связанные настройки проектов. GitHub позволяет владельцам организации восстановить некоторые удалённые репозитории, обычно в течение ограниченного периода.
Сами исходники при этом не обязательно были потеряны навсегда. Git является распределённой системой: обычный полный клон содержит историю репозитория, а зеркальные копии можно вернуть на новый сервер. OpenMandriva также располагала резервами и копиями, из которых начала восстановление.
Восстановление всё равно требует времени. Репозиторий на площадке — это больше, чем каталог исходного кода. Проекту приходится проверять ветки, права доступа, сборочные сценарии, связи с автоматизацией и состояние пакетов, которые могли быть изменены одновременно.
Удаление GitHub-репозиториев ударило по разработке. Изменение пакетов могло затронуть уже установленные системы.
Беатричи опубликовал в Cooker практически пустой RPM-пакет с метаданными, которые объявляли пакеты GNOME и COSMIC устаревшими. Поле Obsoletes сообщает системе управления пакетами, что новый пакет заменяет перечисленные старые. Во время обновления RPM может удалить все установленные пакеты, совпадающие с этим списком, поскольку считает новый пакет их преемником.
Пустой пакет поэтому не обязан содержать вредоносный исполняемый файл. Достаточно правильно сформировать служебные поля. DNF увидит его как обновление, рассчитает транзакцию и предложит либо начнёт удаление компонентов, помеченных через Obsoletes.
Для окружения рабочего стола последствия могут быть тяжёлыми. Удаление оболочки, сеансов, библиотек и метапакетов способно оставить пользователя без графического входа, нарушить зависимости приложений или заставить систему заменить окружение после очередного обновления.
OpenMandriva заявила, что пакет мог повредить компьютеры с GNOME и COSMIC. Подтверждённых случаев, когда эта транзакция действительно дошла до пользовательской системы и удалила рабочее окружение, команда не опубликовала.
Опасное изменение появилось в Cooker. Эта ветка предназначена для активной разработки и по определению может ломаться. Документация OpenMandriva прямо предупреждает, что Cooker рассчитана на опытных участников и не подходит для обычной повседневной работы.
Пакеты OpenMandriva движутся по цепочке:
Cooker → ROME → стабильный выпуск
Cooker служит первым этапом. После проверки изменения переходят в непрерывно обновляемую ROME, а стабильная Rock ориентирована на рабочие станции, серверы и пользователей, которым важна предсказуемость.
Такая схема снизила возможный ущерб. Изменение появилось в экспериментальном канале и не оказалось автоматически во всех выпусках дистрибутива.
Данных о попадании пакета в ROME или Rock нет. Массового предупреждения для обычных пользователей OpenMandriva тоже не выпускала. Это позволяет считать прямой риск ограниченным Cooker, но полный технический отчёт с перечнем затронутых сборок пока не опубликован.
Беатричи заявил через The Lunduke Journal, что произошедшее не являлось саботажем. Он объяснил удаление спором о направлении проекта и действиями других участников, которые убрали файл .onedev-buildspec.yml из нескольких репозиториев без согласования. Этот файл описывал сборочные задания для OneDev.
Разработчик также упомянул разногласия вокруг рабочих окружений. Часть команды, по его версии, уделяла основное внимание KDE Plasma и LXQt, а направления GNOME и COSMIC оставались на периферии.
Его формулировка подтверждает сознательный характер операций. Репозитории и пакеты удалялись намеренно, а пакет Obsoletes был подготовлен специально. Беатричи считает это удалением собственной работы и компонентов, которые проект больше не хотел поддерживать. OpenMandriva рассматривает те же действия как использование доверенных прав для нанесения ущерба общей инфраструктуре.
OpenMandriva начала возвращать удалённые репозитории и исправлять пакеты сразу после обнаружения инцидента. Команда провела полный аудит системы и заявила, что не нашла дополнительных нарушений за пределами удалённых пакетов.
Точная длительность восстановления и полный перечень возвращённых репозиториев не раскрыты. На GitHub снова доступны многочисленные проекты GNOME и COSMIC, включая gnome-shell, cosmic-settings, cosmic-screenshot и метапакет task-cosmic.
Проект назвал действия бывшего участника возможным уголовным нарушением, но решил не обращаться в правоохранительные органы. Причины отказа от юридического разбирательства подробно не объяснялись.
Вопросы и ответы
Что произошло с OpenMandriva?
Бывший участник проекта с сохранившимися административными правами удалил репозитории GNOME и COSMIC на GitHub, убрал связанные пакеты из Cooker и опубликовал пакет, объявлявший эти компоненты устаревшими.
Действия разработчика подтверждены?
Да. Давиде Беатричи отрицает намерение саботировать проект, но признаёт, что сознательно удалил репозитории и пакеты и отправил метапакет с Obsoletes.
Что такое Cooker?
Cooker — экспериментальная ветка OpenMandriva для разработки и первичной проверки пакетов. Она может ломаться и не предназначена для обычных пользователей.
Что делает поле Obsoletes в RPM?
Оно сообщает менеджеру пакетов, что устанавливаемый пакет заменяет другие. Во время обновления RPM или DNF может удалить перечисленные компоненты как устаревшие.
Пакет содержал вредоносную программу?
Опубликованные сведения указывают на пустой пакет с опасными метаданными. Исполняемый вирус ему не требовался: ущерб мог возникнуть из-за запланированного удаления пакетов GNOME и COSMIC.
Были ли повреждены компьютеры пользователей?
OpenMandriva заявила о потенциальном риске, но не сообщила о подтверждённых случаях повреждения пользовательских систем.
Затронуты ли стабильные выпуски?
Доказательств попадания изменения в Rock или ROME нет. Опасный пакет находился в Cooker.
Исходный код потерян?
Команда начала восстановление из копий и зеркал. Git хранит полную историю в клонах, поэтому удаление центрального репозитория обычно не уничтожает все данные.
Почему бывший участник всё ещё имел доступ?
OpenMandriva не отозвала его административные права сразу после ухода. Проект доверял известному разработчику и ранее разрешил ему управлять зеркалированием инфраструктуры.
Будет ли судебное разбирательство?
Команда заявила, что могла обратиться в правоохранительные органы, но решила этого не делать.
Есть новость? Станьте автором.
Мы сотрудничаем с независимыми исследователями и специалистами по кибербезопасности. Отправьте нам новость или предложите статью на рассмотрение редакции.