Атака Mini Shai-Hulud на npm 2026: защита фронтенда
Предупреждение безопасности · Май 2026

Mini Shai-Hulud:
Атака на цепочку поставок npm

Практическое руководство: как работает атака, как проверить свой проект, и как защитить фронтенд от крупнейшей атаки на npm в 2026 году. 170+ пакетов скомпрометированы — вот что нужно знать.

Олег Максимов 15 мая 2026 10 мин чтения

Что произошло: хронология Mini Shai-Hulud

В конце апреля 2026 года в экосистеме npm появился новый вариант червя Shai-Hulud. Исследователи безопасности быстро окрестили его «Mini Shai-Hulud» — самораспространяющийся червь, который распространялся через доверенную инфраструктуру пакетов npm, компрометируя учётные данные разработчиков и публикуя вредоносные версии легитимных пакетов.

Атака развернулась в две волны. Первая волна (конец апреля) была нацелена на экосистему разработки SAP, скомпрометировав пакеты @cap-js/sqlite, @cap-js/postgres и mbt. Вторая волна (11–12 мая) резко расширилась: 373 вредоносных версии в 169 именах npm-пакетов, включая 42 пакета @tanstack/*, весь набор SDK @mistralai, инструменты автоматизации @uipath, а также пакеты в пространствах имён @squawk и @tallyui.

StepSecurity обнаружила атаку 11 мая в течение 30 минут. Все затронутые версии пакетов помечены как устаревшие (deprecated) на npm и теперь показывают предупреждения SECURITY. Но для разработчиков и организаций, установивших эти пакеты в период уязвимости, ущерб может быть значительным: украденные учётные данные, скомпрометированные CI/CD-пайплайны и несанкционированная публикация пакетов.

⚠️ Масштаб атаки

170+ npm-пакетов затронуто в экосистемах TanStack, Mistral AI, UiPath, Squawk, TallyUI и SAP. 404 вредоносных версии в общей сложности. Украдены: токены GitHub, токены доступа npm, облачные ключи AWS/Azure/GCP, секреты GitHub Actions и токены сервисных аккаунтов Kubernetes.

Как работает атака: технический разбор

Mini Shai-Hulud выполняет многоэтапную цепочку атаки, которая начинается в момент запуска npm install. Понимание каждого этапа помогает распознавать паттерны атаки и защищать собственные проекты.

Этап 1: Хук Preinstall

Злоумышленники модифицировали package.json легитимных пакетов, добавив скрипт preinstall:

"scripts": {
  "preinstall": "node setup.mjs"
}

npm выполняет хуки preinstall до завершения установки пакета — то есть вредоносный код запускается автоматически. Остальной исходный код пакета остаётся идентичным чистой версии, что делает поверхностный аудит кода неэффективным. Только хук установки и два добавленных файла (setup.mjs и execution.js) отличаются от легитимного релиза.

Этап 2: Загрузчик Bun

Файл setup.mjs — это небольшой загрузчик, который скачивает Bun v1.3.13 из релизов GitHub, распаковывает бинарный файл и использует Bun для выполнения основной нагрузки. Использование Bun стратегически важно — это автономная среда выполнения JavaScript, не зависящая от локальной установки Node.js, что позволяет вредоносному ПО работать в окружениях, где Node ограничен или недоступен.

Этап 3: Обфусцированная нагрузка и кража учётных данных

Файл execution.js содержит одну большую обфусцированную нагрузку, использующую собственный скремблер ctf-scramble-v2. Он проверяет, запущен ли в CI-окружении, завершает работу при обнаружении русской локали и демонизируется, чтобы продолжать работу после завершения установки.

Инструмент кражи учётных данных нацелен на широкий спектр ценных активов:

Особенно примечателен путь кражи секретов GitHub Actions: встроенный Python-помощник сканирует /proc на наличие процесса Runner.Worker, читает его память и извлекает замаскированные структуры секретов непосредственно из работающего CI-воркера — восстанавливая секреты, которые GitHub в противном случае удалил бы из логов заданий.

Этап 4: Эксфильтрация через GitHub

Mini Shai-Hulud использует сам GitHub как канал эксфильтрации. После сбора учётных данных вредоносное ПО сжимает и шифрует результаты с помощью AES-256-GCM (ключ AES обёрнут встроенным открытым ключом RSA) и отправляет зашифрованный пакет в виде JSON-файла в публичный репозиторий GitHub, созданный с использованием украденного токена. Репозитории получают рандомизированные имена в стиле «Дюны» и описание «A Mini Shai-Hulud has Appeared».

Вредоносное ПО также сканирует коммиты GitHub на наличие ключевого слова OhNoWhatsGoingOnWithGitHub, интерпретируя сообщения коммитов формата OhNoWhatsGoingOnWithGitHub:<base64> как тайники с токенами — декодируя значение base64 в токен GitHub для дальнейшего распространения.

Этап 5: Червеобразное распространение

Получив валидные токены, Mini Shai-Hulud автоматически распространяется: определяет npm-пакеты, которые жертва авторизована публиковать, внедряет свою нагрузку в эти пакеты, увеличивает патч-версию и публикует скомпрометированный релиз. Червь также пытается отправить файлы нагрузки в директории .vscode/ и .claude/, используя украденные токены GitHub Actions, с сообщением коммита chore: update dependencies и автором claude.

Этап 6: Новый путь доставки через TanStack (майская волна)

Майская волна 2026 года представила более изощрённый путь входа. Вместо явного хука preinstall вредоносные пакеты TanStack использовали опциональную зависимость, указывающую на пакет, размещённый на GitHub:

"optionalDependencies": {
  "@tanstack/setup": "github:tanstack/router#79ac49..."
}

Git-зависимость содержит скрипт prepare, который запускает полезную нагрузку. Завершающий exit 1 заставляет npm считать опциональную зависимость неудачной — вывод установки выглядит менее подозрительно, в то время как нагрузка уже выполнена.

Затронутые пакеты: на что обратить внимание

Если ваш проект использует пакеты из этих пространств имён, немедленно проверьте lockfile:

@tanstack/* @mistralai/* @uipath/* @squawk/* @tallyui/* @cap-js/* mbt

Как проверить, затронут ли ваш проект

Пошаговый чек-лист для проверки безопасности вашего проекта:

🚨 Если вы установили затронутую версию

Считайте машину разработчика или CI/CD-раннер полностью скомпрометированными. Немедленно смените: токены npm, персональные токены GitHub, секреты GitHub Actions и облачные учётные данные AWS/Azure/GCP. Проверьте всю недавнюю активность по публикации пакетов и выполнению CI/CD-воркфлоу на предмет несанкционированного доступа.

Как защитить свои фронтенд-проекты

Атаки на цепочку поставок не исчезнут. Вот практическая стратегия защиты, которую должна внедрить каждая команда разработки:

1. Зафиксируйте зависимости

2. Аудируйте скрипты жизненного цикла

3. Усильте защиту учётных данных

4. Автоматизируйте сканирование безопасности

Что это значит для владельцев бизнеса

Если вы нанимаете веб-разработчика или агентство для создания сайта, безопасность цепочки поставок теперь часть обсуждения. Mini Shai-Hulud показывает, что одна скомпрометированная зависимость может раскрыть весь ваш проект — и потенциально учётные данные вашей инфраструктуры — злоумышленникам.

На что обратить внимание при выборе разработчика или команды:

Экосистема npm — это основа современной фронтенд-разработки. Доверие к ней зарабатывается бдительностью — и эта бдительность должна быть частью профессиональной практики вашего разработчика. Когда я создаю веб-приложения для клиентов, безопасность зависимостей и регулярный npm audit встроены в процесс разработки с первого дня.

Часто задаваемые вопросы

Что такое атака Mini Shai-Hulud на npm?
Mini Shai-Hulud — это самораспространяющийся червь, заразивший экосистему npm в апреле-мае 2026 года. Он скомпрометировал более 170 пакетов — включая всю экосистему TanStack (42 пакета), SDK Mistral AI и инструменты UiPath — внедряя код для кражи учётных данных через скрипты жизненного цикла npm. Вредоносное ПО похищало токены GitHub, учётные данные npm и облачные ключи, а затем использовало их для публикации скомпрометированных версий других пакетов.
Затронул ли мой проект атака Mini Shai-Hulud?
Проверьте package-lock.json или yarn.lock на наличие пакетов @tanstack/*, опубликованных 11-12 мая 2026 года, а также любых пакетов из затронутых пространств имён: @cap-js, @uipath, @squawk, @tallyui и @mistralai. Запустите npm audit для проверки известных уязвимостей. Затронутые версии TanStack помечены как устаревшие (deprecated) на npm с предупреждениями SECURITY. Если вы установили затронутый пакет, немедленно смените все учётные данные.
Как работают атаки на цепочку поставок npm, такие как Mini Shai-Hulud?
Атаки на цепочку поставок эксплуатируют доверие разработчиков к пакетам. Mini Shai-Hulud внедрял вредоносный код через хук preinstall в npm — код, который выполняется автоматически при запуске npm install. Червь использовал Bun как среду выполнения, обфусцировал свою нагрузку, похищал учётные данные, а затем использовал украденные токены для публикации скомпрометированных версий других пакетов, создавая червеобразную цепочку распространения.
Как защитить фронтенд-проект от атак на цепочку поставок npm?
Используйте многоуровневую защиту: регулярно запускайте npm audit, включите двухфакторную аутентификацию для npm-аккаунта, проверяйте целостность lockfile (npm ci для CI/CD), фиксируйте точные версии зависимостей, аудируйте скрипты через npm install --ignore-scripts, используйте инструменты вроде Socket.dev или Snyk, разделяйте CI/CD-токены с минимальными правами. Следите за последними обновлениями веб-платформы — читайте мой обзор Google I/O 2026 для веб-разработчиков. Подробнее о моих услугах — на странице услуги веб-разработчика.
Что делать, если я установил скомпрометированный пакет?
Считайте затронутую машину полностью скомпрометированной. Немедленно смените все учётные данные: токены npm (создайте новые на npmjs.com), персональные токены GitHub, секреты GitHub Actions, облачные данные AWS/Azure/GCP. Проверьте историю публикаций пакетов на несанкционированные релизы. Просмотрите логи GitHub Actions. Удалите скомпрометированную версию и зафиксируйте безопасную.
Достаточно ли npm audit для предотвращения атак на цепочку поставок?
Нет, одного npm audit недостаточно. Он обнаруживает известные уязвимости, но не способен выявить zero-day атаки в реальном времени. Mini Shai-Hulud был обнаружен StepSecurity в течение 30 минут, но npm audit помечает пакеты только после добавления в базу рекомендаций. Сочетайте npm audit с проверкой lockfile, автоматическим сканированием зависимостей и анализом установочных скриптов. Следите за современными возможностями JavaScript — например, explicit resource management (`using`) из ES2026 помогает писать более надёжный код, менее подверженный уязвимостям, связанным с утечками ресурсов.
Как эта атака влияет на владельцев бизнеса, нанимающих веб-разработчиков?
Атаки на цепочку поставок могут скомпрометировать всё веб-приложение через одну уязвимую зависимость. Нанимайте разработчиков, которые следуют лучшим практикам: регулярный npm audit, фиксация версий, 2FA и безопасная настройка CI/CD. Подробнее о выборе разработчика читайте в руководстве как нанять веб-разработчика.
Как утечка GitHub Grafana связана с безопасностью цепочки поставок npm?
Утечка GitHub Grafana в мае 2026 года показывает, что безопасность токенов в CI/CD пайплайнах так же критична, как и безопасность зависимостей. Злоумышленник использовал неправильно настроенный pull_request_target GitHub Action для кражи привилегированного токена GitHub и скачал всю приватную кодовую базу Grafana. В то время как атака на npm использовала установочные скрипты как вектор, оба инцидента нацелены на одно и то же: учётные данные, доступные в инфраструктуре сборки и развёртывания. Вместе они демонстрируют, что защита токенов GitHub и CI/CD пайплайнов неотделима от защиты дерева зависимостей.

Безопасность — не опция, а стандарт

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

Если вы создаёте веб-приложение и хотите работать с разработчиком, который относится к безопасности как к первостепенной задаче — свяжитесь со мной. Я full-stack разработчик с более чем 20-летним опытом, и каждый проект я строю с безопасностью зависимостей, встроенной с первого дня: npm audit в CI, зафиксированные версии, 2FA везде и регулярные проверки lockfile.

Контакты

Создадим что-то надёжное

Есть проект? Помогу выбрать безопасный, современный стек технологий и реализовать его. Бесплатная первичная консультация.