Пакет npm MALFEX «imgdecode» маскирует загрузчик шеллкода в нативном модуле Windows

Npm Malfex кибербезопасность вредоносное по атака Windows thehackernews.com

Обнаружен вредоносный npm-пакет imgdecode в рамках кампании MALFEX. Загружен 30 сентября 2026 года, скачан 979 раз. Пакет скрывает загрузчик, крадет данные и нацелен на Windows. Изолируйте системы и смените пароли.

Исследователи в области кибербезопасности обнаружили вредоносный npm-пакет, являющийся частью недавно раскрытой кампании атаки на цепочку поставок программного обеспечения под названием MALFEX. Пакет под названием “imgdecode” был загружен в реестр пакетов 30 сентября 2026 года пользователем “malfexteste8”. На момент написания статьи он был загружен 979 раз и все еще доступен в npm. Последняя версия пакета — 1.0.3.
“npm-пакет imgdecode скрывает вредоносный загрузчик в скомпилированном Node.js аддоне”, — говорится в сообщении SafeDep SafeDep. “Его девятистрочный JavaScript-файл загружает динамически подключаемую библиотеку Windows (DLL). Когда программа Node.js вызывает require(‘imgdecode’) из консоли Windows, DLL пытается загрузить зашифрованный shellcode с GitHub. Он расшифровывает ответ и внедряет результат в новый процесс dllhost.exe”.
Впервые задокументированная как Checkmarx, так и CloudSEK, MALFEX — это название, присвоенное длительной кампании, в ходе которой неизвестный злоумышленник с 6 августа 2023 года публикует вредоносные пакеты в npm с целью компрометации систем Windows. Эти пакеты были опубликованы под пятью учетными записями npm: malfexkkj, malfex_user, malfexteste2, malfexteste3, malfexteste4.
Из восьми выявленных пакетов три действовали как загрузчики для Overlord RAT, а еще три (“cdn-img-fetch”, “img-to-native” и “native-runner”) совместно загружали и запускали похититель данных Node.js. Третий путь заражения включал использование хука postinstall для выполнения JavaScript, способного связаться с внешним сервером и получить неуказанный бинарный файл следующей стадии.
Интересно, что злоумышленник, стоящий за кампанией, похоже, реагирует на публичные раскрытия и удаления пакетов из npm, публикуя замены для “native-runner” и “img-to-native” в течение двух дней в виде “runhelper” и “imgbundle”. В тот же день была опубликована первая версия “imgdecode”. Хронология событий следующая:
Цепочка похитителя данных Node.js примечательна тем, что ни один из пакетов не имел установочного хука. Вместо этого вредоносный код запускается при загрузке “native-runner”. Пакет указывает “img-to-native” в качестве своей зависимости, которая, в свою очередь, имеет “img-to-native” в качестве зависимости.
Точная функциональность каждого из этих пакетов описана ниже:
“Runhelper“, рекламируемый как вспомогательная утилита для “запуска нативных бинарных файлов из проектов Node.js”, работает аналогично “native-runner”, поскольку предназначен для выполнения вредоносного кода. Его основная задача — найти JPG-файл (“cdn-img-fetch/.runtime/rt.jpg”), извлечь из него shellcode, скопировать его в исполняемую память и запустить с помощью Koffi, модуля Foreign Function Interface (FFI) для Node.js.
“Через шесть часов после удаления runhelper оператор опубликовал imgdecode со скомпилированной DLL для запуска shellcode”, — заявили в SafeDep. “Начиная с версии 1.0.1, DLL также загружает и расшифровывает полезную нагрузку. Версии 1.0.1 и 1.0.2 все еще вызывают require(‘imgbundle’) перед загрузкой DLL. Версия 1.0.3 удаляет эту зависимость и не требует других пакетов MALFEX”.
Как и в случае с “runhelper”, версия 1.0.0 “imgdecode” ожидает, пока “imgbundle” запишет файл по пути “cdn-img-fetch/.runtime/”, и, как только он станет доступен, считывает его содержимое в память и передает его нативному Node.js аддону для декодирования данных.
Аддон представляет собой 64-битную DLL Microsoft Visual C++ (MSVC), которая сначала проверяет, запущена ли она в терминале разработчика, а затем загружает JPG-файл (“banner.jpg”) из того же репозитория (“cavecrew/proj”), расшифровывает встроенную полезную нагрузку с помощью ключа “nif-runtime-2027” и в конечном итоге внедряет результат в “dllhost.exe”.
“После расшифровки DLL проверяет первые байты открытого текста”, — объяснили в SafeDep. “Если они соответствуют сигнатуре JPEG или PNG, DLL останавливается. Вывод: оператор может отключить загрузчик, предоставив зашифрованное содержимое, которое расшифровывается в изображение. Предоставление обычного изображения обычно приведет к сбою расшифровки до этой проверки”.
Хотя учетная запись GitHub “cavecrew” больше недоступна, снимок экрана файла изображения из Интернет-архива от 6 октября 2026 года показывает, что это тот же загрузчик на основе Go, который использовался для получения похитителя данных Node.js и инструмента удаленного доступа (“movinlike”) с адреса “104.234.65[.]75:700”.
Приложение Node.js включает файл .env, содержащий адрес командно-контрольного сервера (C2) (“104.234.65[.]75:7007”) и ключ лицензии MALFEX, что указывает на использование конструктора вредоносного ПО или системы лицензирования для создания таких полезных нагрузок.
Вредоносное ПО выполняет проверки на наличие признаков анализа, аудируя наличие виртуальных машин, песочниц и инструментов анализа, таких как Process Monitor и Wireshark, перед сбором файлов, соответствующих ключевым фразам и определенным расширениям (.kdbx, .pem, .ppk и .env), а также данных из браузеров на основе Chromium, Discord, Telegram, криптовалютных кошельков и игровых приложений (Steam, Epic Games, Riot, Battle.net, Minecraft и Ubisoft).
Он также может установить WebSocket-соединение с сервером C2, позволяя ему принимать команды для выполнения командной строки, передачи файлов, управления процессами, доступа к буферу обмена, создания снимков экрана и ввода с мыши и клавиатуры. Для обеспечения постоянства оно добавляет ключ реестра Run и создает запланированную задачу с именем “MicrosoftEdgeUpdateService”.
Разработчики, установившие любой из вышеупомянутых пакетов, должны рассматривать свои системы Windows как потенциально скомпрометированные, изолировать их, проверить на наличие записей о постоянстве, сменить учетные данные и перевести средства на новые кошельки, если в них хранились ключевые фразы.

Всегда имейте в виду, что редакции могут придерживаться предвзятых взглядов в освещении новостей.

Похожие новости: