В официальном реестре npm обнаружена серия из 36 вредоносных пакетов, маскирующихся под плагины для CMS Strapi. Эти пакеты используются для эксплуатации Redis и PostgreSQL, развёртывания reverse shell, кражи учётных данных и установки постоянного импланта на скомпрометированных системах. Инцидент стал очередным примером того, как атаки на цепочку поставок ПО (software supply chain attacks) превращают инфраструктуру разработки в канал доставки вредоносного кода.
Как злоумышленники маскировали вредоносные npm-пакеты под Strapi плагины
По данным компании SafeDep, каждый из обнаруженных пакетов имел идентичную структуру: всего три файла — package.json, index.js и postinstall.js. У пакетов отсутствовали описание, ссылка на репозиторий и домашняя страница, однако версия была установлена на 3.6.8, чтобы имитировать «зрелый» плагин для Strapi v3 из экосистемы сообщества.
Все вредоносные пакеты следовали единой схеме именования: префикс «strapi-plugin-« и далее слово вроде «cron», «database» или «server». Это создаёт иллюзию легитимных расширений функциональности CMS и вводит в заблуждение разработчиков, привыкших к подобным именам модулей. Важно отметить, что официальные плагины Strapi публикуются в пространстве имён @strapi/, что является ключевой характеристикой для их отличия от поддельных.
Пакеты были выгружены в npm в течение примерно 13 часов с использованием четырёх фиктивных учётных записей: «umarbek1233», «kekylf12», «tikeqemif26», «umar_bektembiev1». Такое поведение типично для кампаний, нацеленных на быстрое распространение до момента обнаружения и блокировки.
Технический разбор: postinstall-скрипты и эволюция полезной нагрузки
Использование postinstall для скрытого запуска кода
Ключевая вредоносная логика была сосредоточена в скрипте postinstall, который автоматически выполняется при выполнении команды «npm install». Такой код запускается без участия пользователя и с теми же привилегиями, что и аккаунт, выполняющий установку. В средах CI/CD, Docker-контейнерах и при запуске от root это даёт злоумышленнику очень высокий уровень доступа.
Подобный подход иллюстрирует общий риск для экосистемы npm: любой пакет с lifecycle-скриптами способен выполнять произвольный код в момент установки, превращая цепочку поставок ПО в привлекательный вектор атаки.
От агрессивной эксплуатации к скрытому закреплению
SafeDep выделяет восемь вариантов полезной нагрузки, задействованных в ходе кампании. Анализ показывает чёткую эволюцию тактики атакующего:
1. Агрессивное начало: попытки удалённого выполнения кода (RCE) через Redis и escape-атаки на Docker для выхода за пределы контейнера и захвата хостовой системы.
2. Разведка и сбор данных: после того как прямые эксплуатационные техники оказались малоэффективны, злоумышленник сместил фокус на инвентаризацию окружения, сбор системной информации и изучение конфигураций.
3. Прямой доступ к базам данных: в коде были обнаружены жёстко прописанные логины, пароли и хостнеймы для PostgreSQL, что позволило атакующему подключаться напрямую к БД, минуя приложение.
4. Закрепление и кража учётных данных: финальные версии полезной нагрузки фокусировались на установке постоянного импланта, развёртывании reverse shell и целенаправленном похищении чувствительных учётных данных.
Сочетание интереса к базам данных, фокуса на цифровых активах и наличия жёстко зашитых параметров подключения указывает на высокую вероятность того, что кампания была таргетирована против криптовалютной платформы или финтех-сервиса.
Supply chain атаки против open source: контекст и тенденции
Обнаружение вредоносных Strapi-плагинов вписывается в растущую волну supply chain атак на open source. В отчёте Group-IB от февраля 2026 года отмечается, что атаки на цепочку поставок стали «доминирующей силой, формирующей глобальный ландшафт киберугроз», поскольку позволяют злоумышленникам получать наследованный доступ к сотням организаций через доверенных поставщиков.
По данным Group-IB, репозитории пакетов, такие как npm и PyPI, превратились в приоритетные цели: используются украденные учётные данные мейнтейнеров, автоматизированные «черви» для массовой компрометации библиотек и внедрение вредоносного кода прямо в процессы сборки. В результате CI/CD-пайплайны становятся масштабными каналами распределения вредоносного ПО.
Опасность таких атак в том, что единичный локальный инцидент может быстро перерасти в масштабное кросс-граничное воздействие, затрагивая как разработчиков, так и их клиентов по всей цепочке поставок.
Рекомендации разработчикам и компаниям по защите цепочки поставок ПО
Пользователям, установившим любые из указанных пакетов, следует предположить компрометацию и немедленно: сменить все учётные данные (включая базы данных, API-ключи и секреты CI/CD), проанализировать логи на предмет подозрительной активности и заново развёрнуть критичные сервисы из доверенных образов.
Для снижения рисков supply chain атак в будущем рекомендуется:
1. Жёсткая валидация зависимостей. Проверять namespace (для Strapi — только @strapi/), репозиторий, историю версий и количество скачиваний. Избегать пакетов без описания и прозрачного происхождения.
2. Контроль lifecycle-скриптов. В чувствительных окружениях при установке зависимостей использовать режимы, блокирующие выполнение install-скриптов (например, npm install —ignore-scripts) и проводить отдельный аудит таких пакетов.
3. Использование SCA и репозиториев-зеркал. Применять инструменты анализа состава ПО (Software Composition Analysis), внутренние зеркала npm и политики allowlist/denylist для зависимостей.
4. Безопасность CI/CD и контейнеров. Минимизировать использование root внутри контейнеров, сегментировать права доступа пайплайнов и регулярно пересматривать секреты, хранящиеся в системах оркестрации.
Распространение вредоносных пакетов под видом популярных open source-плагинов демонстрирует, что каждый этап разработки и доставки ПО сегодня является потенциальной целью. Компании и индивидуальные разработчики, работающие с npm и другими экосистемами, должны относиться к выбору зависимостей так же строго, как к защите продакшн-среды: проверять доверие, контролировать исходный код и внедрять многоуровневую защиту цепочки поставок.