Атака на цепочку поставки ПО: червь Miasma заражает LeoPlatform и RStreams
📋 Кратко
В конце июня 2026 года исследователи безопасности обнаружили новую волну атак червя Miasma — самораспространяющегося вредоносного ПО, которое атакует цепочку поставок через npm-реестр. Злоумышленники взломали аккаунт мейнтейнера LeoPlatform и опубликовали троянизированные версии 20 пакетов. Разбираем технические детали атаки и даём практические рекомендации по защите.
В конце июня 2026 года экосистема JavaScript-пакетов получила очередной сокрушительный удар. Исследователи безопасности из компаний Socket, StepSecurity, JFrog и SafeDep одновременно сообщили о новой волне атак червя Miasma — самораспространяющегося вредоносного ПО, которое атакует цепочку поставок через менеджеры пакетов. На этот раз жертвами стали экосистемы LeoPlatform и RStreams, а также блокчейн-проект Verana.
Атака началась 24 июня 2026 года с компрометации npm-аккаунта разработчика с ником czirker, связанного с LeoPlatform. Злоумышленники, предположительно использовавшие утёкшие учётные данные, получили токен npm и в течение нескольких секунд загрузили все вредоносные релизы. Среди пострадавших пакетов оказались leo-auth, leo-aws, leo-cli, leo-sdk, leo-streams, serverless-leo, rstreams-metrics — всего более 20 вредоносных версий.
🧬 Эволюция Miasma: от Shai-Hulud к новой волне
Miasma считается вариацией червя Shai-Hulud, исходный код которого группировка TeamPCP опубликовала в открытом доступе в мае 2026 года. Если оригинальный Shai-Hulud использовал typosquatting и postinstall-скрипты для распространения, то Miasma пошёл дальше, внедрив механизмы самопропагации и обхода двухфакторной аутентификации.
Первые сообщения о Miasma появились в июне 2026 года, когда червь скомпрометировал более 70 GitHub-репозиториев Microsoft. Однако июньская атака на LeoPlatform и RStreams стала крупнейшей операцией Miasma на сегодняшний день. Исследователи отметили, что в этой волне злоумышленники изменили способ запуска вредоноса.
binding.gyp. Загрузчик проверяет систему и, если необходимо, устанавливает рантайм Bun, после чего запускает стилер. Использование Bun вместо Node.js помогает малвари оставаться незамеченной для систем, мониторящих стандартные Node.js-процессы.
🔍 Технический разбор: как работает Miasma
Архитектура Miasma основана на принципе самораспространения через компрометированные аккаунты. В отличие от традиционных C2-серверов, червь использует сам GitHub как инфраструктуру управления: через публичные коммиты он получает команды, конфигурации и информацию о каналах для эксфильтрации данных. Это делает Miasma исключительно устойчивым к блокировке.
Механизм заражения
- Начальная компрометация: Злоумышленники получают доступ к npm-аккаунту разработчика через утёкшие учётные данные или фишинг. В случае LeoPlatform — компрометация аккаунта
czirker. - Публикация вредоносных версий: Используя токен npm, злоумышленники загружают троянизированные версии легитимных пакетов. Вредоносная нагрузка внедряется в
binding.gyp, который выполняется при установке. - Установка рантайма Bun: Загрузчик проверяет наличие Bun в системе. Если он отсутствует, червь устанавливает его, обеспечивая среду для выполнения вредоносного кода вне стандартного Node.js-процесса.
- Кража данных: Малварь собирает обширный набор конфиденциальных данных (см. ниже) и шифрует их.
- Эксфильтрация через CI/CD: Miasma создаёт workflow с названием Run Copilot в GitHub Actions, через который извлекает данные из памяти раннера и загружает собранную информацию в публичный GitHub-репозиторий, созданный через аккаунт жертвы.
- Самораспространение: Используя похищенные токены, Miasma публикует заражённые версии всех пакетов, к которым имеет доступ жертва. Это превращает заражение в эпидемию.
Какие данные похищает Miasma
Червь ориентирован на кражу учётных данных для CI/CD-пайплайнов и облачной инфраструктуры. Полный список целей включает:
- Облачные провайдеры: учётные данные AWS, Azure и Google Cloud
- CI/CD и реестры: токены GitHub и npm, токены PyPI и RubyGems, данные JFrog Artifactory
- Секреты инфраструктуры: Kubernetes-секреты, данные HashiCorp Vault, SSH-ключи, GPG-ключи
- Менеджеры паролей: данные 1Password
- Конфигурации IDE: файлы настроек сред разработки, AI-ассистентов (Claude, Gemini, Cursor, Copilot, Kiro, Cline)
- .env-файлы: переменные окружения с токенами и ключами доступа
- Docker-конфигурации: образы и настройки контейнеризации
🎯 Атака на LeoPlatform и RStreams: хронология
Атака на LeoPlatform — классический пример supply chain-атаки, в которой одна компрометация приводит к цепной реакции. Ниже — хронология событий на основе анализа SafeDep и StepSecurity:
- 24 июня 2026, ~10:00 UTC: Злоумышленники компрометируют учётную запись
czirkerна npm. Используется утёкший токен или пароль. - 24 июня 2026, ~10:05 UTC: В течение нескольких секунд через скомпрометированный аккаунт загружаются вредоносные версии 20 пакетов. Каждая версия содержит модифицированный
binding.gypс кодом загрузчика Miasma. - 24–25 июня 2026: Пользователи, устанавливающие обновления пострадавших пакетов через npm install, автоматически заражаются. Червив начинает сбор данных из CI/CD-сред.
- 26–27 июня 2026: Исследователи Socket и SafeDep обнаруживают аномалии в публикациях пакетов и начинают анализ.
- 28–29 июня 2026: Обнаружены репозитории с описанием «Alright Lets See If This Works» — более 500 совпадений. Это репозитории, созданные Miasma для эксфильтрации данных.
- 30 июня 2026: Публичное раскрытие атаки. Исследователи публикуют детали на платформах Xakep.ru и в блогах компаний безопасности.
Важная деталь: Miasma не активируется в системах, где обнаружена русская локаль. Это характерно для вредоносов, ориентированных на англоязычные и азиатские регионы, и позволяет злоумышленникам избежать внимания правоохранительных органов на домашней территории.
🔄 Механизм supply chain: как одна компрометация заражает тысячи
Miasma реализует полный цикл supply chain-атаки, превращая каждую заражённую машину в вектор распространения. Разберём этот цикл по фазам:
Фаза 1: Начальное заражение
Разработчик устанавливает или обновляет один из скомпрометированных пакетов LeoPlatform через npm install. Во время установки срабатывает код в binding.gyp, который загружает и выполняет вредоносный payload. Загрузка происходит из публичного репозитория GitHub, созданного злоумышленниками.
Фаза 2: Сбор и эксфильтрация
После запуска Miasma сканирует окружение жертвы в поисках токенов, ключей и паролей. Особое внимание уделяется переменным окружения CI/CD-систем. Для эксфильтрации червь создаёт в GitHub Actions workflow с названием Run Copilot, маскируя свою активность под легитимную работу AI-ассистента. Данные шифруются и загружаются на GitHub в виде коммитов.
Фаза 3: Обход 2FA и самопропагация
Используя похищенные токены npm, Miasma публикует троянизированные версии всех пакетов, к которым у жертвы есть доступ. Критически важно: Miasma умеет обходить двухфакторную аутентификацию npm через использование токенов автоматизации (automation tokens), которые не требуют 2FA при публикации в CI/CD. Таким образом, червь не просто крадёт данные — он активно размножается.
Фаза 4: Боковое перемещение
Miasma поддерживает перемещение внутри скомпрометированной инфраструктуры через SSH и AWS Systems Manager. Это позволяет червю проникать из среды разработчика в продакшен-окружение, серверы баз данных и другие критически важные системы. Аналитики SafeDep подтвердили, что Miasma способен внедрять вредоносные конфигурации в AI-инструменты для разработки, что делает его особенно опасным для компаний, активно использующих Copilot, Cursor и аналоги.
🛡 Методы защиты: как предотвратить заражение Miasma
Защита от supply chain-атак уровня Miasma требует комплексного подхода. Ниже — практические рекомендации, основанные на анализе атаки и рекомендациях исследователей Socket, StepSecurity и JFrog.
1. Внедрите контроль цепочки поставок
- Используйте lock-файлы — все зависимости должны быть зафиксированы через
package-lock.json,yarn.lockилиpnpm-lock.yaml. Проверяйте их целостность в CI. - Socket.dev — анализирует поведение пакетов до установки, выявляет подозрительные
binding.gypи postinstall-скрипты. - JFrog Xray — сканирует артефакты на наличие вредоносного кода и CVE.
- Избегайте публичных зависимостей — для критических пакетов используйте приватные npm-реестры (Verdaccio, GitHub Packages, AWS CodeArtifact).
2. Настройте безопасность npm-аккаунтов
- Отключите automation tokens — токены, не требующие 2FA, — основная причина, по которой Miasma обходит двухфакторную аутентификацию. Используйте granular access tokens с ограниченными правами.
- Включите 2FA для всех аккаунтов с правами публикации. Используйте аппаратные ключи (WebAuthn) вместо TOTP.
- Регулярно аудируйте токены — отзывайте неиспользуемые токены, ограничивайте срок жизни токенов.
- Мониторьте подозрительную активность — настройте алерты на неожиданные публикации пакетов, входы с новых IP, создание новых токенов.
3. Защитите CI/CD-пайплайн
- Изолируйте CI/CD от публичных реестров — используйте прокси-серверы реестров с белыми списками разрешённых пакетов.
- Проверяйте подозрительные workflow — настроите мониторинг на появление workflow с нестандартными названиями (например, «Run Copilot»).
- Используйте OpenSSF Scorecard — оценивайте безопасность практик разработки для каждого внешнего пакета.
- Ограничьте права GitHub Actions — токены в CI/CD должны иметь минимально необходимые права для конкретной задачи.
- Аудит GitHub Actions логов — проверяйте необычные паттерны эксфильтрации (публикация в подозрительные репозитории).
4. Мониторинг на уровне инфраструктуры
- Отслеживайте появление подозрительных процессов — Bun, запущенный без явной причины, может свидетельствовать о заражении Miasma.
- Мониторьте сетевую активность — необычные соединения к GitHub API, особенно из CI-окружений, должны вызывать подозрения.
- SIEM-алерты на дескриптор «Alright Lets See If This Works» — это точный индикатор заражения Miasma. При обнаружении репозитория с таким описанием — немедленное расследование.
5. Реагирование на инцидент
Если вы подозреваете заражение Miasma, действуйте по следующему протоколу:
- Отключите скомпрометированные системы от сети для предотвращения эксфильтрации.
- Отзовите все токены — npm, GitHub, AWS, Azure, GCP — немедленно.
- Проверьте GitHub Actions с названием «Run Copilot» и репозитории с описанием «Alright Lets See If This Works».
- Проведите аудит логов — проверьте Commit-активность на предмет подозрительных публикаций от имени скомпрометированного пользователя.
- Смените все пароли и ключи — с особым вниманием к HashiCorp Vault, Kubernetes-секретам и SSH-ключам.
- Сообщите в npm security — если были опубликованы вредоносные версии пакетов, запросите их депривацию.
☑ Проверьте, установлены ли пакеты LeoPlatform (leo-*) или RStreams (rstreams-*) в вашем проекте
☑ Проверьте GitHub Actions на наличие workflow «Run Copilot»
☑ Проверьте GitHub-репозитории вашей организации на описание «Alright Lets See If This Works»
☑ Отзовите npm-токены, не использующие 2FA
☑ Включите в CI сканирование postinstall/preinstall скриптов и binding.gyp-файлов
☑ Настройте мониторинг новых публикаций пакетов от ваших мейнтейнеров
⚖️ Сравнение: Miasma, Shai-Hulud, IronWorm
Для понимания масштаба угрозы стоит сравнить три wave supply chain-атак, произошедших в 2026 году:
| Характеристика | Shai-Hulud (TeamPCP) | Miasma | IronWorm |
|---|---|---|---|
| Обнаружен | Май 2026 | Июнь 2026 | Июнь 2026 |
| Язык | Python | Python + Bun | Rust |
| Метод запуска | Postinstall-скрипты npm | binding.gyp + Bun | eBPF-руткит |
| Масштаб | 636+ пакетов | 474+ публикаций | 36 пакетов |
| Жертвы | Общий npm-реестр | Red Hat, Microsoft, LeoPlatform, RStreams | Общий npm-реестр |
| Обход 2FA | Через automation tokens | Через automation tokens | Через GitHub Actions |
| C2-инфраструктура | Традиционные C2-серверы | GitHub (публичные коммиты) | Tor + GitHub |
| Проверка локали | Блокировка русской локали | Блокировка русской локали | Нет данных |
📈 Прогноз: что будет дальше
Атаки семейства Miasma показывают эволюционную тенденцию: злоумышленники переходят от точечных взломов к полностью автоматизированным supply chain-кампаниям. Можно ожидать следующих трендов во второй половине 2026 года:
- Рост числа атак через binding.gyp — этот метод сложнее обнаружить, чем postinstall-скрипты, так как он не попадает в стандартный аудит lifecycle-хуков.
- Использование альтернативных рантаймов — Bun и Deno как среда для вредоносного кода вне стандартного Node.js-процесса, что позволяет обходить сигнатурные детекторы.
- Атаки на AI-инструменты для разработки — Miasma уже внедряет конфигурации в Copilot, Cursor и Claude. Следующий шаг — компрометация цепочек поставок AI-агентов.
- Ужесточение требований npm — GitHub (владелец npm) планирует ввести обязательное подписание всех публикуемых пакетов, запрет automation tokens для критических пакетов и обязательную 2FA.
- Интеграция блокировки по локали — всё больше вредоносов будет проверять системную локаль перед активацией, усложняя анализ и сужая целевой охват.
📚 Читайте также
- Supply chain атаки через npm: защита приложений от TeamPCP в 2026
- Уязвимость в curl возрастом 25 лет: рекордные 18 CVE в релизе 8.21.0
- Автоматизация DevSecOps: как ASOC-платформы повышают безопасность приложений
- RBAC в веб-приложениях: как спроектировать безопасную ролевую модель
- Adblock for YouTube: расширение Chrome с 10 млн установок выполняет код на любых сайтах
📖 Термины
CI/CD · Container Security · Supply Chain Attack
🔗 Источники
- New IronWorm malware hits 36 packages in npm supply-chain attack — BleepingComputer
- New Shai-Hulud malware wave compromises 600 npm packages — BleepingComputer
- Исходный код червя Miasma опубликован на GitHub — Xakep.ru
- Новый червь Miasma скомпрометировал более 70 GitHub-репозиториев Microsoft
- Червь Miasma атаковал LeoPlatform и пакеты RStreams — Xakep.ru