
Detecta payloads de ataque à cadeia de suprimentos GlassWorm ao escanear extensões do VS Code, pacotes npm/PyPI e repositórios git em busca de payloads Unicode invisíveis, padrões de decodificação, marcadores C2 e IOCs maliciosos conhecidos.

Detecte payloads de ataque da cadeia de suprimentos GlassWorm em sua máquina. Escaneia extensões do VS Code, pacotes npm, pacotes Python e repositórios git.
Este scanner detecta a própria técnica de ataque — payloads invisíveis de seletores de variação Unicode, padrões de decodificação GlassWorm, indicadores de C2 e código de coleta de credenciais.
pip install glassworm-hunter
Ou com pipx:
pipx install glassworm-hunter
Escaneie seu diretório atual sem escanear extensões VS Code/Cursor:
glassworm-hunter scan --no-extensions
Escaneie um projeto específico:
glassworm-hunter scan /path/to/project
| Nível | Significado |
|---|---|
| CRÍTICO | Payload GlassWorm ativo detectado (cluster Unicode invisível no código, padrão de decodificador) |
| ALTO | IoC malicioso conhecido correspondido (IP C2, carteira, dependência de extensão em malware conhecido) |
| MÉDIO | Padrão suspeito que vale a pena revisar (eval + conteúdo dinâmico, acesso a credenciais, Trojan Source) |
| BAIXO | Informativo (densidade incomum de caracteres de largura zero, scripts de instalação suspeitos) |
glassworm-hunter scan [OPÇÕES] [CAMINHOS...]
| Opção | Padrão | Descrição |
|---|---|---|
--extensions / --no-extensions | ativado | Escanear extensões VS Code/Cursor/Codium |
--npm-scan / --no-npm-scan | ativado | Escanear node_modules |
--pip-scan / --no-pip-scan | desativado | Escanear pacotes Python site-packages |
--git / --no-git | ativado | Escanear repositórios git |
--format [console|json|sarif] | console | Formato de saída |
--output FILE | stdout | Escrever relatório em arquivo |
--severity [critical|high|medium|low] | low | Severidade mínima a relatar |
--max-file-size SIZE | 10MB | Pular arquivos maiores que isso |
--include-hidden | desativado | Escanear arquivos/diretórios ocultos |
--quiet | desativado | Suprimir saída de progresso |
--verbose | desativado | Mostrar cada arquivo sendo escaneado |
--exclude PATTERN | — | Padrões glob a excluir (repetível) |
--disable-rule RULE_ID | — | Suprimir regras de detecção específicas (repetível) |
--ioc-file FILE | — | Carregar indicadores IoC adicionais de um arquivo JSON |
Uma barra de progresso Rich é mostrada no stderr durante a varredura. Ela é suprimida automaticamente com --quiet ou --verbose. Uma linha de resumo (arquivos escaneados, descobertas, caminho de saída) é sempre impressa no stderr após a conclusão da varredura.
# Listar todos os IDs de regras de detecção (para uso com --disable-rule)
glassworm-hunter rules
# Atualizar banco de dados IoC local do GitHub (fonte padrão:
# https://raw.githubusercontent.com/afine-com/glassworm-hunter/main/data/ioc.json)
glassworm-hunter update
# Atualizar de uma fonte personalizada (ex.: servidor interno de inteligência de ameaças)
glassworm-hunter update --source https://internal.corp/ioc.json
# Forçar sobrescrita do banco de dados IoC local existente
glassworm-hunter update --force
# Imprimir versão
glassworm-hunter version
| Código | Significado |
|---|---|
| 0 | Nenhuma descoberta |
| 1 | Descobertas detectadas |
| 2 | Erro do scanner |
Saída JSON para processamento automatizado:
glassworm-hunter scan . --format json --output report.json --no-extensions
SARIF para GitHub Code Scanning:
glassworm-hunter scan . --format sarif --output results.sarif --no-extensions
Enviar SARIF para o GitHub:
- uses: github/codeql-action/upload-sarif@v3
with:
sarif_file: results.sarif
Usar códigos de saída no CI:
glassworm-hunter scan . --severity critical --no-extensions || exit 1
Excluir artefatos de build e código de fornecedor:
glassworm-hunter scan . --exclude "dist/**" --exclude "*.min.js" --no-extensions
Este scanner é totalmente offline por padrão. Ele lê apenas arquivos locais. Sem telemetria, sem contato telefônico, sem verificações automáticas de atualização. Bancos de dados de IoC são incluídos no pacote.
O único comando que faz uma requisição de rede é glassworm-hunter update, que busca o banco de dados IoC mais recente do GitHub (ou de uma URL --source personalizada). Ele nunca é chamado automaticamente.
Coloque um .glassworm.yml na raiz do seu projeto para definir padrões:
exclude:
- "*.min.js"
- "vendor/**"
- "dist/**"
disable_rules:
- zero-width-chars
severity: medium
Flags de CLI sobrescrevem valores do arquivo de configuração.
Use --ioc-file para carregar indicadores adicionais de um arquivo JSON. Isso é útil para inteligência de ameaças específica da equipe ou interna:
glassworm-hunter scan /path --ioc-file /path/to/team_ioc.json
O arquivo deve seguir o mesmo esquema de 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]"}]
}
O arquivo personalizado é mesclado sobre todas as outras camadas de IoC (codificado → empacotado → usuário ~/.glassworm/ioc.json → --ioc-file).
O scanner usa um sistema IoC de 3+1 camadas (cada camada mescla sobre a anterior, nunca remove):
data/ioc.json enviado com o pacote~/.glassworm/ioc.json, atualizado via glassworm-hunter update--ioc-file, maior prioridadeO scanner funciona no Windows. 4 testes falham a menos que você execute um prompt de comando elevado (Administrador).
MIT