36 вредоносных npm-пакетов под видом плагинов Strapi: охота на криптовалютную платформу

Координированная атака на цепочку поставок через реестр npm оказалась куда масштабнее, чем показалось на первый взгляд. 36 вредоносных пакетов, замаскированных под плагины для CMS Strapi, были нацелены на конкретную криптовалютную платформу — предположительно Guardarian. Кампания развивалась от грубой эксплуатации уязвимостей Redis и Docker до тихой разведки, кражи учётных данных из PostgreSQL и установки постоянного имплантата на продуктивном сервере.
36 вредоносных npm-пакетов под видом плагинов Strapi: охота на криптовалютную платформу
Изображение носит иллюстративный характер

Все 36 пакетов мимикрировали под зрелые community-плагины для Strapi v3, причём каждый из них указывал версию 3.6.8. Структура файлов была идентичной: package.json, index.js и postinstall.js. У пакетов отсутствовали описания, ссылки на репозитории, домашние страницы. Настоящие плагины Strapi имеют чётко определённую область видимости (scope), и это сразу бросается в глаза специалистам. Но автоматические конвейеры CI/CD, где npm install запускается с правами root, такие детали не проверяют. Именно хук postinstall запускал вредоносный код автоматически при установке — с привилегиями того пользователя, который выполнил команду.
Пакеты были загружены четырьмя подставными аккаунтами: umarbek1233, kekylf12, tikeqemif26 и umar_bektembiev1. Все 36 пакетов появились в реестре в течение 13 часов. Список включал названия от довольно убедительных (strapi-plugin-cron, strapi-plugin-database, strapi-plugin-logger) до более специфичных (strapi-plugin-guardarian-ext, целая серия strapi-plugin-nordica-), а также пакеты с узнаваемыми именами вроде strapi-plugin-advanced-uuid и strapi-plugin-blurhash.
По данным SafeDep, атака развивалась поэтапно. Начальная фаза — запись PHP веб-шелла и Node.js реверс-шелла через SSH в публичную директорию загрузок Strapi, сканирование системы на предмет секретов Elasticsearch, крипто-сид-фраз и модуля Guardarian API. Потом последовала комбинация эксплуатации Redis с побегом из Docker-контейнеров — атакующие записывали полезную нагрузку прямо на хост. Запускался Python реверс-шелл на порту 4444. Фаза разведки собирала дампы переменных окружения, конфигурации Strapi, данные Redis (команды INFO, DBSIZE, KEYS), сетевую топологию, секреты Docker/Kubernetes, файлы криптокошельков.
Особенно показательна фаза работы с PostgreSQL. Атакующие использовали жёстко прописанные учётные данные для запросов к таблицам Strapi, искали паттерны, связанные с криптовалютами: wallet, transaction, deposit и так далее. Попытки подключения к шести базам данных Guardarian говорят о том, что часть учётных данных была скомпрометирована ещё до начала этой конкретной кампании. Финальная стадия — имплантат, обеспечивающий постоянный доступ к хосту с именем «prod-strapi».
Параллельно с расследованием этого инцидента всплыла целая россыпь других атак на цепочки поставок. GitHub-аккаунт «ezmtebo» подал более 256 pull-реквестов с полезной нагрузкой для кражи учётных данных, используя 10-минутный фоновый сканер /proc и механизм pull_request_target. Верифицированная GitHub-организация «dev-protocol» была перехвачена для распространения вредоносных ботов Polymarket через тайпсквоттинг npm-пакетов (ts-bign, levex-refa, big-nunber, lint-builder) — крали ключи кошельков и открывали SSH-бэкдоры.
Досталось и экосистеме Emacs: в репозитории kubernetes-el/kubernetes-el через уязвимость Pwn Request украли GITHUB_TOKEN, после чего репозиторий был дефейснут, файлы удалены. В проекте xygeni/xygeni-action через украденные мейнтейнерские учётные данные внедрили реверс-шелл. Npm-пакет «mgc» в версиях с 1.2.1 по 1.2.4 содержал дроппер, который подтягивал Python-троян для Linux или PowerShell-вариант WAVESHAPER.V2 из GitHub Gist. Эту кампанию связывают с северокорейским кластером UNC1069, и она пересекается с атакой через Axios.
Тайпсквот-пакет «express-session-js» (подделка под популярный express-session) загружал RAT из JSON Keeper и подключался к 216.126.237[.]71 через . На PyPI пакет «bittensor-wallet» версии 4.0.2 содержал бэкдор, срабатывающий при расшифровке; данные утекали через HTTPS, DNS-туннелирование и Raw TLS на жёстко закодированный домен либо адрес, генерируемый ежедневным DGA-алгоритмом. Другой PyPI-тайпсквот — «pyronut» (подделка pyrogram) — встраивал Telegram-бэкдор со скрытыми обработчиками команд /e через библиотеку meval и /shell через subprocess.
Отдельная история — расширения VS Code. Издатель «IoliteLabs» опубликовал расширения solidity-macos, solidity-windows, solidity-linux, которые с 2018 года были неактивны, но 25 марта 2026 года получили обновление. Суммарно у них набралось 27 500 установок. Обновление принесло многоэтапный бэкдор. Расширение «KhangNghiem/fast-draft» (по данным Aikido) распространялось в злонамеренных версиях 0.10.89, 0.10.105, 0.10.106, 0.10.112, тогда как версии 0.10.88, 0.10.111, 0.10.129–135 были чистыми. Вредоносные версии разворачивали RAT и монитор буфера обмена через GitHub — судя по паттерну, под одним аккаунтом конкурировали два потока публикаций.
В февральском отчёте 2026 года Group-IB констатировала: атаки на цепочки поставок программного обеспечения стали «доминирующей силой, перекраивающей глобальный ландшафт киберугроз». Злоумышленники индустриализировали эти методы, нацеливаясь на открытое ПО, SaaS-платформы, браузерные расширения и управляемых сервис-провайдеров, создавая «самоусиливающуюся» экосистему охвата, скорости и скрытности. Случай с 36 Strapi-пакетами — наглядная иллюстрация этого тренда: точечная, хорошо подготовленная операция против конкретной цели, спрятанная в толще пакетного реестра, которым пользуются миллионы разработчиков.


Новое на сайте

19740ДНК моркови и красного коралла на туринской плащанице 19739Что нового нашёл телескоп NASA в остатках сверхновой, которую китайские астрономы... 19738Куда исчезла минойская цивилизация 1973736 вредоносных npm-пакетов под видом плагинов Strapi: охота на криптовалютную платформу 19736Fortinet экстренно латает критическую дыру в FortiClient EMS, которую уже вовсю... 19735Что за существо, похожее на червя из «дюны», обнаружили в Китае задолго до кембрийского... 19734Может ли старый препарат для трансплантации отсрочить диабет 1 типа? 19733Викторина для любителей осьминогов: что вы знаете о головоногих? 19732Почти сто пусков за плечами, но Artemis II оказался чем-то совершенно другим 19731Как китайский смог оказался связан с арктическими штормами, а мыши избавились от диабета? 19730Почему аллергия передаётся по наследству не так просто, как кажется? 19729Веб-шеллы на PHP, управляемые через куки: как злоумышленники закрепляются на серверах... 19728Как учёным впервые удалось составить полную карту нервов клитора? 19727Homo habilis: самый древний «человек», который, возможно, им не является 19726Как северокорейские хакеры взломали одну из самых популярных библиотек JavaScript
Ссылка