В npm нашли пакет imgdecode со скрытым загрузчиком вредоносного кода для Windows

Пакет связывают с кампанией MALFEX, участники которой с 2023 года размещают вредоносные зависимости в npm. По данным SafeDep, актуальная версия imgdecode загружает и расшифровывает полезную нагрузку, а затем внедряет её в процесс dllhost.exe.

В npm нашли пакет imgdecode со скрытым загрузчиком вредоносного кода для Windows

В реестре npm обнаружили вредоносный пакет imgdecode, в котором загрузчик скрыт в скомпилированном нативном дополнении для Node.js. Исследователи SafeDep связывают его с кампанией MALFEX, нацеленной на компрометацию систем Windows через зависимости npm.

Пакет загрузил 30 сентября пользователь malfexteste8. По состоянию на момент публикации исследования он оставался доступен в npm, имел 979 скачиваний, а последней версией была 1.0.3.

Внешне imgdecode содержит всего девять строк JavaScript: они загружают DLL для Windows. Когда приложение Node.js импортирует пакет в Windows, эта библиотека пытается получить с GitHub зашифрованный shellcode, расшифровать его и внедрить в новый процесс dllhost.exe. В версиях 1.0.1 и 1.0.2 DLL также вызывала require('imgbundle'), но в версии 1.0.3 эта зависимость удалена — для работы ей больше не нужны другие пакеты MALFEX.

Как установили SafeDep, DLL представляет собой 64-битную библиотеку, собранную Microsoft Visual C++. Она проверяет, запущена ли в терминале разработчика, после чего загружает файл banner.jpg из репозитория GitHub cavecrew/proj. Из него извлекается и расшифровывается полезная нагрузка, которая затем запускается через dllhost.exe. После расшифровки библиотека прекращает работу, если первые байты данных соответствуют сигнатуре JPEG или PNG: исследователи предполагают, что так оператор может удалённо отключать загрузчик, подменив содержимое файла.

MALFEX впервые описали Checkmarx и CloudSEK. По их данным, неизвестный оператор публикует вредоносные npm-пакеты с 6 августа 2023 года. Ранее в кампании использовались пакеты cdn-img-fetch, img-to-native и native-runner: они загружали зашифрованные данные из GitHub, записывали на диск исполняемый файл на Go и запускали программу для загрузки следующего этапа атаки.

Оператор быстро заменял удалённые npm пакеты новыми. После удаления native-runner и img-to-native 28 сентября были опубликованы imgbundle и runhelper, а спустя шесть часов после удаления runhelper появился imgdecode. Версия 1.0.3 вышла 11 октября — через несколько дней после того, как npm удалил imgbundle и cdn-img-fetch.

Исследователи также обнаружили, что связанная с кампанией программа на Node.js проверяет наличие виртуальных машин, песочниц, Process Monitor и Wireshark. Затем она ищет файлы с определёнными фразами и расширениями .kdbx, .pem, .ppk и .env, а также данные в браузерах на базе Chromium.