Червь Miasma поразил npm-пакеты Red Hat: обнаружение, ротация, замена
29 мая 2026 года самораспространяющийся червь npm поразил 7 пакетов @redhat-cloud-services. Он скрывает постоянство внутри Claude Code и VS Code. 60-секундный сценарий обнаружения, этап ротации и структурное исправление.
1 июня 2026 года исследователи поймали самораспространяющегося червя npm, который существовал с 29 мая.
Его визитной карточкой является сообщение о коммите: «Миазмы: Распространяющаяся болезнь». Скомпрометированная Red Hat
Учетная запись сотрудника GitHub отправляла вредоносные потерянные коммиты прямо в RedHatInsights
репозитории, минуя проверку кода, и семь @redhat-cloud-services пакеты
отправили полезную нагрузку для кражи учетных данных всем, кто их установил.
Две вещи делают Miasma достойным нового справочника. Он работает в preinstall крючок, так что
пожары раньше postinstall и даже отмененная установка может привести к сбою. И это растения
постоянство внутри ваших инструментов разработчика: перехватчик SessionStart в Claude Code и
tasks.json с "runOn": "folderOpen" в проектах VS Code. Удаление
node_modules ничего не делает с ними. Вот инструкция по обнаружению, повороту и замене.
Семь скомпрометированных пакетов
Каждый находится под @redhat-cloud-services объем:
vulnerabilities-clienttsc-transform-importstopological-inventory-clientsources-clientrule-componentsremediations-clientrbac-client
Шаг 1: обнаружение менее чем за 60 секунд
Три сигнала: скомпрометированный пакет в вашем дереве, артефакт персистентности в Claude Code или VS.
Код и трафик, замаскированный под вызовы api.anthropic[.]com:443/v1/api. Беги
это с любого хоста с npm и git:
Любое попадание означает, что вы переходите к шагу 2. Червь завершает сбор данных до того, как вы закончите читать рекомендательный, поэтому одного сигнала достаточно, чтобы начать вращение.
Уловка с настойчивостью — это та часть, которая кусает команды, которые убираются слишком быстро. Вы можете удалить
плохой пакет, пересобрать node_modulesи все еще имеет перехват SessionStart
~/.claude/settings.json который повторно запускает полезную нагрузку при следующем открытии Клода
Код. Аудит ~/.claude/settings.json, .vscode/tasks.json, и
.github/workflows вручную, прежде чем позвонить хозяину.
Шаг 2. Подтвердите окно публикации с помощью npm API.
Прежде чем закреплять «безопасную» версию, проверьте, когда она была опубликована. Вредоносные версии попали на
29 мая, поэтому любые публикации, датированные этим днем или позже, вызывают подозрения. Конечная точка botoi npm возвращает
измененная временная метка и список сопровождающих без npm install:
А modified временная метка или позже 2026-05-29 означает привязку к последнему известному
хороший релиз, опубликованный до этой даты, а не последний. Форма GET кэшируется в CDN, поэтому вы
можно превратить это в проверку одобрения зависимостей, которая выполняется при каждом запросе на включение.
Шаг 3: поверните, затем очистите бревна
Miasma собирает секреты GitHub Actions, токены npm, облачные учетные данные, Kubernetes и Vault. материал, ключи SSH и учетные данные Git. Rotate in that order: npm tokens stop new publishes, GitHub PAT останавливает запись в репозиторий, облачные ключи IAM останавливают утечку данных, а затем Vault и SSH. Не сначала расследуйте; поверните, затем исследуйте.
Полезная нагрузка записывает эти секреты в журналы, которые передаются в Datadog, Sentry и вашу систему обработки заявок. система. Пропускайте поля высокого риска через секретный детектор и закрывайте их, прежде чем они достигнут запрашиваемый индекс:
Шаг 4: заблокируйте следующую волну с помощью CI-охранника
Миазме нужны три вещи для вашего бегуна: скомпрометированная версия, работающий крючок жизненного цикла и файл персистентности, который он может записать. Сломай любую. Эта проверка действий GitHub отключает жизненный цикл сценарии для задания, не выполняются маркеры устойчивости Miasma, помечаются пакеты области действия Red Hat и требует подписанного происхождения в зависимости от времени выполнения:
Держать ignore-scripts включен по умолчанию и поддерживает короткий список разрешенных пакетов, которые
законная сборка (TypeScript, esbuild, Sharp). Предустановленный хук, который никогда не запускается, не может собрать данные.
что угодно.
Шаг 5: уменьшите поверхность, на которой может разместиться червь
Пакеты, которые чаще всего подвергались отравлению в волнах 2026 года, заключают в себе один сетевой вызов: клиенты API, помощники проверки и небольшие утилиты. Каждый из них является кандидатом на удаление и замену отзывной вызов HTTPS, который не запускает локальный код.
| Категория | Типичная зависимость npm | Замена HTTP | Радиус взрыва в случае нарушения |
|---|---|---|---|
| Сканирование секретов и личных данных | secretlint, пии-детектор | /v1/pii/detect |
Ротация одного ключа API |
| Метаданные пакета | Оболочки клиента реестра npm | /v1/npm/{package} |
Ротация одного ключа API |
| Проверка электронной почты | валидатор, валидатор глубокой электронной почты | /v1/email/validate |
Ротация одного ключа API |
| Проверка на нарушение | клиентские пакеты hipp | /v1/breach/check |
Ротация одного ключа API |
Ключевые выводы
-
Проверьте файлы персистентности инструментов разработчика. Миазмы прячутся в
~/.claude/settings.jsonи.vscode/tasks.json. Удаление пакета крючок не снимается. -
Закрепить по дате публикации. Все, что содержится в семи упаковках, датированных не ранее
29 мая 2026 г. вызывает подозрения. Использовать
/v1/npm/{package}чтобы подтвердить. - Поверните, прежде чем исследовать. токены npm, PAT GitHub, облачные ключи, Vault, SSH. Exfil завершается за секунды.
- По умолчанию отключите сценарии жизненного цикла. Перехватчик предварительной установки, который никогда не запускается, не может украсть что-нибудь.
- Уменьшите поверхность. Замените пакеты npm с одним вызовом на отзывный HTTP конечные точки. Нарушенный ключ умирает в одном запросе.
Ботойские экспонаты /v1/npm/{package}, /v1/pii/detect,
/v1/breach/checkи примерно 200 других одноцелевых конечных точек за одним ключом API.
при 5 запросах/мин бесплатно. Подключите их к своей книге инцидентов или подключите
MCP-сервер Клоду
Напишите код, чтобы ваш помощник запускал за вас сценарий обнаружения. Начните с
интерактивные документы.
FAQ
- Что такое атака на цепочку поставок Miasma?
- Miasma — это самораспространяющийся npm-червь, обнаруженный 1 июня 2026 года. Его первый коммит «Miasma: The Spreading Blight» датирован 29 мая 2026 года. Скомпрометированная учетная запись GitHub сотрудника Red Hat отправила вредоносные «сиротские» коммиты в репозитории RedHatInsights в обход проверки кода, а семь пакетов @redhat-cloud-services npm были опубликованы со запутанной предустановкой. перехватчик, который собирает учетные данные и распространяется на новые хосты.
- Какие пакеты были скомпрометированы?
- Семь пакетов в области @redhat-cloud-services: vulnerabilities-client, tsc-transform-imports, топологический-инвентарный-клиент, исходный клиент, компоненты правил, клиент исправлений и rbac-клиент. Если ваш файл блокировки удалил что-либо из этого после 29 мая 2026 года, считайте хост скомпрометированным и поменяйте все учетные данные, к которым он прикасался.
- Чем Miasma отличается от более ранних червей npm?
- Miasma запускается в предустановочной ловушке, поэтому она срабатывает перед постустановкой, и даже отмена установки может ее вызвать, и она обеспечивает постоянство внутри инструментов разработчика, а не только CI. Он внедряет перехватчик SessionStart в код Claude, записывает файл Tasks.json с папкой runOnOpen в проекты VS Code и генерирует уникально зашифрованную полезную нагрузку для каждого заражения, чтобы избежать сканирования сигнатур. Удаление node_modules не удаляет его.
- Что крадет червь и куда он это отправляет?
- Секреты GitHub Actions, токены npm, облачные учетные данные, материалы Kubernetes и Vault, ключи SSH и учетные данные Git. Он маскирует утечку под трафик на api.anthropic[.]com через порт 443 и возвращается к GitHub в качестве вторичного канала, поэтому фильтрация исходящего трафика на неизвестных доменах сама по себе не сможет его перехватить.
- Как одноцелевые HTTP API снижают этот риск?
- Пакет с ловушкой предварительной установки запускает произвольный код на каждой машине, на которой он устанавливается. Вызов HTTPS к специализированному API ничего не выполняет локально и блокируется отзывным ключом. Если поставщик API взломан, вы меняете один ключ. Если пакет в вашем дереве взломан, вредоносное ПО уже запущено. Обмен — это небольшая стоимость задержки при небольшом радиусе взрыва и мгновенном отзыве.
Начните разработку с botoi
150+ API-эндпоинтов для поиска, обработки текста, генерации изображений и утилит для разработчиков. Бесплатный тариф, без банковской карты.