Приветствую.
В течение последних пары суток понабежали майнеры в публичные репозитории гитхаба, насоздавав более полусотни тысяч майнеров в сотнях крупных и средних публичных репозиториях.
I. Конкретнее
Что именно происходит это: человек делает форк вашего репозитория, меняет файлы конфигурации в Actions (CI, ну можно считать проверяющая система), пишет там скрипт, который скачивает майнер, и в 20 потоков его запускает, сделав pull request к основному репозиторию.
II. Что делать
Мой публичный репозиторий тоже попал под атаку этого человечка. Следующий алгоритм я рекомендую мейнтенерам:
1) Лочим conversation. Иначе наш замечательный умудряется открывать и закрывать pull request раз ~30, триггеря еще три десятка по 20 потоков
2) Блочим юзера. Иначе насоздает PR-ов
3) Останавливаем все workflows
4) Вот теперь репортим
III. Что это было
На момент написания этого поста прошло примерно около суток с момента, когда мой репозиторий попал под первую. Час назад юзеры beefybill1 и w0wn3r0 были удалены с гитхаба, именно они насрали суммарно порядка 200 PR x 30 workflows x 20 runners.
Почти все это время (кроме последнего часа), автор обоих аккаунтов (по моему предположению, один человек) имел десятки тысяч параллельно запущенных майнеров.
Его код я, разумеется, постить не буду. Хоть и меня позабавила строка
# Izvinite)))))
в его коде. С некоторой вероятностью ты, нехорошая личность, это читаешь. Ай-ай-ай!
IV. Подробности (для тех, кто ннп)
Гитхаб - это хостинг гит-репозиториев, в котором есть и открытые, и закрытые. В случаях открытых репозиториев, любой желающий может предложить изменение, оформив в соответствующем виде. При этом само изменение может касаться в том числе и проверяющей системы (Actions).
Такая заявка (pull request) будет проверяться Actions автоматически (если там так настроено). При этом сама проверка настраиваится в файлах репозитория, которые тоже можно поменять. Злоумышленник пишет там скрипт, который скачивает программу, ставит ее, и майнит для указанного кошелька.
При этом сам репозиторий не страдает (потому что эту заявку надо еще одобрить), страдает только GitHub Actions.