«Песчаный червь» в коде: как саморазмножающийся червь Shai-Hulud захватил тысячи репозиториев GitHub

information security

В ноябре 2025 года мир разработки столкнулся с беспрецедентной атакой на цепочку поставок программного обеспечения. За 72 часа кампания, получившая название Shai-Hulud, скомпрометировала более 25 000 репозиториев на GitHub. На пике активности исследователи фиксировали до 1000 новых зараженных репозиториев каждые полчаса. Это нападение продемонстрировало новый уровень автоматизации и изощренности в атаках на инфраструктуру с открытым исходным кодом.

Описание

Название Shai-Hulud, отсылающее к гигантским песчаным червям из «Дюны», было выбрано не случайно. Подобно своему тезке, эта вредоносная кампания действовала с разрушительной креативностью, безостановочно распространяясь по экосистеме. Атака работала на машинной, а не человеческой скорости, демонстрируя целенаправленный и автоматизированный подход. Злоумышленникам удалось скомпрометировать пакеты, связанные с крупными доверенными организациями, включая фундаментальные библиотеки, составляющие основу экосистемы JavaScript. Используя украденные легитимные учетные данные разработчиков и доверенные каналы распространения, атакующие обеспечили быстрое и масштабное распространение через графы зависимостей.

Суть угрозы: саморазмножающийся червь для npm

Shai-Hulud представляет собой саморазмножающегося червя для менеджера пакетов npm. Его основная функция - кража учетных данных разработчиков с последующей автоматической публикацией их в открытые репозитории. Однако наиболее деструктивное поведение проявляется при попытке удаления. Любая попытка стереть червя активирует его механизм уничтожения, который злонамеренно стирает локальные файлы жертвы. Эта особенность делает его одной из самых опасных угроз, когда-либо наблюдавшихся в экосистеме npm.

Обход систем безопасности: нестандартная среда выполнения

Ключ к успеху атаки лежал в изощренном методе уклонения от систем безопасности. Большинство сканеров безопасности настроены на мониторинг подозрительной активности в среде Node.js. Зловред Shai-Hulud просто не использует Node.js. Вместо этого он приносит собственную среду выполнения, загружая и используя легитимную среду Bun. Работая вне традиционной среды Node.js и используя доверенную, но менее мониторируемую платформу, вредоносная программа остается практически невидимой для средств защиты.

Технический анализ: двухэтапная атака

Атака состоит из двух основных полезных нагрузок: "Setup_bun.js" и "Bun_environment.js". Первый скрипт отвечает за подготовку среды. Он определяет операционную систему жертвы и тихо загружает среду выполнения Bun, используя легитимные команды установки. Это обеспечивает кросс-платформенность атаки и уклонение от обнаружения.

Второй скрипт, "Bun_environment.js", исполняет основную вредоносную логику. Работая в среде Bun, он запускает сильно обфусцированный JavaScript-код. Функционал включает сбор учетных данных, кражу переменных окружения, извлечение токенов, выполнение команд и связь с инфраструктурой злоумышленников. Отделение этапа настройки среды от выполнения вредоносного кода позволяет атакующим обновлять основную нагрузку независимо.

Тактика и инструменты: от сбора данных до злоупотребления доверенными сервисами

Анализ кода показывает широкий спектр возможностей червя. Он активно собирает учетные данные для облачных сервисов, что может привести к захвату аккаунтов и дальнейшему перемещению по сети. Для сбора секретов, таких как API-ключи и токены, зловред злонамеренно использует легитимный инструмент TruffleHog, предназначенный для поиска утечек. Таким образом, защитный инструмент превращается в оружие для атаки.

Кроме того, Shai-Hulud демонстрирует высокий уровень автоматизации, способный самостоятельно развертывать и регистрировать агентов GitHub Actions Self-hosted Runner на скомпрометированных системах. Это дает атакующим долгосрочный контроль и возможность выполнять произвольный код. Весь процесс эксфильтрации данных и управления построен на злоупотреблении доверенными платформами, такими как GitHub API, что позволяет трафику вредоносной программы сливаться с легитимной активностью разработчиков.

Рекомендации по защите и удалению

Для предотвращения подобных атак эксперты рекомендуют комплексный подход. Во-первых, необходимо всегда использовать обновленное антивирусное программное обеспечение с включенной защитой в реальном времени. Во-вторых, следует проявлять осторожность с подозрительными ссылками и вложениями. Регулярный мониторинг производительности системы через диспетчер задач и наблюдение за сетевым трафиком могут помочь выявить аномальную активность на ранних стадиях. Также критически важно тщательно проверять зависимости проектов, особенно при использовании автоматических скриптов в файлах конфигурации, таких как "package.json".

В случае заражения рекомендуется перезагрузить систему в безопасном режиме с поддержкой сети и провести полное сканирование с помощью обновленного антивируса. Например, решение UltraAV детектирует данную угрозу как "Worm.Script.Shaihulud_2.0.gen". Атака Shai-Hulud стала тревожным сигналом для всего сообщества open-source, подчеркнув уязвимость цепочек поставок и необходимость повышения безопасности на каждом этапе разработки.

Индикаторы компрометации

URLs

  • https://api.github.com/repos/trufflesecurity/trufflehog/releases/latest
  • https://github.com/actions/runner/releases/download/v2.330.0

MD5

  • 207b3c83c0460d5ed9091036af2b357a
  • 4d6b9efc22ec229be58b90c7991c02dd

Github-Repo name

  • Sha1-Hulud: The Second Coming.
Комментарии: 0