
Масштабная вредоносная кампания на GitHub привела к созданию более 10 000 поддельных репозиториев, содержащих трояны для кражи криптовалюты. Злоумышленники клонируют новые проекты, внедряют вредоносный код и манипулируют поисковой выдачей, чтобы обмануть как разработчиков, так и ИИ-агентов, автоматически загружающих зависимости. Кампанию выявил исследователь под псевдонимом Orchid, который опубликовал список из 9330 вредоносных репозиториев, после чего GitHub начал их массово удалять, однако атака продолжается, а некоторые подделки остаются активными уже более года.
Как устроена атака
Схема, по словам Orchid, оказалась предельно простой и, скорее всего, автоматизированной. Атакующие клонируют не давно существующие популярные проекты, а свежие, малоизвестные репозитории. В клоны добавляют вредоносную нагрузку, после чего эти подделки нередко ранжируются выше оригиналов в результатах поиска. Чтобы избежать обнаружения, репозитории активно обновляются каждые несколько часов — старые коммиты удаляются и добавляются новые. Orchid обнаружил кампанию после того, как в поисковой выдаче Bing на его собственный проект вместо оригинала появился поддельный репозиторий с тем же именем и описанием. Разработчики на Hacker News и Reddit подтвердили подобные случаи: их имена оказывались привязаны к чужим проектам, а клоны перенаправляли на неизвестные сайты.
Цепочка заражения
В каждом вредоносном репозитории злоумышленники размещают в файле README ссылку на ZIP-архив, спрятанный внутри структуры каталогов, и инструкцию — скачать, распаковать и запустить извлечённый файл. По данным компании по кибербезопасности HexaStrike, которая независимо обнаружила 109 таких репозиториев, архив содержит четыре компонента: исполняемый файл (например, loader.exe или luajit.exe), сценарий Windows Command Script (.cmd), декоративный текстовый файл и библиотеку lua51.dll. При запуске пакетный файл активирует интерпретатор LuaJIT с обфусцированным Lua-скриптом. Этот «SmartLoader» скрывает выполнение, проводит антиотладочную проверку, получает адрес командного сервера (C2) через смарт-контракт в сети Polygon, а затем загружает функционально перекрывающийся скрипт второго этапа из другого репозитория GitHub, принадлежащего той же кампании. Использование блокчейн-инфраструктуры делает отключение командных серверов крайне сложным. На начальных этапах загружается инфостилер StealC — продвинутое вредоносное ПО, способное красть криптокошельки, логины, пароли, файлы cookie, историю браузера, данные учётных записей электронной почты, Steam, Discord, Telegram и другую конфиденциальную информацию. Orchid отметил, что простая проверка ссылки на ZIP-архив через VirusTotal не выявит угрозу — детекция срабатывает только при загрузке самого архива.
Реакция GitHub и нерешённые проблемы
Orchid сообщил, что удаление двух поддельных репозиториев, клонировавших его проект, заняло почти два месяца. Первый запрос в службу поддержки GitHub остался без ответа в течение двух недель, и только спустя месяц компания сообщила об удалении. Однако после публикации списка из тысяч репозиториев GitHub начал оперативно их блокировать, хотя сообщения об этом не направлялись — объём был слишком велик. Тем не менее, Orchid привёл примеры трёх вредоносных репозиториев, которые существуют уже два месяца и до сих пор не удалены. Он задаётся вопросом, почему GitHub не обнаруживает автоматически такие репозитории, особенно учитывая, что некоторые из них активны более года.
Кто стоит за атакой и кто в зоне риска
HexaStrike оценила, что кампания управляется одним злоумышленником или тесно контролируемым кластером. Это подтверждается пересечением инфраструктуры, синхронизированными обновлениями репозиториев, одинаковыми шаблонами README и повторяющимися методами развёртывания. Оператор остаётся неизвестным. Участники Hacker News полагают, что главной целью являются ИИ-агенты, а не люди. Разработчики, вручную просматривающие GitHub, вряд ли запустят исполняемый файл из подозрительного ZIP-архива, тогда как агенты, автоматически ищущие зависимости, могут скачать такой контент, если он появится в результатах поиска. Поддельные репозитории выглядят убедительно, поскольку сохраняют почти весь оригинальный код, и только README лишается технического содержания и заменяется кнопками загрузки. Один из участников Hacker News подчеркнул: злоумышленникам достаточно появиться в доле поисковых запросов, выполняемых агентами, и несколько успешных загрузок могут запустить новый кластер заражений.