Атакующие внедрили вредоносные хуки в репозитории hugo-paper и mevn-cli
Злоумышленники скомпрометировали репозитории GitHub hugo-paper и mevn-cli, добавив вредоносные скрипты preinstall в поддельные или новые коммиты. Запуск npm install или bun install в любом из репозиториев выполняет хук, который загружает и запускает полезную нагрузку второго этапа с адреса buildwithknexus[.]xyz. Любую систему, на которой выполнился хук, следует считать скомпрометированной.
Загрузчик использует функцию Node.js child_process.execSync, чтобы выполнять команды для конкретной операционной системы и скрывать вывод в терминал. В Windows он скачивает файл check_w командой curl.exe -k -s в %TEMP%\check.cmd, а затем запускает его через cmd. В macOS и Linux загрузчик сохраняет файл check_m по пути /tmp/check и запускает его через bash с помощью nohup. Установка при этом может завершиться, пока второй этап работает в фоновом режиме. Параметр -k отключает проверку сертификатов TLS, а -s подавляет вывод curl.
Полезная нагрузка размещена на внешнем хостинге, а не включена в пакет npm, поэтому сканеры реестров пакетов могут её не обнаружить. Сервер может менять нагрузку второго этапа в любой момент; её поведение не подтверждено.
Изменения в репозиториях
Изменения указывают на манипуляции с историей Git с использованием скомпрометированных учётных данных сопровождающих. Поддельный коммит в hugo-paper сохранил исходное сообщение, аватар и дату, но лишился значка Verified и имел одного родителя вместо двух. В mevn-cli вредоносные коммиты добавили в ветки develop и master, повторно использовав легитимные метаданные.
В mevn-cli обнаружили две версии загрузчика. Первая, с SHA-256 c7b8b06d…5e575f79e, пыталась запустить скрытый процесс PowerShell и, вероятно, содержала ошибку экранирования JavaScript, влиявшую на путь в Windows. Исправленная версия, с SHA-256 61412c99…14f9eaf100, использует curl.exe и cmd /c. Именно её получили в hugo-paper.
Оценка активности
Исследователи оценивают эту активность как отдельную от GlassWorm и ForceMemo: в ней используются открытый вызов curl и фиксированный домен, а общие индикаторы компрометации отсутствуют. Если проекты используются исключительно как модули Hugo или подмодули Git, JavaScript-хук не выполняется.
Отчет получен из сервиса CTT Report Hub. Права на отчет принадлежат его владельцу.
Ознакомиться подробнее с отчетом можно по ссылке.



