Исследователи из SafeDep и OX Security раскрыли масштабную кампанию Megalodon: за шесть часов злоумышленники отправили 5718 коммитов в 5561 репозиторий на GitHub. Под удар попали в первую очередь проекты с автоматическими сборками, где одна удачная подмена превращалась в кражу секретов из CI/CD-окружения.

Что произошло и почему это важно

Схема строилась на доверии к привычным изменениям в коде. Коммиты маскировали под обычные правки для сборки: использовали имена вроде build-bot и pipeline-bot, а сообщения выглядели безобидно — вроде «ci: add build optimization step».

Если владелец проекта принимал такой коммит, в GitHub Actions запускался вредоносный workflow. Скрипт в Base64 вытягивал секреты из среды разработки и отправлял их на управляющий сервер.

Это не просто очередная кража пароля. Речь о цепочке поставок: один скомпрометированный аккаунт разработчика может потянуть за собой ключи облаков, токены, SSH-доступ и конфигурации инфраструктуры. Похожий принцип уже разбирали в материалах о схеме с GitHub и токенами Microsoft 365 и об атаке на пакеты разработчиков.

Как работала схема Megalodon

У атакующих было несколько слоёв маскировки. Они использовали одноразовые аккаунты GitHub со случайными именами, подделывали CI-изменения и вносили правки напрямую в master без обычного pull request и merge-коммитов.

Исследователи выделили две версии вредоноса. SysDiag запускался при каждом push и pull request, а более скрытный Optimize-Build включался только вручную через workflow_dispatch.

Именно второй вариант использовали против Tiledesk — опенсорсного проекта для онлайн-чата и чат-ботов. Злоумышленники внедрили вредонос в версии @tiledesk/tiledesk-server с 2.18.6 по 2.18.12, а потом заражённые версии пакета опубликовал сам мейнтейнер, не заметив компрометации репозитория.

Какие данные искали и почему это опасно

Megalodon крал почти всё, что обычно хранится в сборочных контурах: AWS-ключи, токены Google Cloud, учётные данные Azure, SSH-ключи, данные Docker и Kubernetes, Vault-токены, переменные окружения, .env-файлы и токены GitHub Actions. Параллельно вредонос сканировал исходный код в поисках API-ключей, JWT и приватных PEM-ключей.

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

Поэтому исследователи советуют считать скомпрометированными все CI/CD-переменные в заражённых проектах. Это жёсткая мера, но иначе легко пропустить уже украденные токены и ключи.

Как защитить проект и кому какой подход подходит

Для небольших команд главный риск — лишняя доверчивость к коммитам. Здесь важны ручная проверка изменений, жёсткий контроль прав на репозиторий и запрет на прямые правки в защищённых ветках.

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

Для разработчиков на удалёнке и фрилансеров, которые часто работают из кафе, коворкингов и поездов, вопрос ещё и в приватности соединения. В таких сценариях помогает [защищённый канал для открытых Wi‑Fi]https://freedome.space) вместе с двухфакторной проверкой входа и аккуратной работой с паролями.

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

Практический чек-лист

  • Проверьте, нет ли прямых правок в master или main без ревью.
  • Закройте лишние права у PAT-токенов, deploy-ключей и сервисных учёток.
  • Пересмотрите все CI/CD-переменные и замените секреты с долгим сроком жизни.
  • Ограничьте запуск workflow только доверенным авторам и защищённым веткам.
  • Проверьте, не появлялись ли в истории репозитория подозрительные CI-коммиты.
  • Для работы из открытых сетей используйте инструмент для приватного канала связи и не передавайте секреты через незнакомые точки доступа.
  • После инцидента смените токены, ключи и пароли, даже если утечка пока не подтверждена.
Поделиться: