Разработчики свободной системы управления контентом Plone рассказали об инциденте, в ходе которого в репозиторий проекта на GitHub злоумышленники добавили вредоносный код.
Код проекта написан на Python и JavaScript/NodeJS. Сначала разработчики заметили три изменения 7 января, и все они добавляли вредоносный код в JavaScript-файлы. При анализе инцидента выяснилось, что вредонос внедрили после компрометации учётной записи одного из разработчиков. Его токен доступа был захвачен злоумышленниками после запуска вредоносного ПО в системе.
Аккаунт заблокировали 14 января, а разработчикам проекта порекомендовали проанализировать коммиты с 1 по 14 января. В итоге 27 января выяснилось, что атака затронула ещё пять репозиториев проекта: plone/volto, plone/mockup, plone/plone.app.mosaic, plone/critical-css-cli и plone/plonetheme.barceloneta. Так, в случае репозитория plone.app.mosaic атакующим удалось подменить master-ветку.
Примечательно, что для интеграции изменений вместо обычных коммитов хакеры воспользовались операцией "force push" (git push с опцией "--force"). Она позволяет принудительно заменить ветку во внешнем репозитории своим содержимым и переписать историю изменений. В репозитории plone.app.mosaic они подставили в master-ветку вредоносный коммит с фиктивной датой 18 декабря. Это позиционировалось как начало разработки нового тестового выпуска, но, помимо смены номера версии в метаданных (с 4.0.0a1 на 4.0.0a2.dev0), в вызываемый на этапе сборки javascript-файл prettier.config.js был добавлен вредоносный код. Он находился в одной строке с легитимной операцией и был смещён из видимой области с использованием пробелов. В интерфейсе GitHub код тоже не показывался по умолчанию и требовал нажатия кнопки "Load Diff".
Теперь разработчики Plone включили в GitHub правила, блокирующие операции "force push" для основных веток и тегов.
Отмечается, что атака была нацелена на разработчиков проекта, а не на пользователей. Вредоносный код загружал эксплойты для повышения привилегий, настраивал автозапуск через вызов своих процессов из стартовых ��криптов и позволял удалённо управлять сервером. Он также осуществлял поиск и отправку конфиденциальных данных, таких как токены доступа, профили браузеров и ключи от криптокошельков.
В конце 2024 года сообщалось, что многие проекты GitHub подверглись атаке с вредоносными коммитами и пул-реквестами, чтобы внедрить бэкдоры. Тогда сопровождающим проекты с открытым исходным кодом порекомендовали тщательно проверять входящие пул-реквесты с помощью автоматизированных инструментов и вручную.
