Исследователи из SafeDep и OX Security предупредили о масштабной кампании Megalodon, в рамках которой злоумышленники внедряли вредоносные коммиты в GitHub-репозитории. Всего за шесть часов атакующие успели отправить 5718 коммитов в 5561 репозиторий.
По словам специалистов, атака напоминает недавние операции группировки TeamPCP, которые позволили скомпрометировать тысячи проектов в экосистемах npm и GitHub. Однако за Megalodon, судя по всему, стоит другая хак-группа, копирующая методы и стиль «коллег».
Злоумышленники маскировали вредоносные коммиты под обычные CI-изменения. Для этого использовались поддельные имена вроде build-bot, ci-bot, auto-ci и pipeline-bot, а сами коммиты сопровождались безобидными сообщениями в духе «ci: add build optimization step».
Если владелец репозитория принимал такой коммит, в GitHub Actions запускался вредоносный workflow с bash-скриптом, закодированным Base64. После этого малварь начинала собирать секреты из CI/CD-окружения и передавала их на свой управляющий сервер.
В итоге атакующие похищали практически все популярные типы секретов: AWS-ключи, токены Google Cloud, учетные данные Azure, SSH-ключи, конфигурации Docker и Kubernetes, Vault-токены, учетные данные Terraform, переменные окружения, .env-файлы, OIDC-токены GitHub Actions, токены GitHub, GitLab и Bitbucket. Кроме того, малварь сканировала исходный код в поисках API-ключей, JWT, приватных PEM-ключей и других конфиденциальных данных.
Исследователи рекомендуют пострадавшим считать скомпрометированными все CI/CD-переменные в зараженных проектах.
Одной из подтвержденных жертв Megalodon стал опенсорсный проект Tiledesk (платформа для онлайн-чата и чат-ботов). Атакующие внедрили вредонос в версии пакета @tiledesk/tiledesk-server с 2.18.6 по 2.18.12. При этом npm-аккаунт разработчика не взламывали, злоумышленники получили доступ к GitHub-репозиторию, а мейнтейнер затем сам опубликовал зараженные версии пакета, не подозревая о компрометации.
Как объясняют специалисты, атакующие использовали скомпрометированные PAT-токены или deploy-ключи и вносили изменения напрямую в master без pull request и merge-коммитов. Для маскировки применялись одноразовые GitHub-аккаунты со случайными именами.
Исследователи SafeDep выделяют две версии использованного хакерами вредоноса. Первая — SysDiag — запускалась при каждом push и pull request. Вторая, более скрытная Optimize-Build, активировалась только вручную через workflow_dispatch. Именно второй вариант малвари использовали против Tiledesk, чтобы снизить вероятность обнаружения.
Дополнительное расследование компании Hudson Rock показало, что кампания Megalodon, вероятно, напрямую связана с прошлыми атаками инфостилеров. Так, исследователи заметили, что более 33% GitHub-аккаунтов (331 из 978), через которые злоумышленники внедряли вредоносные коммиты, ранее фигурировали в логах стилеров. Дополнительные пересечения специалисты нашли и по email-адресам, связанным с учетными записями разработчиков.
По мнению специалистов, это наглядно демонстрирует, что компрометация одного разработчика стилером может перерасти в масштабную атаку на цепочку поставок, затрагивающую тысячи проектов.

