Разработчики Linux-дистрибутива OpenMandriva столкнулись с классическим кризисом доверия в Open Source. Бывший контрибьютор с админскими правами попытался «положить» проект после конфликта в сообществе.

Инцидент затронул репозитории на GitHub и поставил под удар пользователей десктопных окружений GNOME и Cosmic. Как же один обиженный разработчик устроил инфраструктуре проекта внеплановый стресс-тест?

Слишком много доверия

В центре скандала оказался Давиде Беатричи (Davide Beatrici), разработчик, известный по работе над популярным голосовым мессенджером Mumble. Присоединившись к OpenMandriva, он предложил перенести инфраструктуру проекта с GitHub на свой личный сервер с развернутым OneDev.

Идея передать контроль над десятками репозиториев в одни руки предсказуемо вызывала опасения у некоторых мейнтейнеров. Однако авторитет Беатричи перевесил — в проекте решили, что от столь известной фигуры подвоха ждать не стоит. Как оказалось, зря.

Токсичность, изгнание и демарш

Вместе с Беатричи в проект пришли двое его коллег. Один из них, по заявлениям команды, оказался крайне токсичным. Он регулярно оскорблял пользователей и участников разработки, преимущественно в личных сообщениях. Из‑за такой атмосферы проект даже покинуло несколько контрибьюторов.

Когда терпение мейнтейнеров лопнуло, дебошира выставили из Matrix-чата разработчиков. Полного бана не последовало, но и этих действий оказалось достаточно, чтобы запустить цепную реакцию: Беатричи и второй его коллега в знак протеста покинули проект.

Месть с правами админа

Оставшись без Беатричи, команда логично решила, что зеркалировать код на его личный сервер больше нет смысла, и начала разрывать связи с инфраструктурой OneDev. Это привело экс-контрибьютора в ярость.

Воспользовавшись тем, что у него все еще оставались административные права, Беатричи перешел к активным действиям:

  • снес часть GitHub-репозиториев OpenMandriva, уничтожив историю разработки за несколько лет;

  • запушил пустой пакет в Cooker (роллинг-ветку дистрибутива).

Пакет был настроен хитро. Он объявлял устаревшими абсолютно все пакеты окружений GNOME и Cosmic. Если бы пользователи обновили систему, их рабочие столы попросту удалились бы вместе с зависимостями.

Бесплатное S3-хранилище на 30 дней

Для всех, кто ранее не использовал услугу в Selectel.

Оставить заявку →

Масштаб ущерба и реакция команды

К счастью, репозиторий Cooker — это нестабильный полигон для разработчиков, а не релизная версия. Потенциально фатальное обновление затронуло только любителей bleeding-edge сборок, а не рядовых пользователей стабильного дистрибутива.

Сейчас OpenMandriva восстанавливает удаленные репозитории и чинит сломанные пакеты. Полный аудит систем показал, что других закладок или повреждений, к счастью, нет. Разработчики всерьез обсуждали подачу судебного иска — действия тянут на уголовное преступление. В итоге решили не тратить ресурсы.

Позиция обвиняемого

«Это ни в коем случае не саботаж. У меня не было цели навредить дистрибутиву, о котором я заботился»,

— заявил  Беатричи в комментарии изданию The Lunduke Journal.

При этом он прямо признал факт удаления репозиториев Cosmic и GNOME, попытавшись оправдать это тем, что кто-то «лез в его работу». Журналисты The Register попытались связаться с разработчиком для разъяснений, но ответа не получили.

Мораль этой истории стара как мир, но о ней постоянно забывают. Любому проекту Open Source нужны рабочие руки. Однако далеко не каждому контрибьютору — даже самому именитому — стоит выдавать права, способные привести к масштабной операции по восстановлению бэкапов. Принцип наименьших привилегий должен работать везде.

Комментарий эксперта

Александр Гришин

Руководитель по развитию продуктов хранения данных

Этот случай — классический пример уязвимости в самих процессах команды. Может случиться, что проекты выстраивают потрясающую отказоустойчивую архитектуру на уровне серверов, но совершенно забывают про управление доступом и «человеческий фактор».

Переезд критической инфраструктуры на личный сервер одного, пусть и звездного, разработчика изначально создал для OpenMandriva идеальную единую точку отказа. Главная ошибка мейнтейнеров — даже не в излишнем доверии на старте, а в сломанном процессе оффбординга.

Когда человек с неограниченными правами со скандалом покидает проект, нужное первым делом не выяснять отношения, а превентивно отзывать доступы ко всем репозиториям и системам управления. Промедление с нажатием кнопки Revoke Access может обойтись в годы работы.

Для любого серьезного проекта эта история должна стать напоминанием трех базовых правил. 

Во-первых, нельзя забывать о юридической стороне вопроса. Еще до старта проекта команда должна прийти к официальному и формальному соглашению:

  • какие действия являются нарушением;

  • какие обязательства несут участники с повышенными привилегиями;

  • как будут разрешаться споры;

  • по какому сценарию команда будет защищать свои интересы в случае умышленного причинения вреда проекту.

Если кризис уже начался, разрабатывать правила и сценарий защиты «на лету» будет затруднительно.

Во-вторых, принцип наименьших привилегий должен работать жестко и без скидок на авторитеты. 

В-третьих, бэкапы всегда должны лежать отдельно от основной инфраструктуры — в идеале, в объектном хранилище с настроенной иммутабельностью, чтобы никто при всем желании не смог перечеркнуть проект.