Коротко: кампания MALFEX, описанная Checkmarx 8 октября 2026 года, работает в npm с августа 2023 года. Восемь пакетов — function-flag, function-color, cdn-img-fetch, img-to-native, native-runner, tlxbnhd, tldriver и mxdriver — набрали 40 767 загрузок. Установочные скрипты скачивают с внешних серверов файлы под видом PNG-изображений, из которых извлекается троян Overlord RAT и Node.js-стилер movinlike, ворующий токены Discord, куки браузеров, сессии Telegram и крипто-кошельки.
Что такое MALFEX
MALFEX — кодовое имя кампании, которую приписывают одному оператору: в описании заражённых пакетов встречается подпись «Malfex team, owner Murizada» на португальском языке. Компания Checkmarx опубликовала техническое исследование 8 октября 2026 года, проследив активность с августа 2023 года — атака существовала больше двух лет, прежде чем попала в публичные advisory-базы.
В npm-реестре были выявлены восемь вредоносных пакетов: function-flag, function-color, cdn-img-fetch, img-to-native, native-runner, tlxbnhd, tldriver и mxdriver. По данным Checkmarx, к 1 октября 2026 года их суммарно скачали 40 767 раз — в основном за счёт пакета function-flag.
Как вредонос прячется в PNG
Главная особенность MALFEX — доставка полезной нагрузки под видом графического файла. Исследователи зафиксировали два разных приёма маскировки под PNG:
- Первый способ. Файл выдаётся сервером как
image/png, но на деле это архив Microsoft IExpress. Внутри архива подписанный интерпретатор AutoIt запускает зашифрованный скрипт. - Второй способ. Берётся настоящий, валидный PNG-файл, а после маркера конца данных изображения дописываются дополнительные байты. Загрузчик находит этот «хвост», расшифровывает его через AES и получает исполняемый код.
Оба метода рассчитаны на то, что сканеры и фильтры трафика по умолчанию доверяют расширению и MIME-типу файла, не проверяя его структуру побайтово. С похожей логикой — спрятать код в пикселях легитимного изображения — ранее работала кампания TerminalFix, но там код записывался прямо в значения RGBA-каналов. MALFEX пошёл другим путём: PNG здесь либо полноценный вредоносный архив под чужой личиной, либо контейнер с дозаписанными данными после конца файла.
Цепочка заражения
По техническому разбору Checkmarx, атака на Windows-разработчика проходит несколько стадий:
- Установка пакета. Жертва ставит один из восьми npm-пакетов — вручную или как транзитивную зависимость. Обфусцированные скрипты
preinstall.js/postinstall.jsзапускаются автоматически при каждомnpm install. - Скачивание «картинки». Скрипт обращается к серверу
api.imghippo.comи получает файл, оформленный как PNG, а на деле — IExpress-архив с Overlord RAT. - Сохранение и запуск. Payload сохраняется на диск под именами
gldriver_pre_core.exeиgldriver_pre_asset.exe, запускается, после чего установочные скрипты самоудаляются, подчищая следы. - Process hollowing. Overlord внедряется в подписанный системный процесс
TapiUnattend.exe, подменяя родительский процесс наexplorer.exe— так вредонос выглядит легитимным для систем мониторинга. - Закрепление в системе. Создаётся задача планировщика с именем
\Maiden, которая запускаетAutoIt3.exeсо скриптомh.a3xкаждые 5 минут без ограничения по времени. Дата старта задачи намеренно указана задним числом — 1 января 2020 года, — чтобы не привлекать внимание при проверке недавно созданных задач.
Ни один из восьми пакетов не эксплуатирует уязвимость в npm или Node.js — заражение происходит исключительно через установочные скрипты (postinstall), которые npm выполняет автоматически, если их не отключить явно.
Что похищает Overlord и movinlike
Помимо RAT-функциональности, часть цепочки MALFEX устанавливает Node.js-стилер, которому исследователи дали имя movinlike. Он собирает:
Discord-токены
Позволяют захватить аккаунт жертвы без пароля — через похищенный токен сессии.
Куки и пароли браузера
Сохранённые логины и cookie-сессии из установленных на машине браузеров.
Сессии Telegram
Файлы сессии Telegram-клиента дают доступ к переписке без повторного входа.
Криптокошельки
Данные локальных кошельков — потенциальная прямая финансовая потеря.
Похищенные данные сжимаются и отправляются блоками через вебхук Discord — приём, который маскирует эксфильтрацию под обычный легитимный API-трафик мессенджера.
Кто под ударом
Основная аудитория атаки — разработчики на Windows, подключающие пакеты из npm в свои проекты вручную или через автоматическую установку зависимостей в CI/CD. Названия пакетов (function-flag, cdn-img-fetch, img-to-native, native-runner) специально подобраны так, чтобы выглядеть как служебные утилиты для работы с изображениями и сборкой — их легко принять за легитимную зависимость при беглом просмотре package.json.
Как защититься разработчику
- Отключайте автозапуск install-скриptov по умолчанию. Флаг
npm install --ignore-scriptsблокирует выполнениеpreinstall/postinstallдо ручной проверки пакета. - Проверяйте происхождение зависимости перед установкой. Малое число загрузок, недавняя публикация и обфусцированный код install-скрипта — тревожные признаки.
- Не доверяйте MIME-типу и расширению файла. Как показывает MALFEX, файл с заголовком
image/pngможет оказаться исполняемым архивом. Проверить реальную структуру скачанного файла по сигнатуре байтов, а не по расширению, можно инструментом «Определить формат файла». - Мониторьте задачи планировщика и запущенные процессы. Неизвестная задача, повторяющаяся каждые несколько минут, и процесс, замаскированный под системный, — признак закрепления вредоноса.
- Используйте lock-файлы и аудит зависимостей.
npm auditи фиксация версий черезpackage-lock.jsonснижают риск случайной установки вредоносного патча зависимости.
Общий список форматов, которыми чаще всего маскируют вредонос, собран в материале «Карта опасных расширений».
