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

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

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

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

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

Категории

Все категории
Loading categories
Package-Inferno — Публичный сканер пакетов для сообщества | Kitploit
Инструменты/GitHubGitHub/mhaggis/package-inferno
Статический анализСканеры уязвимостейБезопасность контейнеровАнализ вредоносных программБезопасность облачных средDevSecOpsОбнаружение СекретовРазведка угрозБезопасность Цепочки Поставок
GitHubmhaggis/package-inferno

Package-Inferno

Публичный сканер пакетов для сообщества

133148 месяцев назадЕщё не проверено
Репозиторий

Популярное

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

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

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

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

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

PackageInferno

PackageInferno Logo

Молниеносно простой, Docker‑ориентированный сканер цепочки поставок npm. Один файл compose запускает:

  • Enumerator → строит очередь пакетов
  • Fetcher → загружает tar-архивы (и опционально выгружает в S3)
  • Analyzer → статический анализ + опционально YARA
  • Postgres → локальная БД для результатов
  • Streamlit Dashboard → визуализация результатов на http://localhost:8501

Это версия только для контейнеров. Проект можно масштабировать с помощью EC2, SQS и RDS. Большая часть инфраструктуры уже подготовлена в наборе инструментов.


Что вы получаете

  • Сквозной конвейер в Docker (никаких установок на хост, кроме Docker)
  • Настраиваемые правила через scan.yml (белые списки, пороги, YARA)
  • Локальная схема Postgres + история сканирований (scan_runs) готова к работе
  • Опциональная выгрузка в S3 для tar-архивов и результатов (учётные данные через ~/.aws)
  • Streamlit dashboard: поиск, детализация и аналитика

Содержание

  • docker-compose.yml – сервисы: db, enumerator, fetcher, analyzer, dashboard, init-db
  • enumerator/ – Node-воркер, строящий NDJSON-очередь
  • fetcher/ – Node-воркер, загружающий tar-архивы (+ выгрузка в S3, если включено)
  • analyzer/ – Python-анализатор статики (+ опциональный YARA inline)
  • dashboard/ – Streamlit-приложение (порт 8501)
  • infra/migrations.sql – основная схема БД (packages, versions, findings, scores, indexes)
  • infra/20251106_scan_runs.sql – таблица истории сканирований
  • scan.yml – конфигурация анализа (правила, оценка, белые списки, YARA)
  • scripts/run_pipeline.sh – запуск enumerate → fetch → analyze
  • scripts/init_db.sh – инициализация схемы БД
  • scripts/test_setup.sh – автоматическая проверка установки
  • SCANNING_GUIDE.md – подробные стратегии сканирования и примеры

Быстрый старт (локально)

Предварительные требования: Docker Desktop (или движок) с Compose v2.

Установка в одну строку

curl -fsSL https://raw.githubusercontent.com/MHaggis/Package-Inferno/main/install.sh | bash

Клонирует репозиторий в ~/package-inferno и выводит инструкции для начала работы.

Вариант A: Использовать предварительно собранные образы (самый быстрый)

Загрузите и запустите предварительно собранные контейнеры из GitHub Container Registry:

# Клонируйте репозиторий (для конфигурационных файлов и скриптов)
git clone https://github.com/MHaggis/Package-Inferno.git
cd Package-Inferno

# Запустите с предварительно собранными образами
docker compose -f docker-compose.ghcr.yml up -d db
./scripts/init_db.sh
SEEDS="lodash,express" docker compose -f docker-compose.ghcr.yml run --rm enumerator
docker compose -f docker-compose.ghcr.yml run --rm fetcher
docker compose -f docker-compose.ghcr.yml run --rm analyzer

Доступные образы:

  • ghcr.io/mhaggis/package-inferno/enumerator:main
  • ghcr.io/mhaggis/package-inferno/fetcher:main
  • ghcr.io/mhaggis/package-inferno/analyzer:main

Вариант B: Сборка из исходников

Автоматическая проверка установки

Запустите тестовый скрипт для проверки установки:

./scripts/test_setup.sh

Он выполнит:

  • ✓ Проверит Docker и Docker Compose
  • ✓ Запустит и инициализирует базу данных
  • ✓ Проведёт тестовое сканирование (2 пакета)
  • ✓ Проверит, что результаты сохраняются корректно

Ручная настройка

  1. Запустите Postgres и инициализируйте схему:
docker compose up -d db
./scripts/init_db.sh
  1. Запустите конвейер:
./scripts/run_pipeline.sh
  1. Запустите dashboard:
docker compose up -d dashboard
# откройте http://localhost:8501

Результаты попадают в ./out/findings/*.findings.json и в таблицу findings при включённой БД.


Режимы сканирования

PackageInferno поддерживает несколько стратегий сканирования в зависимости от ваших целей:

РежимСценарий использованияСкоростьОхватКоманда
Конкретные seedsТестирование/анализ известных пакетовСамый быстрыйЦелевойSEEDS="pkg1,pkg2"
Небольшая партияПроверка настройки, пробное сканированиеБыстрый10-100 пакетовMAX_CHUNKS=2 CHUNK_LIMIT=10
Полный реестрКомплексный аудит цепочки поставокЧасы-дни2M+ пакетовMAX_CHUNKS=0 CHUNK_LIMIT=100
Лента измененийМониторинг новых релизов (включено автоматически)Реальное времяПоследние обновленияВстроено

1. Сканирование конкретных пакетов (рекомендуется для тестирования)

Укажите конкретные пакеты для анализа:

# Одной командой с seeds
export SEEDS="lodash,express,axios"
./scripts/run_pipeline.sh

# Или из файла
echo -e "react\nvue\nangular" > packages.txt
export SEEDS_FILE=packages.txt
./scripts/run_pipeline.sh

Как я тестировал изначально: Использовал SEEDS="is-odd,is-even" для быстрой проверки.

2. Сканирование из реестра npm (_all_docs)

Сканируйте пакеты с постраничной загрузкой из реестра npm:

# Очистите предыдущие запуски
rm -rf downloads/* out/*

# Сканировать 2 страницы по 10 пакетов (20 пакетов)
export MAX_CHUNKS=2        # Количество страниц
export CHUNK_LIMIT=10      # Пакетов на страницу
unset SEEDS                # Важно: отключить режим seeds

# Запустите каждый шаг отдельно для лучшей видимости
docker compose run --rm enumerator  # Обнаруживает и ставит в очередь
docker compose run --rm fetcher     # Загружает tar-архивы
docker compose run --rm analyzer    # Сканирует на угрозы

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

config: chunkLimit=10, maxChunks=2
checking recent changes feed...
changes feed: enqueued 2 new versions
enumerating via _all_docs (fresh scan)
page 1/2 count: 10
page 2/2 count: 10
done, enqueued 22 (22 new versions)

3. Непрерывный мониторинг (неограниченное сканирование)

Сканируйте весь реестр npm:

export MAX_CHUNKS=0        # 0 = неограниченно
export CHUNK_LIMIT=100     # Увеличенные партии для эффективности
./scripts/run_pipeline.sh

Предупреждение: Это будет выполняться часами/днями и просканирует сотни тысяч пакетов. Следите за дисковым пространством и размером базы данных.

4. Возобновление прерванных сканирований

Enumerator сохраняет состояние в ./out/enumerator_state.json с позицией курсора:

{
  "last_seq": "0",
  "last_startkey": "package-name",
  "last_run": "2025-11-23T19:24:49.123Z",
  "last_processed": 22,
  "last_new": 22
}

Просто перезапустите конвейер, и он возобновит с последнего курсора:

./scripts/run_pipeline.sh  # Автоматически возобновляет

Чтобы принудительно начать новое сканирование:

rm -f out/enumerator_state.json
./scripts/run_pipeline.sh

Пример результатов сканирования

Из двухстраничного сканирования 22 пакетов, вот что обнаружил PackageInferno:

-- Лучшие подозрительные пакеты по баллам
SELECT p.name, s.score, s.label, COUNT(f.id) as findings 
FROM packages p 
JOIN versions v ON p.id = v.package_id 
JOIN scores s ON v.id = s.version_id 
LEFT JOIN findings f ON v.id = f.version_id 
GROUP BY p.name, s.score, s.label 
ORDER BY s.score DESC;

-- Результаты:
   name                | score | label      | findings
-----------------------+-------+------------+----------
 rendition             | 606   | malicious  | 153
 vs-deploy             | 454   | malicious  | 119
 --123hoodmane-pyodide | 213   | malicious  | 46

Почему rendition оказался таким подозрительным?

  • 57 × url_outside_allowlist - Домены не из белого списка
  • 46 × suspicious_pattern - Шаблоны оболочки/eval
  • 12 × advanced_obfuscation - Hex-кодирование, XOR, строковые массивы
  • 6 × big_base64_blob - Большие закодированные полезные нагрузки
  • 18 × url_in_code - Встроенные URL
Скачать инструмент