
Détecte les payloads d'attaque de la chaîne d'approvisionnement GlassWorm en analysant les extensions VS Code, les packages npm/PyPI et les dépôts git pour les payloads Unicode invisibles, les motifs de décodeur, les marqueurs C2 et les IOC malveillants connus.

Détecter les payloads d'attaques de la chaîne d'approvisionnement GlassWorm sur votre machine. Scanne les extensions VS Code, les paquets npm, les paquets Python et les dépôts git.
Ce scanner détecte la technique d'attaque elle-même — les payloads invisibles de sélecteurs de variante Unicode, les motifs de décodeur GlassWorm, les indicateurs C2 et le code de collecte d'identifiants.
pip install glassworm-hunter
Ou avec pipx :
pipx install glassworm-hunter
Scannez votre répertoire actuel sans scanner les extensions VS Code/Cursor :
glassworm-hunter scan --no-extensions
Scannez un projet spécifique :
glassworm-hunter scan /chemin/vers/le/projet
| Niveau | Signification |
|---|
glassworm-hunter scan [OPTIONS] [CHEMINS...]
Une barre de progression Rich est affichée sur stderr pendant le scan. Elle est automatiquement supprimée avec --quiet ou --verbose. Une ligne de résumé (fichiers scannés, résultats, chemin de sortie) est toujours imprimée sur stderr après la fin du scan.
# Lister tous les IDs des règles de détection (pour utilisation avec --disable-rule)
glassworm-hunter rules
# Mettre à jour la base de données IoC locale depuis GitHub (source par défaut :
# https://raw.githubusercontent.com/afine-com/glassworm-hunter/main/data/ioc.json)
glassworm-hunter update
# Mettre à jour depuis une source personnalisée (ex. serveur interne de renseignement sur les menaces)
glassworm-hunter update --source https://interne.corp/ioc.json
# Forcer l'écrasement de la base de données IoC locale existante
glassworm-hunter update --force
# Afficher la version
glassworm-hunter version
| Code | Signification |
|---|---|
| 0 | Aucun résultat |
| 1 | Résultats détectés |
| 2 | Erreur du scanner |
Sortie JSON pour traitement automatisé :
glassworm-hunter scan . --format json --output rapport.json --no-extensions
SARIF pour GitHub Code Scanning :
glassworm-hunter scan . --format sarif --output resultats.sarif --no-extensions
Télécharger SARIF vers GitHub :
- uses: github/codeql-action/upload-sarif@v3
with:
sarif_file: resultats.sarif
Utiliser les codes de sortie dans CI :
glassworm-hunter scan . --severity critical --no-extensions || exit 1
Exclure les artefacts de construction et le code de fournisseur :
glassworm-hunter scan . --exclude "dist/**" --exclude "*.min.js" --no-extensions
Ce scanner est entièrement hors ligne par défaut. Il lit uniquement les fichiers locaux. Pas de télémétrie, pas de rappel au domicile, pas de vérification automatique des mises à jour. Les bases de données IoC sont incluses dans le paquet.
La seule commande qui effectue une requête réseau est glassworm-hunter update, qui récupère la dernière base de données IoC depuis GitHub (ou une URL --source personnalisée). Elle n'est jamais appelée automatiquement.
Placez un .glassworm.yml à la racine de votre projet pour définir les valeurs par défaut :
exclude:
- "*.min.js"
- "vendor/**"
- "dist/**"
disable_rules:
- zero-width-chars
severity: medium
Les options CLI remplacent les valeurs du fichier de configuration.
Utilisez --ioc-file pour charger des indicateurs supplémentaires depuis un fichier JSON. Cela est utile pour le renseignement sur les menaces propre à une équipe ou interne :
glassworm-hunter scan /chemin --ioc-file /chemin/vers/equipe_ioc.json
Le fichier doit suivre le même schéma que data/ioc.json :
{
"schema_version": "1.0",
"extensions": [{"id": "editeur.nom"}],
"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]"}]
}
Le fichier personnalisé est fusionné par-dessus toutes les autres couches IoC (codé en dur → fourni → utilisateur ~/.glassworm/ioc.json → --ioc-file).
Le scanner utilise un système IoC à 3+1 couches (chaque couche fusionne par-dessus la précédente, jamais ne supprime) :
data/ioc.json livré avec le paquet~/.glassworm/ioc.json, mis à jour via glassworm-hunter update--ioc-file, priorité la plus élevéeLe scanner fonctionne sous Windows. 4 tests échouent sauf si vous exécutez une invite de commande élevée (Administrateur).
MIT
| CRITICAL | Payload GlassWorm actif détecté (cluster Unicode invisible dans le code, motif de décodeur) |
| HIGH | IoC malveillant connu correspondant (IP C2, portefeuille, dépendance d'extension sur un malware connu) |
| MEDIUM | Motif suspect méritant une révision (eval + contenu dynamique, accès aux identifiants, Trojan Source) |
| LOW | Informationnel (densité anormale de caractères de largeur nulle, scripts d'installation suspects) |
| Option | Défaut | Description |
|---|
--extensions / --no-extensions | activé | Scanne les extensions VS Code/Cursor/Codium |
--npm-scan / --no-npm-scan | activé | Scanne node_modules |
--pip-scan / --no-pip-scan | désactivé | Scanne les site-packages Python |
--git / --no-git | activé | Scanne les dépôts git |
--format [console|json|sarif] | console | Format de sortie |
--output FICHIER | stdout | Écrire le rapport dans un fichier |
--severity [critical|high|medium|low] | low | Sévérité minimale à signaler |
--max-file-size TAILLE | 10MB | Ignorer les fichiers plus grands que cela |
--include-hidden | désactivé | Scanne les fichiers/répertoires cachés |
--quiet | désactivé | Supprimer la sortie de progression |
--verbose | désactivé | Afficher chaque fichier scanné |
--exclude MOTIF | — | Exclure les motifs glob (répétable) |
--disable-rule ID_RÈGLE | — | Supprimer des règles de détection spécifiques (répétable) |
--ioc-file FICHIER | — | Charger des indicateurs IoC supplémentaires depuis un fichier JSON |