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-пакетами — наглядная иллюстрация этого тренда: точечная, хорошо подготовленная операция против конкретной цели, спрятанная в толще пакетного реестра, которым пользуются миллионы разработчиков.


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

19819Темнота быстрее света, толстеющие медведи и боль омаров 19818Китайские фотографы, придумавшие визуальный образ Индонезии 19817В Луксоре нашли стелу с римским императором в образе фараона 19816Экипаж Artemis II о моменте, когда земля исчезла за луной 19815Почему Луна выглядит по-разному в разных точках Земли? 19814Adobe экстренно закрыла опасную дыру в Acrobat Reader, которую хакеры использовали с... 19813Метеорный поток, рождённый из умирающего астероида 19812Когда робот пишет за тебя прощальную смс 19811Что общего у лунной миссии, толстого попугая, загадочной плащаницы и лекарства от диабета? 19810Какие снимки Artemis II уже стали иконами лунной программы? 19809Кто на самом деле хочет сладкого — вы или ваши бактерии? 19808Как рекламные данные 500 миллионов телефонов оказались в руках спецслужб? 19807Экипаж Artemis II вернулся на землю после десяти дней в космосе 19806Зелёная и коричневая луна: почему геологи Artemis II уже не могут усидеть на месте 19805Эксперты уверены в теплозащитном щите Artemis II, несмотря на проблемы предшественника
Ссылка