К вечеру 12 ноября следы вредоносного скрипта wfx обнаружили в 8926 репозиториях на GitHub. Скрипт внедряли в сценарии автоматической сборки GitHub Actions начиная с 10 ноября, злоумышленник действовал через украденные токены доступа.
Сначала атакующий открывал запрос на изменение документации, чтобы проверить доступ к репозиторию. Затем от имени разработчика или бота отправлял коммит под видом обслуживания сборки: скрипт получал секреты и переменные из настроек GitHub Actions, включая возможные ключи облачных сервисов и токены для публикации пакетов. После запуска коммит откатывали, а запись о запуске удаляли вместе с журналом.
Отдельный канал атаки — пакет digitalelvis/neuronai-studio 3.14.3 для визуальной сборки ИИ-агентов на Laravel, вышедший в реестре Packagist 11 ноября. Команда npm install в каталоге этой версии запускала тот же скрипт кражи токенов и ключей. В OX Security исправленной назвали версию 3.14.4, но на 13 ноября она, как и 3.14.2 с 3.14.3, отмечена как вредоносная в базе знаний CodeScoring и в реестре Packagist — статус версии нужно проверять перед обновлением.
Для поиска компрометации следует проверить историю коммитов и запусков GitHub Actions с 10 ноября. Признаки атаки — ветки wfx-docs, коммиты ci: refresh build cache и пропуски в нумерации запусков рядом с подозрительными изменениями. При возможном запуске вредоноса нужно отозвать токены и заменить доступные ему ключи, а также проверить настройки доступа в облаке: скрипт пытался менять правила доверия для ролей AWS и добавлять учётные данные wfx-ci-* в Azure.
Стоит проверить и сборку JavaScript-части на рабочей машине или в CI. В опубликованных версиях модулей Go gocurl и redock специалисты SafeDep также нашли вредоносные сценарии GitHub Actions. Блокирующие политики CodeScoring с условием «Зависимость опасна» останавливают загрузку известных вредоносных пакетов в модуле CodeScoring.OSA и сборку проекта в модуле CodeScoring.SCA.