Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
OreNPMGuard — Защита от атаки Shai-Hulud на цепочку поставок | Kitploit
Инструменты/GitHubGitHub/rapticore/orenpmguard
Управление индикаторами компрометации (IOC)Сканеры уязвимостейАнализ КодаАнализ вредоносных программDevSecOpsРазведка угрозБезопасность Цепочки ПоставокОбучение и ОбразованиеРеагирование на Инциденты
GitHubrapticore/orenpmguard

OreNPMGuard

Защита от атаки Shai-Hulud на цепочку поставок

1347 месяцев назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться
Репозиторий

OreNPMGuard - сканер пакетов Shai-Hulud

Версия 2.0.0 — обнаружение Shai-Hulud 2.0 и улучшенная система предотвращения

Инструмент безопасности для обнаружения скомпрометированных npm-пакетов из атак на цепочку поставок Shai-Hulud (оригинальная атака сентября 2025 года и Shai-Hulud 2.0 в ноябре 2025 года). Сканирует файлы package.json и package-lock.json для обнаружения точных установленных версий и индикаторов компрометации (IoC). Доступен как в реализации на Python, так и на Node.js с централизованной конфигурацией в YAML для простоты обслуживания.

Последнее обновление: 24 ноября 2025 г. — отслеживаются 738+ скомпрометированных пакетов с 1 291 уникальной комбинацией package@version. Теперь обнаруживает как оригинальные атаки Shai-Hulud, так и варианты Shai-Hulud 2.0.

Для сканирования в нескольких экосистемах см. ore-mal-pkg-inspector.

🔗 Связанные проекты

Для сканирования вредоносных пакетов в нескольких экосистемах (npm, PyPI, Maven, RubyGems, Go, Cargo) см.: ore-mal-pkg-inspector — комплексный сканер вредоносных пакетов с динамической аналитикой угроз.

OreNPMGuard специализируется именно на защите от атак Shai-Hulud для npm-пакетов.

🚨 Об атаках Shai-Hulud

Shai-Hulud — это самореплицирующийся червь, который начал атаковать npm-пакеты 14-15 сентября 2025 года, став первой успешной самораспространяющейся атакой в экосистеме npm и одной из самых серьёзных атак на цепочку поставок JavaScript, наблюдавшихся на сегодняшний день. Названный в честь гигантских песчаных червей из серии «Дюна» Фрэнка Герберта, этот вредоносный код развился в несколько вариантов.

Оригинальный Shai-Hulud (сентябрь 2025)

Первоначальная атака заразила более 200 npm-пакетов (согласно отслеживанию в этом инструменте), при этом у каждого пакета были затронуты несколько версий.

Shai-Hulud 2.0 (ноябрь 2025) — НОВОЕ

В ноябре 2025 года появился новый вариант со значительными изменениями:

  • 738+ скомпрометированных пакетов с 1 291 уникальной комбинацией package@version
  • 25 000+ затронутых репозиториев у ~350 уникальных пользователей
  • Новая фаза выполнения: использует preinstall-скрипты (не только postinstall)
  • Новые файлы полезной нагрузки: setup_bun.js и bun_environment.js (в дополнение к bundle.js)
  • Улучшенная устойчивость: создаёт self-hosted раннеры с именем 'SHA1HULUD' и новые шаблоны GitHub Workflow
  • Нацеленность на мультиоблако: сбор учётных данных AWS, Azure и GCP
  • Повышение привилегий в Docker: попытки получить root-доступ через привилегированные контейнеры
  • Пакеты загружены в период с 21 по 23 ноября 2025 года

Ссылка: Запись в блоге Wiz Research — Shai-Hulud 2.0

🦠 Как работает атака

Нулевой пациент: атака началась с пакета rxnt-authentication, опубликованного 14 сентября 2025 года в 17:58:50 UTC скомпрометированной учётной записью npm "techsupportrxnt".

Цепочка атаки (оригинальный Shai-Hulud):

  1. Установка: вредоносный пакет запускает postinstall-скрипт, выполняющий bundle.js (полезная нагрузка на JavaScript размером более 3 МБ)
  2. Сбор учётных данных: использует TruffleHog для поиска токенов GitHub/npm, учётных данных AWS/GCP/Azure, переменных окружения и облачных ключей, доступных через IMDS
  3. Эксфильтрация данных: создаёт публичный репозиторий "Shai-Hulud" в GitHub-аккаунте жертвы с украденными секретами в data.json (двойное base64-кодирование)
  4. Устойчивость: внедряет вредоносный GitHub Actions workflow (.github/workflows/shai-hulud-workflow.yml), который эксфильтрует секреты репозитория на webhook[.]site
  5. Миграция репозиториев: принудительно превращает приватные репозитории организаций в публичные личные репозитории с суффиксом "-migration" и описанием "Shai-Hulud Migration"
  6. Распространение червя: использует украденные npm-токены для внедрения вредоносного кода в другие пакеты, сопровождаемые жертвой, увеличивая номера версий и добавляя postinstall-хуки

Цепочка атаки (Shai-Hulud 2.0 — ноябрь 2025):

  1. Установка: вредоносный пакет запускает preinstall-скрипт, выполняющий setup_bun.js или bun_environment.js (новые файлы полезной нагрузки)
  2. Создание файлов данных: создаёт файлы cloud.json, contents.json, environment.json и truffleSecrets.json
  3. Сбор учётных данных: нацеленность на мультиоблако (AWS, Azure, GCP) с использованием официальных SDK, извлечение учётных данных из конфигурационных файлов, переменных окружения и IMDS
  4. Регистрация self-hosted раннера: регистрирует заражённую машину как self-hosted раннер с именем 'SHA1HULUD'
  5. Внедрение GitHub Workflow:
    • Создаёт .github/workflows/discussion.yaml с self-hosted раннером для доступа-бэкдора
    • Создаёт .github/workflows/formatter_*.yml для эксфильтрации секретов (затем удаляет workflow, чтобы скрыть активность)
  6. Повышение привилегий в Docker: пытается получить root-доступ через docker run --rm --privileged -v /:/host

🎯 Что похищается

  • Учётные данные разработки: GitHub PAT (ghp_*, gho_*), токены аутентификации npm
  • Облачные учётные данные: ключи доступа и токены AWS, GCP, Azure
  • API-ключи: учётные данные Atlassian, Datadog и других сервисов
  • Системная информация: переменные окружения, сведения о хосте, учётные записи пользователей
  • Исходный код: приватные репозитории, сделанные публичными или клонированные

📊 Масштаб воздействия

Оригинальный Shai-Hulud (сентябрь 2025):

  • Более 200 пакетов скомпрометировано в этой базе отслеживания (включая популярные пакеты, такие как @ctrl/tinycolor, ngx-bootstrap)
  • Скомпрометировано несколько GitHub-аккаунтов (точное количество зависит от источника отчётов)
  • Созданы публичные репозитории с меткой "Shai-Hulud Migration"
  • Разработчики потенциально затронуты через зависимости пакетов

Shai-Hulud 2.0 (ноябрь 2025):

  • 738+ скомпрометированных пакетов с 1 291 уникальной комбинацией package@version
  • 25 000+ затронутых репозиториев, созданных у ~350 уникальных пользователей
  • Более 1 000 новых репозиториев добавлялось каждые 30 минут в течение первых часов кампании
  • Затрагивает пакеты из крупных экосистем: Zapier, ENS Domains, PostHog, Postman, AsyncAPI и других
  • Кража мультиоблачных учётных данных (AWS, Azure, GCP)
  • Попытки повышения привилегий в Docker

Подтверждённая кража учётных данных (по данным анализа ~20 000 репозиториев):

  • 775 скомпрометированных токенов доступа GitHub
  • 373 раскрытых учётных данных AWS
  • 300 раскрытых учётных данных GCP
  • 115 раскрытых учётных данных Azure

⚠️ Предупреждение об эксфильтрации между жертвами

КРИТИЧНО: Wiz Research подтвердила, что происходит эксфильтрация между жертвами. Это означает:

  • Украденные секреты одной жертвы могут быть опубликованы в репозиториях, принадлежащих другой, не связанной жертве
  • Если вы обнаружили подозрительные данные в своих GitHub-репозиториях, они могут принадлежать другому скомпрометированному пользователю
  • Ваши данные могли быть эксфильтрованы в репозитории, которые вам не принадлежат
  • Это усложняет атрибуцию и реагирование на инциденты

Вывод для расследования: при проверке эксфильтрованных данных в своих репозиториях убедитесь, принадлежат ли эти данные вашей организации или другой жертве.

🔗 Связь с предыдущими атаками

Эта атака напрямую связана с августовской 2025 года компрометацией s1ngularity/Nx, где кража токенов GitHub позволила провести более масштабную атаку на цепочку поставок. Многие первые жертвы Shai-Hulud были известными жертвами атаки s1ngularity. Исследователи безопасности также отмечают интеграцию контента, созданного ИИ, в рамках кампании: со средней степенью уверенности можно утверждать, что для генерации вредоносного bash-скрипта использовалась LLM.

📅 Хронология атаки

Кампания оригинального Shai-Hulud:

  • 26 августа 2025 года: происходит компрометация s1ngularity/Nx (атака-предшественник)
  • 14 сентября 2025 года, 17:58 UTC: опубликован первый вредоносный пакет rxnt-authentication («нулевой пациент»)
  • 15 сентября 2025 года: атака обнаружена и сообщена исследователями безопасности
  • 15-16 сентября 2025 года: червь быстро распространяется по экосистеме npm
  • 16 сентября 2025 года: подтверждена компрометация более 180 пакетов
  • 17 сентября 2025 года: продолжающиеся усилия по мониторингу и очистке
  • 18 сентября 2025 года: выпуск v1.2.0 с отслеживанием 200 пакетов и улучшенными инструментами предотвращения

Кампания Shai-Hulud 2.0:

  • 21-23 ноября 2025 года: вредоносные пакеты загружены в реестр npm
  • 24 ноября 2025 года: атака обнаружена и сообщена Wiz Research и Aikido
  • 24 ноября 2025 года: выпуск v2.0.0 с отслеживанием 738+ пакетов и возможностями обнаружения Shai-Hulud 2.0
  • Продолжается: GitHub продолжает удалять репозитории, созданные злоумышленником; злоумышленник продолжает создавать новые репозитории

Быстрый старт

Предварительные требования

  • Сканер на Python: требует PyYAML (pip install pyyaml)
  • Сканер на Node.js: требует js-yaml (npm install js-yaml)

Сканер на Python

root@kitploit:~
# Make executable
chmod +x shai_hulud_scanner.py

# Scan single package.json
python3 shai_hulud_scanner.py ./package.json

# Scan package-lock.json for exact versions
python3 shai_hulud_scanner.py ./package-lock.json

# Scan entire project directory
python3 shai_hulud_scanner.py ./my-project

# Scan current directory
python3 shai_hulud_scanner.py .

Сканер на Node.js

root@kitploit:~
# Install dependencies first
npm install

# Make executable
chmod +x shai_hulud_scanner.js

# Scan single package.json
node shai_hulud_scanner.js ./package.json

# Scan package-lock.json for exact versions
node shai_hulud_scanner.js ./package-lock.json

# Scan entire project directory
node shai_hulud_scanner.js ./my-project

# Scan current directory
node shai_hulud_scanner.js .

Что делает сканер

✅ Обнаружение точных совпадений: определяет пакеты с точным совпадением версий с известными скомпрометированными версиями

⚠️ Обнаружение потенциального риска: помечает пакеты с тем же именем, но другими версиями (всё ещё могут находиться в зоне риска)

🔍 Поддержка двух файлов: сканирует как package.json (объявленные зависимости), так и package-lock.json (точные установленные версии)

📦 Полное покрытие: сканирование package-lock.json включает вложенные зависимости и транзитивные пакеты

🔄 Рекурсивное сканирование: автоматически сканирует все подкаталоги, пропуская node_modules

📋 Подробная отчётность: показывает имена пакетов, версии, разделы зависимостей и затронутые версии

🔎 Обнаружение IoC: определяет индикаторы компрометации как для оригинального Shai-Hulud, так и для Shai-Hulud 2.0:

  • Оригинальный Shai-Hulud: хуки "postinstall": "node bundle.js", файлы bundle.js, shai-hulud-workflow.yml
  • Shai-Hulud 2.0: хуки "preinstall", файлы setup_bun.js, bun_environment.js, workflow discussion.yaml, formatter_*.yml
  • Общее: упоминания конечных точек эксфильтрации webhook.site, шаблоны раннеров SHA1HULUD, повышение привилегий в Docker

Примеры вывода

🚨 Критично (обнаружены скомпрометированные пакеты):

root@kitploit:~
🚨 CRITICAL: Found 2 CONFIRMED compromised packages:
   • @ctrl/deluge v7.2.2 in dependencies
     Affected versions: 7.2.2, 7.2.1
   • ngx-bootstrap v19.0.3 in devDependencies
     Affected versions: 18.1.4, 19.0.3, 20.0.4, 20.0.5, 20.0.6, 19.0.4, 20.0.3

⚠️ Предупреждение (несоответствие версий):

root@kitploit:~
⚠️ WARNING: Found 1 packages with different versions:
   • @ctrl/deluge v7.2.0 in dependencies
     Known affected versions: 7.2.2, 7.2.1

✅ Чисто:

root@kitploit:~
✅ No affected packages found

Если обнаружены скомпрометированные пакеты

НЕМЕДЛЕННЫЕ ДЕЙСТВИЯ:

  1. Остановите всю работу по разработке над затронутыми проектами
  2. Удалите скомпрометированные пакеты: npm uninstall <package-name>
  3. Очистите кэш npm: npm cache clean --force
  4. Удалите node_modules: rm -rf node_modules

РОТАЦИЯ УЧЁТНЫХ ДАННЫХ:

  1. Персональные токены доступа GitHub
  2. Токены аутентификации npm
  3. SSH-ключи
  4. API-ключи (AWS, Atlassian, Datadog и т.д.)

РАССЛЕДОВАНИЕ:

  1. Проверьте GitHub на наличие публичных репозиториев с названием "Shai-Hulud" или с описанием "Shai-Hulud"
  2. Ищите репозитории с суффиксом "-migration" (оригинальный Shai-Hulud)
  3. Просмотрите журналы аудита GitHub на предмет несанкционированного создания репозиториев
  4. Проверьте наличие веток с именем shai-hulud
  5. Сканируйте на наличие IoC (индикаторов компрометации):
    • Оригинальный Shai-Hulud:
      • Ищите "postinstall": "node bundle.js" в файлах package.json
      • Ищите файлы bundle.js (размер более 3 МБ, содержат вредоносную полезную нагрузку)
      • Проверяйте файлы .github/workflows/shai-hulud-workflow.yml
    • Shai-Hulud 2.0:
      • Ищите "preinstall"-хуки в файлах package.json
      • Ищите файлы полезной нагрузки setup_bun.js и bun_environment.js
      • Проверяйте наличие файлов данных: cloud.json, contents.json, environment.json, truffleSecrets.json

Конфигурация

Данные о пакетах централизованы в affected_packages.yaml. Чтобы добавить новые скомпрометированные пакеты:

  1. Отредактируйте affected_packages.yaml
  2. Добавьте записи в формате:
    root@kitploit:~
    - name: "package-name"
      versions: ["1.0.0", "1.0.1"]
    
  3. И сканер на Python, и сканер на JavaScript автоматически используют обновлённые данные

Такой централизованный подход устраняет необходимость обновлять несколько файлов при обнаружении новых угроз.

Варианты развёртывания

Для команд безопасности

root@kitploit:~
# Create central scanning script
curl -O https://your-domain.com/shai_hulud_scanner.py
chmod +x shai_hulud_scanner.py

# Mass scan multiple projects
for dir in /projects/*/; do
    echo "Scanning $dir"
    python3 shai_hulud_scanner.py "$dir"
done

Интеграция с CI/CD

root@kitploit:~
# GitHub Actions example
- name: Scan for Shai-Hulud packages
  run: |
    curl -O https://your-domain.com/shai_hulud_scanner.js
    npm install js-yaml
    node shai_hulud_scanner.js .
    if [ $? -ne 0 ]; then
      echo "SECURITY ALERT: Compromised packages detected!"
      exit 1
    fi

Корпоративное развёртывание

root@kitploit:~
# Add to security toolkit
cp shai_hulud_scanner.py /usr/local/bin/
cp shai_hulud_scanner.js /usr/local/bin/
cp affected_packages.yaml /usr/local/bin/

# Create alias for easy access
echo 'alias scan-shai="python3 /usr/local/bin/shai_hulud_scanner.py"' >> ~/.bashrc

Технические примечания

  • Целевые платформы: Linux, macOS и Windows (Shai-Hulud 2.0 добавляет поддержку Windows)
  • Размер полезной нагрузки: минифицированный JavaScript-бандл размером более 3 МБ (оригинальный), новые полезные нагрузки в Shai-Hulud 2.0
  • Самораспространение: первый успешный самореплицирующийся червь в экосистеме npm
  • Фазы выполнения: оригинал использует postinstall, Shai-Hulud 2.0 использует preinstall (повышает подверженность риску в средах сборки)
  • Зависимости: Python требует PyYAML, Node.js требует js-yaml
  • Безопасность: операции только для чтения, никаких изменений ваших файлов
  • Быстрый: оптимизирован для быстрого сканирования больших кодовых баз
  • Точный: основан на официальных списках IoC от исследователей безопасности (Wiz Research, Aikido)
  • Компоненты, созданные ИИ: исследователи безопасности со средней степенью уверенности полагают, что LLM использовалась для генерации частей вредоносного bash-скрипта
  • Механизмы устойчивости:
    • Оригинал: GitHub Actions workflow, вредоносные ветки и миграции репозиториев
    • Shai-Hulud 2.0: self-hosted раннеры, workflow на основе обсуждений, formatter-workflow
  • Облачная интеграция:
    • Оригинал: нацелен на среды AWS и GCP с использованием библиотек SDK и конечных точек IMDS
    • Shai-Hulud 2.0: нацеленность на мультиоблако (AWS, Azure, GCP) с официальными SDK, выгрузка секретов из менеджеров секретов

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

Оригинальный Shai-Hulud (сентябрь 2025):

  • Вредоносный postinstall-хук: "postinstall": "node bundle.js" в package.json
  • Файл полезной нагрузки: bundle.js (обычно минифицированный JavaScript размером более 3 МБ)
  • Конечная точка эксфильтрации: упоминания доменов webhook.site
  • GitHub workflow: .github/workflows/shai-hulud-workflow.yml для устойчивости
  • Именование репозиториев: репозитории с суффиксами "Shai-Hulud" или "-migration"
  • Индикаторы веток: ветки с именем shai-hulud, содержащие вредоносные коммиты

Shai-Hulud 2.0 (ноябрь 2025):

  • Вредоносный preinstall-хук: "preinstall": "node setup_bun.js" или "preinstall": "node bun_environment.js" в package.json
  • Новые файлы полезной нагрузки: setup_bun.js, bun_environment.js (в дополнение к bundle.js)
  • Файлы данных: cloud.json, contents.json, environment.json, truffleSecrets.json
  • GitHub workflow:
    • .github/workflows/discussion.yaml (с runs-on: self-hosted и RUNNER_TRACKING_ID: 0)
    • .github/workflows/formatter_*.yml (сопоставление по шаблону, используется для эксфильтрации секретов)

Общее для обоих вариантов:

  • Конечная точка эксфильтрации: упоминания доменов webhook.site
  • Именование репозиториев: репозитории с "Shai-Hulud" в названии или описании

📚 Документация

  • Примечания к выпуску v1.2.0 — полный журнал изменений и новые функции
  • Оценка безопасности — всесторонний анализ безопасности
  • Руководство по предотвращению — 490+ строк инструкций по интеграции
  • GitHub Actions Workflow — автоматическая защита CI/CD

🛡️ Новое в v2.0.0

Обнаружение Shai-Hulud 2.0

  • Обнаружение preinstall-хуков: обнаруживает preinstall-скрипты (фаза выполнения Shai-Hulud 2.0)
  • Обнаружение новых файлов полезной нагрузки: ищет setup_bun.js и bun_environment.js
  • Обнаружение файлов данных: определяет cloud.json, contents.json, environment.json, truffleSecrets.json
  • Сканирование GitHub workflow: обнаруживает шаблоны workflow discussion.yaml и formatter_*.yml
  • Обнаружение self-hosted раннеров: определяет регистрации раннеров 'SHA1HULUD'
  • Обнаружение повышения привилегий в Docker: ищет шаблоны выполнения привилегированных контейнеров
  • Обратная совместимость: продолжает обнаруживать индикаторы оригинального Shai-Hulud (сентябрь 2025)

Расширенная база данных пакетов

  • 738+ скомпрометированных пакетов отслеживается (по сравнению с 200)
  • 1 291 уникальная комбинация package@version в базе данных
  • 25 000+ затронутых репозиториев идентифицировано
  • ~350 уникальных пользователей скомпрометировано

Улучшенный набор средств предотвращения (начиная с v1.2.0)

  • Многоформатные конфигурации: JSON, YAML, CSV для различных сценариев использования
  • Интеграция с GitHub Actions: автоматизированный блокирующий workflow для CI/CD
  • Автономный блокирующий скрипт: prevention/block-shai-hulud.sh
  • Инструменты синхронизации пакетов: автоматические обновления аналитики угроз

Улучшенные возможности обнаружения

  • Сканирование IoC как для оригинального варианта, так и для Shai-Hulud 2.0
  • Категоризация серьёзности (Critical/High/Medium) с определением варианта
  • Расширенная аналитика угроз с количеством загрузок и векторами атак
  • Обнаружение мультиоблачных учётных данных: шаблоны нацеливания на AWS, Azure, GCP

Поддержка

По вопросам и проблемам:

  • Группа безопасности: [email protected]
  • Разработка: [email protected]
Скачать инструмент
  • Выгрузка облачных секретов: использует аутентифицированные сессии для выгрузки секретов из AWS Secrets Manager, Google Secret Manager и Azure Key Vault
  • Создание репозиториев: создаёт репозитории с описанием "Shai-Hulud" для эксфильтрации
  • Проверяйте .github/workflows/discussion.yaml (с self-hosted раннером)
  • Проверяйте файлы .github/workflows/formatter_*.yml
  • Проверяйте имя раннера 'SHA1HULUD' в workflow
  • Ищите команды повышения привилегий в Docker (docker run --rm --privileged -v /:/host)
  • Общее:
    • Проверяйте упоминания webhook.site в коде или сетевых журналах
    • Просмотрите регистрации self-hosted раннеров
    • Проверьте учётные данные облачных провайдеров и доступ к менеджерам секретов
  • Self-hosted раннер: раннер с именем 'SHA1HULUD', зарегистрированный на заражённых машинах
  • Повышение привилегий в Docker: команды вида docker run --rm --privileged -v /:/host
  • Описания репозиториев: репозитории с описанием "Shai-Hulud"
  • Нацеленность на мультиоблако: попытки доступа к AWS Secrets Manager, Google Secret Manager, Azure Key Vault
  • Конечная точка эксфильтрации: упоминания доменов webhook.site (как и в оригинале)