Microsoft временно отключила десятки своих открытых проектов на GitHub: в код репозиториев попал вредонос, ворующий пароли, токены и другие учётные данные разработчиков. Массовая блокировка началась 5 июня 2026 года около 19:00 МСК — автоматика GitHub отключила 73 репозитория примерно за 105 секунд.

Офис Microsoft — компания отключила десятки открытых репозиториев на GitHubИсточник изображения — techcrunch.com

Большая часть затронутых проектов относится к облачной платформе Microsoft Azure, а также к инструментам, которые разработчики используют вместе с ИИ-ассистентами для написания кода — Claude Code, командным интерфейсом Gemini CLI, VS Code и Cursor.

Первыми тревогу подняли компания по безопасности цепочек поставок Cloudsmith и сообщество по анализу вредоносного ПО OpenSourceMalware. По их данным, зловред забирал учётные данные в момент открытия скомпрометированного репозитория в среде разработки с ИИ. Это классическая атака на цепочку поставок: удар наносится не по конечному продукту, а по коду, который используется в сотнях других продуктов.

Какие проекты попали под блокировку

Отключённые репозитории были разбросаны по нескольким организациям Microsoft на GitHub — Azure, Azure-Samples и MicrosoftDocs. Под раздачу попали:

  • хост Azure Functions и связанные с ним компоненты;
  • репозитории GitHub Actions для развёртывания приложений Azure Functions, включая Azure/functions-action;
  • практически вся экосистема Durable Task — реализации для .NET, Go, Java, JS, MSSQL, Netherite и protobuf;
  • монитор Durable Functions;
  • среды выполнения, SDK, воркеры под конкретные языки, инструменты разработчика и расширения.

При попытке открыть страницу проекта пользователи видели сухое уведомление: «Доступ к этому репозиторию был отключён сотрудниками GitHub из-за нарушения условий использования GitHub».

реклама кормит Уточку 🦆

Как устроен червь Miasma

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

Вредоносный коммит приносил в репозиторий обфусцированный файл setup.js, файлы настроек с хуками для языковых моделей Claude и Gemini, а также файл задач для Visual Studio Code. Все они были заточены под одно: запустить JavaScript через node ровно в тот момент, когда разработчик откроет проект в инструменте с ИИ.

Ключевая деталь здесь — сам механизм срабатывания. Хуки и файлы задач исполняются автоматически, без явного согласия пользователя: они задуманы как удобство (подтянуть зависимости, настроить окружение при открытии проекта), но ровно эта автоматика и превращает открытие чужого репозитория в запуск чужого кода. Раньше для заражения требовалось хотя бы собрать проект.

Дальше начиналось самое неприятное. Украв токены, Miasma пытался прописать бэкдоры в другие пакеты и репозитории, доступные из заражённого окружения. То есть компрометация одной машины разработчика могла превратиться в компрометацию десятков чужих проектов.

Отдельно стоит отметить вектор проникновения: вместо привычной подмены пакета в реестре злоумышленники заливали полезную нагрузку прямо в исходный код репозиториев. До Microsoft червь прошёлся по пространству имён @redhat-cloud-services в npm — там всё началось со взлома учётной записи сотрудника Red Hat. Через неотрецензированные orphan-коммиты в код внедрялся минимальный рабочий процесс, запрашивавший OIDC-токены GitHub. В результате пострадало более 90 версий npm-пакетов Red Hat, причём вредоносный код нёс полностью валидные подписи — сканеры, доверяющие подписанным пакетам, пропускали его без вопросов.

реклама кормит Уточку 🦆

Второй заход: старая рана открылась заново

Это уже не первое столкновение Microsoft с Miasma за последние недели. 19 мая в репозиторий PyPI в течение 35 минут были залиты три вредоносные версии пакета durabletask — официального Python-SDK для Azure Durable Task. Версии 1.4.1, 1.4.2 и 1.4.3 появились без соответствующих тегов, релизов и запусков сборки в самом репозитории. Масштаб потенциального ущерба солидный: пакет собирает порядка 417 000 загрузок в месяц.

Исследователи из Wiz, Endor Labs и StepSecurity связали ту атаку с украденными секретами GitHub Actions и всё той же группировкой TeamPCP.

Страница GitHub с уведомлением об отключении репозитория MicrosoftИсточник изображения — techcrunch.com

В OpenSourceMalware июньский инцидент называют повторной компрометацией проекта Durable Task. Логика простая: месяцем ранее пострадал репозиторий Azure/durabletask, а теперь легла вся экосистема вокруг него. В Cloudsmith считают, что учётные данные, с помощью которых злоумышленники зашли в мае, так и не были полностью отозваны и заменены. Официального подтверждения этой версии пока нет — не исключён и вариант с полностью новым, независимым взломом.

реклама кормит Уточку 🦆

Что говорит Microsoft

Компания подтвердила удаление репозиториев. Представитель Microsoft Бен Хоуп сообщил, что корпорация «временно удалила некоторые репозитории в рамках расследования потенциально вредоносного контента»: «Некоторые из этих репозиториев были восстановлены после проверки, в то время как другие могут оставаться недоступными до завершения работы».

«В рамках расследования мы уведомили небольшое количество клиентов, которые могли загрузить контент из затронутых репозиториев. Мы продолжим расследование, и если будут выявлены дополнительные действия, требующие реакции клиентов, мы свяжемся напрямую через установленные каналы поддержки», — добавил он. Точное число пострадавших пользователей компания не раскрыла. Позднее большинство репозиториев вернулись в строй.

Побочный эффект: сломанные развёртывания

Отключение репозиториев ударило по тем, кто использует затронутые GitHub Actions. Пользователи Azure/functions-action сообщали, что конвейеры развёртывания перестали запускаться — нужный экшен просто пропал. В качестве временного обходного пути Microsoft предложила разворачивать приложения через Azure CLI, Azure DevOps Pipelines, VS Code или Zip Deploy.

Эпизод наглядно показал побочный риск удобных цепочек сборки: экшен, подключённый по имени ветки, а не по конкретному хешу коммита, — это внешняя зависимость, способная исчезнуть посреди рабочего дня. Закрепление версии по хешу решает сразу обе проблемы: и подмену кода, и внезапную пропажу.

реклама кормит Уточку 🦆

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

Если за последний месяц вы забирали что-то из репозиториев Azure — особенно functions-action или durabletask — имеет смысл провести ревизию:

  • проверить уведомления GitHub на предмет писем от Microsoft о возможной загрузке заражённого контента;
  • перевыпустить все токены, которые использовались в ИИ-инструментах для написания кода: персональные токены GitHub, ключи облачных провайдеров, API-ключи;
  • проверить конфигурации проектов на посторонние файлы — обфусцированный setup.js, хуки в настройках Claude и Gemini, задачи в .vscode/tasks.json;
  • пересмотреть версии зависимостей: пакет durabletask версий 1.4.1–1.4.3 устанавливать не стоит;
  • ограничить права GitHub Actions и включить обязательное ревью для коммитов в защищённые ветки;
  • открывать незнакомые репозитории в изолированном окружении — контейнере или виртуальной машине, а не в основной рабочей системе.

Атаки на цепочку поставок бьют по разработчикам всё чаще, и главный вывод этой истории неприятен: под удар попал не одиночный сопровождающий открытого проекта, а корпорация с одной из самых мощных служб безопасности в индустрии. А связка «ИИ-ассистент плюс широкие права в окружении разработчика» превращается в новый и очень удобный для атакующих вектор — достаточно просто открыть заражённый проект.