GitHub оказался завален поддельными репозиториями, которые маскируются под обычные проекты разработчиков и распространяют трояны через ссылки на ZIP-архивы.
Крупную вредоносную кампанию обнаружил разработчик под псевдонимом Orchid. Он нашел около 10 000 репозиториев на GitHub, которые выглядели как самостоятельные проекты от разных авторов, но работали по одной схеме. Злоумышленники копировали чужие новые репозитории, сохраняли историю изменений и список участников, а затем меняли файл README, добавляя ссылку на архив с вредоносным содержимым.
Orchid заметил проблему после того, как его собственный проект оказался скопирован. В Google оригинальный репозиторий отображался корректно, а в Bing по тому же запросу появился чужой репозиторий с таким же названием и описанием. Внутри находилась копия проекта, включая историю изменений, но в README была добавлена ссылка на ZIP-архив.
По словам разработчика, поддельные репозитории не были обычными ответвлениями проектов. У них были разные названия, разные владельцы и разные участники. Общая деталь заключалась в том, что они повторно изменяли README. В некоторых случаях злоумышленники удаляли старый коммит и через несколько часов добавляли новый с тем же названием «Update README.md». Ранее в сети уже появлялись сообщения об этой схеме, и разработчики жаловались на подделку своих проектов. Orchid выявил около 40 000 подозрительных репозиториев, из которых примерно 10 000 полностью совпали с нужным шаблоном.
Вредоносная схема строилась вокруг ZIP-архива. Обычно внутри находились командный файл Windows, исполняемый файл вроде loader.exe или luajit.exe, случайный файл с расширением .txt или .cso и библиотека lua51.dll. При проверке только по VirusTotal вредоносный код мог не выявляться, но сам загруженный архив уже определялся как троян.
Ранее похожую кампанию описывала компания HexaStrike. Ее специалисты нашли 109 поддельных репозиториев и связали активность с вредоносной цепочкой SmartLoader и StealC. После запуска командного файла на компьютере жертвы включался интерпретатор LuaJIT с запутанным скриптом. Затем вредоносная программа получала адрес управляющей инфраструктуры через смарт-контракт в сети Polygon и загружала следующий этап атаки.
В итоге на зараженное устройство мог попадать StealC, который крадёт данные. Такой троян способен похищать криптовалютные кошельки, пароли, банковские данные, файлы браузеров, учетные записи электронной почты, а также данные Steam, Discord, Telegram и других сервисов.
Поддельные репозитории выглядели убедительно, потому что сохраняли исходный код, историю изменений и участников оригинальных проектов. По версии Orchid, злоумышленники копировали именно новые репозитории, чтобы быстрее попасть в результаты поиска по редким запросам. Кроме того, такие проекты могли находить не только люди, но и агенты на базе искусственного интеллекта, которые ищут зависимости или примеры кода и могут автоматически перейти по вредоносной ссылке.
Разработчик сообщил GitHub о двух поддельных копиях своих проектов, но, по его словам, пришлось ждать почти два месяца, пока репозитории удалят. После того как опубликовал скрипт и список вредоносных репозиториев, GitHub начал удалять найденные проекты, однако Orchid утверждает, что платформа убрала только те репозитории, которые были прямо перечислены в списке. После повторного запуска скрипта появились новые находки, которые, как заявил автор, не были оперативно удалены.
Часть поддельных репозиториев существовала месяцами, а некоторые могли оставаться доступными больше года. Orchid считает, что найденные 10 000 проектов могут быть лишь частью кампании, поскольку его поиск был ограничен лимитом программного интерфейса GitHub в 5 000 запросов в час. У самой платформы таких ограничений нет, поэтому GitHub может проверить все репозитории, найти архивы и исполняемые файлы, а затем просканировать их на вредоносный код.
Кто стоит за атакой, пока неизвестно. HexaStrike предположила, что кампанию ведет один злоумышленник или небольшая группа с централизованным управлением. На это указывают одинаковая структура README, синхронные обновления репозиториев, повторяющиеся приёмы, с помощью которых они загружали вредоносное ПО, и общая инфраструктура.