В 42 GitHub-репозитория внедрили код для скрытой публикации вредоносных npm-пакетов

Исследователи JFrog обнаружили 42 сторонних GitHub-репозитория, подготовленных к запуску вредоносного кода в кампании testmetest. В них внедрили загрузчики скрытого издателя npm-пакетов и команды автозапуска для Claude Code, Cursor, Gemini CLI и VS Code.

Несколькими днями ранее компания SafeDep сообщала об обнаружении червя, но на тот момент исследователи наблюдали его активность только на тестовых аккаунтах злоумышленника. Червь крадёт секреты и распространяется через пакеты и репозитории. Один из способов запуска использует файл сборки нативного модуля binding.gyp, поэтому отсутствие install-скрипта в package.json не гарантирует безопасную установку. Позднее появились варианты с нативной библиотекой Node.js, которую вызывает команда postinstall.

Находка JFrog меняет оценку масштаба кампании. В репозиториях разработчиков и организаций команды в конфигурациях инструментов запускают файл .github/init.js. Например, для Claude Code использовано событие начала сессии, а для VS Code — задача при открытии папки. Вредоносный код может запуститься ещё до установки зависимостей.

Загрузчики занимают около 13 МБ и не попадают в обычную поисковую выдачу GitHub. JFrog получила файлы через API деревьев и объектов Git. За десятью разными оболочками оказался одинаковый издатель пакетов. Он ищет токены, умеет использовать доверенную публикацию npm через GitHub Actions и добавлять вредоносный postinstall в выпускаемый пакет. Доверенная публикация npm привязывает выпуск к определённому репозиторию и workflow. Если злоумышленник получил возможность менять этот workflow, то проверка происхождения пакета сама по себе не остановит выпуск подменённого содержимого. Поэтому проверку зависимостей стоит дополнять контролем изменений конфигурации среды разработки и процесса выпуска.

Командам, которые могли столкнуться с кампанией, стоит:

  • Проверить дерево файлов репозитория на наличие файлов .github/init.js и изменения конфигураций перечисленных инструментов. Одного поиска по коду GitHub для этой проверки недостаточно.

  • Проверить историю workflow и ветки вида chore/ci-*, особенно изменения шагов публикации и доступа к секретам.

  • При обнаружении npm-червя сначала изолировать машину и обезвредить его механизмы закрепления, затем менять доступные ему секреты с чистой системы. 

База CodeScoring содержит сведения о вредоносности пакетов кампании testmetest. Для блокировки новых загрузок известных вредоносных версий организациям с настроенным модулем CodeScoring.OSA достаточно включить блокирующую политику с условием «Зависимость опасна».

Источник: habr.com

0 0 голоса
Рейтинг новости
1
0
Подписаться
Уведомить о
0 комментариев