73 репозитория Microsoft заражены червём Miasma — он прячется внутри и ждёт своего часа

Среди жертв — компоненты Azure, демо-проекты для ИИ и библиотеки, которыми пользуются тысячи разрабов.


aemy822nbu4swquw1r4b2hsc91to9g2v.jpg

GitHub отключил доступ к 73 репозиториям Microsoft после новой волны самораспространяющейся атаки Miasma. Под удар попали проекты сразу в четырёх организациях Microsoft на GitHub: Azure, Azure-Samples, Microsoft и MicrosoftDocs. Среди затронутых репозиториев оказались компоненты Azure, примеры кода, документация и проекты из экосистемы Durable Task.

При попытке открыть один из отключённых репозиториев, Azure/azure-functions-host, GitHub показывает стандартное уведомление о блокировке доступа из-за нарушения условий сервиса. Владельцу репозитория предлагают обратиться в поддержку GitHub за дополнительной информацией. Для сторонних разработчиков это означает простую вещь: код временно недоступен, а доверять последним изменениям без отдельной проверки нельзя.

По данным OpenSourceMalware, среди затронутых проектов значатся azure-search-openai-demo-purviewdatasecurity, Connectors-NET-LSP, Connectors-NET-SDK, durabletask, durabletask-dotnet, durabletask-go, durabletask-js, durabletask-mssql, functions-container-action, homebrew-functions, llm-fine-tuning и windows-driver-docs. Полный список шире, но даже по этим названиям видно, почему инцидент вызвал тревогу. Miasma добралась не до случайных тестовых заготовок, а до репозиториев, связанных с облачными функциями, коннекторами, документацией, демонстрационными проектами для ИИ и компонентами Durable Task для разных языковых экосистем.

Особенно заметно повторное появление durabletask. В мае одноимённый пакет в PyPI уже заражали через скомпрометированный токен публикации. Тогда вредоносные версии durabletask 1.4.1, 1.4.2 и 1.4.3 загружали дополнительный модуль и пытались украсть учётные данные из AWS, Azure, Google Cloud, Kubernetes, менеджеров паролей и конфигураций разработческих инструментов. GitHub-репозиторий в том эпизоде, по данным SafeDep, не взламывали: злоумышленник собрал изменённые пакеты локально и загрузил их напрямую в PyPI через twine.

Новая блокировка тревожна именно из-за возвращения к тому же узлу. Теперь из доступа исчез не только Azure/durabletask, но и соседние проекты из экосистемы Durable Task: реализации для .NET, Go, Java, JavaScript, MSSQL, Netherite и protobuf, а также монитор Durable Functions. Исследователь Пол Маккарти, известный как 6mile, связывает новую волну с майским заражением и допускает, что использованные тогда учётные данные могли остаться у атакующих.

Miasma считают вариантом Mini Shai-Hulud , самораспространяющегося червя для атак на цепочку поставок ПО. TeamPCP опубликовала Mini Shai-Hulud в середине мая 2026 года, после чего приёмы быстро разошлись за пределы первоначального релиза. Miasma меняет детали, дорабатывает способы закрепления и распространяется через новые пакеты, репозитории и учётные записи. В последние дни кампания продолжила заражать проекты и создавать публичные репозитории, куда складывались украденные секреты.

Для таких репозиториев злоумышленники использовали несколько описаний: Miasma: The Spreading Blight, Miasma : The Spreading Blight, Miasma - The Spreading Blight и Hades - The End for the Damned. На момент публикации исходных данных GitHub содержал 13 репозиториев с описанием Hades - The End for the Damned и 82 репозитория с остальными тремя шаблонами.

Miasma не ограничивается классической схемой с заражением реестра npm. Исследователи заметили, что атакующие иногда полностью обходят npm и вносят вредоносный код прямо в исходные репозитории. Один из таких эпизодов затронул icflorescu/mantine-datatable и четыре связанных проекта: mantine-contextmenu, next-server-actions-parallel, mantine-datatable-v6 и mantine-contextmenu-v6.

В этом случае вредоносный коммит не добавлял новых зависимостей. В проект поместили исполняющий модуль размером 4,3 МБ и привязали запуск сразу к нескольким привычным инструментам разработчика: Claude Code, Gemini CLI, Cursor, VS Code и скрипту npm test. Атака срабатывает не в момент публикации пакета в npm, а позже, когда разработчик клонирует один из затронутых репозиториев и открывает код в ИИ-агенте для программирования. SafeDep описывает этот механизм как тот же многоступенчатый загрузчик Bun, только перенесённый из схемы с заражением реестра в схему с закреплением внутри исходного репозитория.

Этот ход опасен для команд, которые уже привыкли проверять package.json, lock-файлы и новые зависимости. Если коммит не добавляет пакет и не выглядит как обычное обновление зависимостей, часть защитных проверок может не сработать. Код всё равно получает точку запуска через инструменты, которым разработчик доверяет каждый день. ИИ-агент, редактор кода или тестовый скрипт превращаются в механизм для выполнения загрузчика.

Кампания не сводится к одному заражённому пакету или одному украденному токену. Miasma давит на слабое место открытой разработки: доверие к владельцу проекта, ключу публикации, учётной записи сопровождающего и привычному каналу доставки. Реестр npm или GitHub видит действие от авторизованного пользователя, подписанный пакет или изменение в легитимном репозитории. Для платформы такая активность часто похожа на обычное обновление, хотя внутри уже лежит вредоносный код.

Именно поэтому атаки на цепочку поставок ПО сложно остановить обычными фильтрами. Miasma не обязательно ищет уязвимость в GitHub или npm. Червь получает доступ к ключу, токену, рабочему процессу или учётной записи, после чего действует почти как настоящий сопровождающий проекта. Пакет публикуется через привычный механизм, репозиторий меняется через обычный коммит, а зависимые проекты получают заражённый код по тем же каналам, которым доверяли до инцидента.

Предыдущая волна уже показала, насколько быстро схема распространяется по крупным экосистемам. В начале июня Microsoft Threat Intelligence описала атаку на пакеты @redhat-cloud-services в npm: злоумышленники скомпрометировали CI/CD-цепочку RedHatInsights/javascript-clients и смогли публиковать троянизированные версии через легитимный рабочий процесс GitHub Actions с OpenID Connect . По данным Microsoft, под удар попали 32 пакета и более 90 версий. Miasma продолжает ту же линию: заражение идёт через доверенные механизмы, а не через грубый взлом конечного пользователя.

Главная опасность для разработчиков находится не только в уже отключённых репозиториях Microsoft. После блокировки нужно проверять локальные копии, форки, кэши, CI/CD-артефакты, опубликованные пакеты и секреты, которые могли попасть в окружение сборки. Если команда клонировала затронутый репозиторий, запускала тесты, открывала проект в ИИ-агенте или собирала пакет после подозрительных изменений, один только факт блокировки на GitHub не закрывает риск.

Miasma показывает, как быстро самораспространяющийся червь может переходить между реестрами пакетов, исходными репозиториями, рабочими процессами и инструментами для программирования. GitHub уже отключил доступ к 73 репозиториям Microsoft, но сама кампания живёт не в одном списке адресов. Проверять нужно цепочку целиком: токены публикации, ключи доступа, GitHub Actions , локальные окружения разработчиков, ИИ-инструменты, тестовые скрипты и пакеты, которые успели пройти через заражённые проекты.