
Обнаруживает полезные нагрузки атаки GlassWorm на цепочку поставок, сканируя расширения VS Code, пакеты npm/PyPI и git-репозитории на наличие невидимых Unicode-нагрузок, паттернов декодеров, маркеров C2 и известных вредоносных IOCs.

Обнаруживает полезные нагрузки атак на цепочку поставок GlassWorm на вашем устройстве. Сканирует расширения VS Code, пакеты npm, пакеты Python и репозитории git.
Этот сканер обнаруживает саму технику атаки — невидимые полезные нагрузки на основе селекторов вариантов Unicode, шаблоны декодировщика GlassWorm, индикаторы C2 и код сбора учетных данных.
pip install glassworm-hunter
Или с помощью pipx:
pipx install glassworm-hunter
Сканирование текущей папки без проверки расширений VS Code/Cursor:
glassworm-hunter scan --no-extensions
Сканирование конкретного проекта:
glassworm-hunter scan /path/to/project
| Уровень | Значение |
|---|
glassworm-hunter scan [OPTIONS] [PATHS...]
Во время сканирования на stderr отображается расширенный индикатор прогресса. Он автоматически подавляется при использовании --quiet или --verbose. После завершения сканирования всегда выводится сводка (сканировано файлов, находки, путь вывода).
# Вывести все идентификаторы правил обнаружения (для использования с --disable-rule)
glassworm-hunter rules
# Обновить локальную базу IOC из GitHub (источник по умолчанию:
# https://raw.githubusercontent.com/afine-com/glassworm-hunter/main/data/ioc.json)
glassworm-hunter update
# Обновить из пользовательского источника (например, внутренний сервер threat intelligence)
glassworm-hunter update --source https://internal.corp/ioc.json
# Принудительно перезаписать существующую локальную базу IOC
glassworm-hunter update --force
# Вывести версию
glassworm-hunter version
| Код | Значение |
|---|---|
| 0 | Находок нет |
| 1 | Находки обнаружены |
| 2 | Ошибка сканера |
JSON-вывод для автоматической обработки:
glassworm-hunter scan . --format json --output report.json --no-extensions
SARIF для GitHub Code Scanning:
glassworm-hunter scan . --format sarif --output results.sarif --no-extensions
Загрузка SARIF в GitHub:
- uses: github/codeql-action/upload-sarif@v3
with:
sarif_file: results.sarif
Использование кодов возврата в CI:
glassworm-hunter scan . --severity critical --no-extensions || exit 1
Исключение артефактов сборки и вендорного кода:
glassworm-hunter scan . --exclude "dist/**" --exclude "*.min.js" --no-extensions
Этот сканер по умолчанию полностью автономен. Он читает только локальные файлы. Никакой телеметрии, обратных вызовов, автоматических проверок обновлений. Базы данных IOC встроены в пакет.
Единственная команда, которая выполняет сетевой запрос — glassworm-hunter update; она загружает последнюю базу IOC из GitHub (или из пользовательского URL --source). Она никогда не вызывается автоматически.
Поместите .glassworm.yml в корень проекта, чтобы задать значения по умолчанию:
exclude:
- "*.min.js"
- "vendor/**"
- "dist/**"
disable_rules:
- zero-width-chars
severity: medium
Флаги командной строки переопределяют значения из файла конфигурации.
Используйте --ioc-file для загрузки дополнительных индикаторов из JSON-файла. Это полезно для командных или внутренних intelligence-данных:
glassworm-hunter scan /path --ioc-file /path/to/team_ioc.json
Файл должен соответствовать той же схеме, что и data/ioc.json:
{
"schema_version": "1.0",
"extensions": [{"id": "publisher.name"}],
"npm_packages": [{"name": "pkg", "malicious_versions": "1.0.0"}],
"c2_ips": [{"ip": "1.2.3.4"}],
"c2_wallets": [{"address": "..."}],
"attacker_artifacts": [{"type": "email", "value": "[email protected]"}]
}
Пользовательский файл объединяется поверх всех остальных слоёв IOC (жёстко закодированные → встроенные → пользовательские ~/.glassworm/ioc.json → --ioc-file).
Сканер использует систему из 3+1 слоёв IOC (каждый слой объединяется поверх предыдущего, никогда не удаляет):
data/ioc.json, поставляемый с пакетом~/.glassworm/ioc.json, обновляется через glassworm-hunter update--ioc-file, наивысший приоритетСканер работает в Windows. 4 теста завершаются неудачей, если не запускать командную строку с повышенными привилегиями (Администратор).
MIT
| КРИТИЧЕСКИЙ | Обнаружена активная полезная нагрузка GlassWorm (невидимый кластер Unicode в коде, шаблон декодировщика) |
| ВЫСОКИЙ | Совпадение с известным вредоносным IOC (IP C2, кошелек, зависимость расширения от известного вредоносного ПО) |
| СРЕДНИЙ | Подозрительный шаблон, требующий проверки (eval + динамическое содержимое, доступ к учетным данным, Trojan Source) |
| НИЗКИЙ | Информационный (аномальная плотность символов нулевой ширины, подозрительные скрипты установки) |
| Параметр | По умолчанию | Описание |
|---|
--extensions / --no-extensions | вкл | Сканировать расширения VS Code/Cursor/Codium |
--npm-scan / --no-npm-scan | вкл | Сканировать node_modules |
--pip-scan / --no-pip-scan | выкл | Сканировать Python site-packages |
--git / --no-git | вкл | Сканировать репозитории git |
--format [console|json|sarif] | console | Формат вывода |
--output FILE | stdout | Записать отчёт в файл |
--severity [critical|high|medium|low] | низкий | Минимальный уровень серьезности для отчёта |
--max-file-size SIZE | 10MB | Пропускать файлы больше этого размера |
--include-hidden | выкл | Сканировать скрытые файлы/папки |
--quiet | выкл | Подавить вывод прогресса |
--verbose | выкл | Показывать каждый сканируемый файл |
--exclude PATTERN | — | Шаблоны исключения (можно повторять) |
--disable-rule RULE_ID | — | Подавить определённые правила обнаружения (можно повторять) |
--ioc-file FILE | — | Загрузить дополнительные индикаторы IOC из JSON-файла |