Реклама
Селектел, перетяжка, 22.06
Селектел, перетяжка, 22.06
Селектел, перетяжка, 22.06

144 пакета Mastra в npm скомпрометированы через взломанный аккаунт контрибьютора

Вредоносная зависимость easy-day-js запускалась при установке и устанавливала троян-стилер. Пострадали пакеты @mastra/*, включая @mastra/core с 918 тыс. загрузок в неделю.

Обложка: 144 пакета Mastra в npm скомпрометированы через взломанный аккаунт контрибьютора

Если в вашем проекте есть пакеты @mastra/* — проверьте lock-файлы и логи CI. Утром 17 июня 2026 года злоумышленники опубликовали 144 вредоносные версии в npm-пространстве имён Mastra, добавив в зависимости троянскую библиотеку.

Ключевые выводы
  • Скомпрометированы 144 пакета в пространстве имён @mastra/*, включая @mastra/core.
  • Атака шла через взломанный аккаунт бывшего контрибьютора ehindero.
  • Вредоносная библиотека easy-day-js запускалась через postinstall и устанавливала кроссплатформенный стилер.
  • npm уже откатил latest-теги и удалил вредоносные версии у ключевых пакетов.

Как прошла атака на пакеты Mastra в npm

Mastra — это open-source фреймворк на JavaScript и TypeScript для создания ИИ-приложений и агентов. Только @mastra/core скачивают более 918 тыс. раз в неделю, поэтому инцидент затронул огромное число разработчиков и CI-сред.

По данным исследователей из JFrog, SafeDep, Socket и StepSecurity, атака длилась 88 минут. Злоумышленники массово публиковали версии с добавленной зависимостью easy-day-js — клоном популярной библиотеки dayjs. Пакет появился у пользователя sergey2016 16 июня в 7:05 UTC как чистая копия, а вредоносный код был внесён 17 июня в 1:01 UTC.

При установке easy-day-js срабатывал обфусцированный postinstall-хук (скрипт, который npm запускает автоматически после установки пакета): он отключал проверку TLS, загружал вторую стадию с сервера 23.254.164[.]92, запускал её фоновым процессом и самоудалялся. Финальный троян собирал историю браузера, данные свыше 160 браузерных расширений криптовалютных кошельков и передавал их на C2-сервер 23.254.164[.]123 — сервер управления злоумышленников.

Что делать разработчикам

  • Проверить lock-файл: grep easy-day-js package-lock.json или npm ls easy-day-js.
  • Откатиться к версии, опубликованной до 17 июня 2026 года (~1:01 UTC), и зафиксировать её в зависимостях.
  • Сменить токены npm, GitHub, SSH-ключи и переменные окружения на хостах, где стоял подозрительный пакет.
  • Проверить логи сети и DNS на обращения к IoC (индикаторам компрометации): IP 23.254.164[.]92 и 23.254.164[.]123.
  • Включить проверку подписей пакетов: npm audit signatures, и в CI требовать SLSA-provenance-attestation.
Часто задаваемые вопросы
1
Как работает вредоносная зависимость easy-day-js?

easy-day-js — клон библиотеки dayjs, в который встроили вредоносный код. При установке пакета срабатывает postinstall-хук, который загружает и запускает троян-стилер.

2
Как понять, что мой проект пострадал?

Проверьте lock-файл на наличие easy-day-js и логи установок пакетов @mastra/* за 17 июня 2026 года. Также поищите в логах обращения к IP 23.254.164[.]92 и 23.254.164[.]123.

3
Что такое SLSA provenance и почему это важно?

SLSA provenance — это аттестация, которая подтверждает, что пакет собран из доверенного CI-конвейера. Её требование помогло бы отклонить вредоносные публикации, сделанные не из CI Mastra.

4
Что делать, если я установил пострадавший пакет?

Откатить версию, сменить учётные данные и токены, проверить систему на артефакты атаки и настроить проверку подписей и provenance в CI.

npm уже удалил вредоносные версии у ключевых пакетов и вернул latest-теги. Но разработчикам стоит проверить свои системы: полезная нагрузка выполняется ещё на этапе установки, до первого импорта пакета. Источник: The Hacker News.