На GitHub до сих пор лежат тысячи репозиториев, которые два года раздают вредоносные zip-архивы с троянами. Найти их может кто угодно через обычный поиск по сайту — никаких специальных знаний не нужно. У GitHub миллиарды долларов, собственная команда безопасности и искусственный интеллект, но проблему так и не решили.
Репозитории выглядят шаблонно. В readme обязательно есть заголовок с эмодзи — например, ## 📥 Download Now, ## 📥 Download the Software или ## 📥 Download & Install — и прямая ссылка на zip-архив с трояном. Если скачать файлы и прогнать через VirusTotal, детекты выскакивают сразу. Паттерн настолько повторяющийся, что достаточно вбить в поиск GitHub строку path:readme.md "## 📥 Download", чтобы получить тысячи совпадений. Мешает только куча легитимных проектов.
Чтобы отсеять нормальные репозитории, запрос можно усилить. Добавить поиск .zip, и результаты резко улучшаются — теперь прямо в выдаче видны репозитории с нужным заголовком и ссылкой на архив. Ссылки ведут либо на raw.githubusercontent.com, либо на github.com, а в имени файла обязательно есть версия, вроде Software-3.6.zip. Остаётся составить регулярное выражение, и тут не нужно быть экспертом — любая бесплатная AI-модель справляется за пару итераций. Итоговый запрос выглядит так: path:README.md /raw\.githubusercontent\.com\/.*\d+\.\d+\.zip|github\.com\/.*\/raw\/refs\/heads\/.*\d+\.\d+\.zip/. Он находит те самые вредоносные репозитории.
Месяц назад я подробно разобрал эту схему в статье, написал скрипт, который обнаружил 10 000 таких репозиториев, и выложил список и сам скрипт на GitHub. Материал попал на первую полосу Hacker News, о нём написали другие кибербез-издания. GitHub отреагировал мгновенно: удалил все 10 000 репозиториев, которые нашёл скрипт. И всё. Больше они ничего не сделали.
Через несколько часов я снова запустил скрипт — он тут же нашёл новые репозитории, и я добавил их в статью. За целый месяц их не заблокировали, хотя достаточно было просто открыть мою публикацию, скопировать новые ссылки и нажать «забанить». Видимо, это оказалось слишком сложной задачей.
Факт остаётся фактом: GitHub и его владелец Microsoft прекрасно знают о схеме. Это корпорация с миллиардной выручкой, тысячами сотрудников и безграничными ресурсами. Любому рядовому инженеру хватило бы пары дней, чтобы с помощью Copilot отловить все оставшиеся репозитории и отправить их в бан. Но после разовой зачистки всё остановилось. Почему менеджеры не дают команду довести дело до конца — остаётся только гадать.