Исследователи Socket обнаружили в экосистеме Go скрытый типосквот BoltDB, использующий кэширование прокси-модуля Go для того, чтобы оставаться незамеченным в течение многих лет.
Описание
В экосистеме Go был обнаружен вредоносный пакет под названием typosquat, который выдавал себя за широко используемый модуль базы данных BoltDB (github.com/boltdb/bolt). BoltDB является надежным и популярным модулем, использование которого распространено в сообществе Go. Однако злоумышленники создали замаскированный вредоносный пакет, содержащий бэкдор, позволяющий удаленно выполнять код и получать контроль над зараженными системами через командно-контрольный (C2) сервер. Вредоносная программа была закэширована на Go Module Mirror, откуда загружается инструментарий Go CLI. Тег git был изменен на GitHub, чтобы удалить следы вредоносного ПО и скрыть его от ручной проверки кода.
На текущий момент вредоносный пакет все еще доступен на Go Module Proxy, однако было подано прошение об удалении его из зеркала модулей. Исследователи также сообщили о репозитории GitHub и учетной записи злоумышленника, используемых для распространения пакета boltdb-go с обратным доступом.
Эта атака является одним из первых известных случаев использования злоумышленником кэширования модулей в Go Module Mirror. Предыдущие случаи использования подобных тактик неизвестны, однако этот инцидент подчеркивает необходимость повышения осведомленности о подобных атаках. Несмотря на преимущества использования неизменяемых модулей с точки зрения безопасности, они также могут стать потенциальными векторами злоупотреблений. Поэтому разработчикам и службам безопасности следует отслеживать атаки, использующие кэшированные версии модулей для обхода обнаружения.
Атака на цепочку поставок началась с того, что угрожающий агент опубликовал вредоносную версию пакета boltdb/bolt с названием boltdb-go/bolt на GitHub. После кэширования пакета Go Module Mirror, злоумышленники изменили Git-теги, чтобы они указывали на легитимную версию пакета. Таким образом, ручная проверка репозитория GitHub не обнаруживала наличие вредоносного кода, и Go Module Proxy продолжал предоставлять кэшированную вредоносную версию пакета разработчикам.
В экосистеме Go сервис Go Module Proxy играет роль посредника, кэшируя и предоставляя пакеты (модули) Go разработчикам. Это повышает эффективность и надежность поиска модулей и обеспечивает защиту от эксплойтов нулевого дня для git-клиентов. По умолчанию, когда разработчики используют инструменты командной строки Go, их запросы автоматически направляются через прокси-сервис Go Module Proxy.
Изображения репозитория на GitHub, созданного злоумышленниками, и легитимного репозитория boltdb/bolt также использовались в атаке для обмана разработчиков и введения их в заблуждение. Канонический репозиторий проекта BoltDB был архивирован, что увеличило риск внесения вредоносных или несанкционированных модификаций разработчиками в активных форках.
Indicators of Compromise
IPv4 Port Combinations
- 49.12.198.231:20022
URLs
- github.com/boltdb-go/bolt