Репозитории hugo-paper и mevn-cli на GitHub получили коммиты, которых не делали их владельцы. Обе правки добавляют в проект скрипт предустановки, срабатывающий при установке зависимостей. Команда npm install или bun install в такой копии запускает его до сборки и до любых проверок кода. Скрипт скачивает с внешнего сервера вторую часть и отдаёт ей управление. В самих пакетах npm вредоносного кода нет, поэтому сканеры реестра его не находят.
Описание
Следы подмены видны в метаданных коммитов. В hugo-paper атакующий переписал вершину основной ветви: новый коммит повторяет автора, дату и текст сообщения реального слияния от 9 марта 2026 года. Само слияние касалось двух строк шаблона и несло подпись GitHub. Теперь у этого коммита один родитель вместо двух, а значок проверенной подписи исчез. В mevn-cli, наоборот, к истории добавили новые коммиты на двух долгоживущих ветвях, и каждый копирует автора, время и сообщение предыдущего. Записи в основной ветви датированы 2020 годом, из-за чего выглядят старыми. Совпадение приёмов в двух историях заметили при разборе по данным анализа SafeDep.
Загрузчик ведёт себя по-разному в зависимости от системы. На Windows он обращается к серверу buildwithknexus[.]xyz и запускает полученный файл скрыто, через отдельное окно командной строки. На macOS и Linux скачивание уходит в фоновый процесс, который продолжает работу после завершения установки. Проверку подлинности сертификата при обращении к серверу скрипт отключает, а вывод утилиты скачивания подавляет, поэтому в терминале не появляется ничего. Установка при этом завершается успешно, так что внимания сбой не привлекает. Первую версию загрузчика в mevn-cli через несколько часов заменили второй: в ней исправлена ошибка, ломавшая путь к файлу на Windows.
Вторую часть SafeDep не получила. Содержимое сервер отдаёт по своему усмотрению и может менять в любой момент, поэтому что именно исполняется на заражённой машине, неизвестно. Копии репозиториев, сделанные после атаки, наследуют вредоносный скрипт, включая несколько ответвлений, созданных 19 сентября и в октябре 2026 года. Связи владельцев этих копий с атакующим нет. В релизах npm проблемы не было: hugo-paper туда не публикуется, а последний выпуск mevn-cli вышел в 2022 году и чист.
Обе атаки уложились в 15 часов. Злоумышленник действовал под именами двух не связанных между собой сопровождающих. Такой рисунок указывает на кражу учётных данных для отправки изменений, то есть личного токена доступа или SSH-ключа. Как именно их получили, в SafeDep не подтверждают. Переписывание вершины ветви с сохранением авторства уже применяли GlassWorm и ForceMemo, но инструменты там другие: скрытый загрузчик в невидимых символах Unicode и управление через блокчейн. Общих индикаторов с новой кампанией нет.
Проверить себя стоит по двум условиям. Первое: копия hugo-paper или mevn-cli получена после 20 августа 2026 года. Второе: в ней запускали npm install, bun install, yarn или pnpm install без флага --ignore-scripts. Если тема hugo подключена как модуль или подмодуль git и установка пакетов не выполнялась, скрипт не запускался. В остальных случаях машину или сервер сборки считают заражёнными. Ищут следы обращения к внешнему серверу, а затем меняют все секреты, до которых мог дотянуться процесс: токены GitHub, ключи SSH, учётные данные облака и содержимое файлов окружения. Блокировка домена на уровне DNS или прокси и поиск более ранних подключений в журналах помогают оценить масштаб.