На GitHub нашли 10 тысяч репозиториев с троянами
Разработчик обнаружил крупную кампанию распространения вредоноса через GitHub. Всё началось с простого поиска: когда он гуглил название своего проекта, обнаружил в результатах полную копию репозитория с его именем и с добавленной ссылкой на zip-архив. Кроме первого, позже он нашёл второй скопированный проект. Оба имели один паттерн: каждые несколько часов удалялся старый коммит и пушилась новая версия с единственным изменением в README. GitHub почти месяц не отвечал на жалобу, потом удалил эти два репозитория. Но вопрос остался: сколько таких на самом деле?
Автор написал скрипт, чтобы найти все подобные репозитории. Из 16 миллионов коммитов за 5 дней он отфильтровал те, что обновляются часто. Потом добавил условие на совпадение паттерна: каждый коммит содержит только изменение README с ссылкой на архив, коммиты скопированы из других репозиториев, новые хранилища (не форки). После уточнения фильтров нашёл 10 тысяч репозиториев, которые точно соответствуют паттерну. Все архивы содержат исполняемые файлы с троянами, которые проходят проверку на VirusTotal в виде zip, но не в виде самого архива.
Ключевые факты
- GitHub содержит 500 миллионов репозиториев, половина из них никогда не проверяется на наличие вредоносов
- 10 тысяч репозиториев распространяют троян с одинаковым паттерном: копируют легитимные проекты, добавляют архив в README, переиндексируют его каждые несколько часов
- Архивы содержат 4 файла: cmd-скрипт, exe-файл (под разными названиями), случайно названный cso/txt и dll
- Репозитории существуют месяцами и годами, GitHub их не удаляет автоматически, только по поступлении явной жалобы
- Архивы показывают 0 вирусов при проверке ссылки в VirusTotal, но детектируют троян при проверке zip-файла
Ред. Обращение в поддержку GitHub через две недели не сработало; потребовался месяц. После этого статьи автора GitHub удаляет только указанные репозитории, игнорируя остальные из 10 тысяч.
Почему это важно
Система обнаружения GitHub работает реактивно: удаляет только то, на что пожаловались. Её AI-алгоритмы не выявляют новые репозитории, которые, похоже, используют техники маскировки (перезапись коммитов, копирование истории), чтобы миновать фильтры. Масштаб кампании (10 тысяч жилых репозиториев) говорит о давней и хорошо организованной операции. То, что репозитории просуществовали месяцы и годы, убеждает в недостаточности автоматического контроля.
Ред. GitHub не опубликовал заявление, подтверждающее 10 тысяч репозиториев; цифра основана на скрипте разработчика с его же допусками.
Кому это важно
Разработчикам, которые ищут библиотеки и примеры кода через GitHub и поисковые системы. Особенно рискуют те, кто ищет малоизвестные инструменты или копирует код от новых авторов (их профили выглядят легитимно благодаря скопированной истории коммитов). Опасность и для корпоративного кода: если скопировать чужой репозиторий целиком (включая коммиты), а потом загрузить его на GitHub, собственный репозиторий может быть затронут этой же кампанией.
Ред. Метод "скопировать всю историю" отнимает у разработчика иммунитет; он становится мишенью с чужой репутацией.
Как это применить
Если ищешь библиотеку на GitHub: 1) проверь дату первого коммита и профиль автора (особенно если есть 0, 6 месячный разрыв перед новой активностью), 2) посмотри на количество форков и звезд (10 тысяч троян-репозиториев имеют мало звёзд благодаря новизне), 3) скачай архив, не переходи по ссылкам из README сразу. При скачивании: не доверяй встроенной проверке в VirusTotal (ищи тройной проверкой иными сервисами), изолируй машину для первого запуска. Если собираешься выложить код на GitHub, не клонируй чужой репозиторий целиком (с историей); начни с нуля или явно укажи, что это форк.
Ред. Звёзды и форки это социальный сигнал, не проверка на вредонос; новый, но копирующий историю репозиторий выглядит как ложное свидетельство.
Можно ли доверять
Источник это разработчик, который опубликовал скрипт и список 10 тысяч репозиториев на GitHub. Позже обновления подтвердили, что GitHub начал удалять эти репозитории (но неполностью). На Reddit в феврале 2025 была похожая жалоба на схему с малвером через GitHub-клоны. В апреле 2024 статья про SmartLoader и StealC описывала то же поведение. Другой разработчик нашёл скопированный репозиторий с тем же паттерном 4 месяца назад. Паттерны совпадают, цифры (10 тысяч) основаны на собственном скрипте автора, который может иметь погрешности в фильтрации.
Ред. GitHub удалил 10 тысяч только из указанного списка; скрипт автора вновь нашёл 40+ тысяч. GitHub не открыл его статью и не использовал его скрипт.
Риски и подводные камни
Во-первых, цифра в 10 тысяч это результат скрипта с ограничениями API (5000 запросов/час на GitHub). Автор сам признаёт, что фильтры могут быть неполными, и реальное число может быть выше. Во-вторых, GitHub удаляет репозитории только после явной жалобы или если они в списке; каждый день появляются новые. В-третьих, задача определить троян до запуска не проста: архив может иметь чистую подпись, а самого exe-файла VirusTotal не видит сразу. В-четвёртых, неизвестно точное назначение вредоноса (скорее всего, botnet или stealer, но это гипотеза). И, наконец, бизнес-логика: почему хакеры копируют новые репозитории, а не популярные? Почему переписывают коммиты каждый час? Это может быть техникой для обхода алгоритмов GitHub или просто попытка остаться незамеченными.
Ред. Пять месяцев с февраля 2025 по июнь 2026 говорят о том, что схема либо давняя и хорошо скрытая, либо GitHub просто не заметил масштаб.
Источник: Hacker News, 26 часов назад, 847 очков, 218 комментариев. Автор: theorchid.