Компания CrowdSec подтвердила утечку исходного кода из примерно 170 приватных GitHub-репозиториев. Злоумышленник скопировал файлы 22 мая 2024 года, используя учётную запись недавно ушедшего разработчика. О краже стало известно только 16 сентября, когда архив появился на хакерском форуме.
Скачивание данных заняло чуть больше девяти минут — с 05:52:29 до 06:01:33 UTC. Архив содержал около 170 закрытых репозиториев и свыше 130 открытых. Часть общедоступного кода была скопирована вместе с приватной частью, но эта информация уже находилась в открытом доступе.
В украденном архиве оказались исходники SaaS-консоли CrowdSec, облачные процедуры AWS, коннекторы, скрипты автоматизации, модели обработки данных и компоненты системы репутации IP-адресов. CrowdSec утверждает, что инфраструктура, базы данных и CI/CD-конвейеры не были скомпрометированы, исходный код не изменялся.
Расследование показало, что доступ был получен через OAuth-токен, найденный в конфигурации Git. GitHub предоставил журналы активности, которые позволили связать массовое клонирование с аккаунтом уволенного разработчика. Большинство его корпоративных прав уже отозвали, но доступ к GitHub-организации CrowdSec временно оставили, чтобы он завершил оставшуюся работу. Аккаунт удалили 25 мая, через три дня после кражи.
По предварительной оценке CrowdSec, токен был украден с компьютера разработчика во время атаки на цепочку поставок TanStack 11 мая. Злоумышленники выпустили 84 вредоносные версии 42 пакетов @tanstack/* в npm. Встроенный код крал GitHub-токены, ключи SSH, учётные данные AWS и GCP, токены Kubernetes, Vault и npm. TanStack подтвердил наличие вредоносных публикаций и быстро вывел их из обращения. CrowdSec не обнаружила затронутых версий TanStack в своих репозиториях, поэтому компрометация произошла на машине разработчика, а не во внутренней инфраструктуре.
Случай демонстрирует опасность украденных токенов. Двухфакторная аутентификация, аппаратные ключи и пароли неэффективны, когда злоумышленник располагает действующим токеном с нужными правами. CrowdSec использовала 2FA, passkey и физические ключи безопасности, но OAuth-токен позволял читать закрытые репозитории без повторной авторизации.
В украденном коде также обнаружился AWS-токен с ограниченным доступом к сервису уведомлений SNS. Его права проверялись 17 августа — почти через три месяца после кражи репозиториев. CrowdSec утверждает, что дальнейшей компрометации инфраструктуры через этот токен не произошло.
Повторная проверка скорректировала первоначальную оценку утечки персональных данных. Архив содержал адреса электронной почты 83 пользователей, которые команда Data Science анализировала для изучения работы продукта. Также попали имена, почтовые адреса и информация об инвестиционном контексте 51 потенциального инвестора за 2020 год. CrowdSec пообещала уведомить затронутых людей и регулирующие органы.
При этом в архиве не найдены пароли клиентов, клиентские журналы или данные для прямого входа в пользовательские аккаунты. CrowdSec не обнаружила признаков изменения выпущенного программного обеспечения или компрометации рабочей инфраструктуры. Подтверждённый ущерб — копирование приватного исходного кода и ограниченного набора сопутствующих данных.
После инцидента CrowdSec начала устанавливать EDR на рабочие станции разработчиков и системных администраторов, усилила контроль пакетов и пересмотрит процедуру отключения учётных записей при увольнении. История с бывшим разработчиком показательна: доступ оставили ненадолго и по обоснованной причине, но девяти минут хватило, чтобы вынести почти всю закрытую кодовую базу. Саму утечку компания обнаружила спустя 117 дней.
