
glassworm-hunter v1.0.4
Erkennt GlassWorm-Lieferkettenangriffs-Payloads, indem es VS Code-Erweiterungen, npm/PyPI-Pakete und Git-Repositories nach unsichtbaren Unicode-Payloads, Decoder-Mustern, C2-Markern und bekannten bösartigen IOCs durchsucht.
glassworm-hunter

Erkennt GlassWorm-Supply-Chain-Angriffspayloads auf Ihrem Rechner. Scannt VS Code-Erweiterungen, npm-Pakete, Python-Pakete und Git-Repositorys.
Dieser Scanner erkennt die Angriffstechnik selbst – unsichtbare Unicode-Variation-Selector-Payloads, GlassWorm-Decoder-Muster, C2-Indikatoren und Code zur Erfassung von Anmeldeinformationen.
Install
pip install glassworm-hunter
Oder mit pipx:
pipx install glassworm-hunter
Schnellstart
Durchsuchen Sie Ihr aktuelles Verzeichnis, ohne VS Code/Cursor-Erweiterungen zu scannen:
glassworm-hunter scan --no-extensions
Ein bestimmtes Projekt scannen:
glassworm-hunter scan /path/to/project
Was es erkennt
Erkennung von Techniken (erfasst unbekannte Varianten)
- Unsichtbare Unicode-Payloads – Variationsselektor-Zeichen (U+FE00-FE0F, U+E0100-E01EF) zur Kodierung versteckten Codes. Legitime Verwendungen sind 1-2 Zeichen für Emojis. GlassWorm verwendet Tausende.
- GlassWorm-Decoder-Muster – die codePointAt + Variationsselektor-Bereichsarithmetik, die unsichtbare Payloads dekodiert
- Bidirektionale Überschreibungszeichen – Trojan Source-Angriff (CVE-2021-42574)
- Hangul-Füllzeichen – unsichtbare gültige JavaScript-Bezeichner (U+3164)
- eval/Function mit dynamischem Inhalt – Ausführungssenken, die von dekodierten Zeichenketten gespeist werden
- Zugriff auf Anmeldeinformationen – Code, der .npmrc, .gitcredentials, SSH-Schlüssel, Token-Umgebungsvariablen liest
- C2-Kommunikationsmuster – Solana-RPC-Aufrufe, Google-Kalender-URLs, WebRTC-Datenkanäle in unerwarteten Kontexten
Bekannter IOC-Abgleich (ergänzend)
- 21 bekannte bösartige VS Code/OpenVSX-Erweiterungs-IDs (alle 5 Wellen)
- 4 bekannte bösartige npm-Pakete
- 14 bekannte C2-IP-Adressen
- 3 bekannte Solana-C2-Wallet-Adressen
- Angreifer-E-Mail und Build-Pfad-Artefakte
Schweregrade
| Stufe | Bedeutung |
|---|---|
| KRITISCH | Aktiver GlassWorm-Payload erkannt (unsichtbarer Unicode-Cluster im Code, Decoder-Muster) |
| HOCH | Bekannter bösartiger IOC gefunden (C2-IP, Wallet, Erweiterungsabhängigkeit von bekannter Malware) |
| MITTEL | Verdächtiges Muster, das überprüft werden sollte (eval + dynamischer Inhalt, Zugriff auf Anmeldeinformationen, Trojan Source) |
| NIEDRIG | Informationell (ungewöhnliche Dichte an Nullbreitenzeichen, verdächtige Installationsskripte) |
CLI-Optionen
glassworm-hunter scan [OPTIONS] [PATHS...]
| Option | Standard | Beschreibung |
|---|---|---|
--extensions / --no-extensions | an | VS Code/Cursor/Codium-Erweiterungen scannen |
--npm-scan / --no-npm-scan | an | node_modules scannen |
--pip-scan / --no-pip-scan | aus | Python site-packages scannen |
--git / --no-git | an | Git-Repositorys scannen |
--format [console|json|sarif] | console | Ausgabeformat |
--output FILE | stdout | Bericht in Datei schreiben |
--severity [critical|high|medium|low] | low | Mindestschweregrad für Meldung |
--max-file-size SIZE | 10MB | Dateien überspringen, die größer sind als dieser Wert |
--include-hidden | aus | Versteckte Dateien/Verzeichnisse scannen |
--quiet | aus | Fortschrittsausgabe unterdrücken |
--verbose | aus | Jede gescannte Datei anzeigen |
--exclude PATTERN | — | Glob-Muster zum Ausschließen (wiederholbar) |
--disable-rule RULE_ID | — | Bestimmte Erkennungsregeln deaktivieren (wiederholbar) |
--ioc-file FILE | — | Zusätzliche IoC-Indikatoren aus einer JSON-Datei laden |
Während des Scans wird ein Rich-Fortschrittsbalken auf stderr angezeigt. Er wird automatisch mit --quiet oder --verbose unterdrückt. Eine Zusammenfassungszeile (gescannte Dateien, Funde, Ausgabepfad) wird nach Abschluss des Scans immer auf stderr ausgegeben.
Weitere Befehle
# Listet alle Erkennungsregel-IDs auf (zur Verwendung mit --disable-rule)
glassworm-hunter rules
# Aktualisiert die lokale IoC-Datenbank von GitHub (Standardquelle:
# https://raw.githubusercontent.com/afine-com/glassworm-hunter/main/data/ioc.json)
glassworm-hunter update
# Von einer benutzerdefinierten Quelle aktualisieren (z.B. internem Threat-Intelligence-Server)
glassworm-hunter update --source https://internal.corp/ioc.json
# Vorhandene lokale IoC-Datenbank überschreiben erzwingen
glassworm-hunter update --force
# Version ausgeben
glassworm-hunter version
Exit-Codes
| Code | Bedeutung |
|---|---|
| 0 | Keine Funde |
| 1 | Funde erkannt |
| 2 | Scanner-Fehler |
Wenn Sie etwas finden
- Keine Panik. Der Scanner hat einen Indikator gefunden, keinen bestätigten Einbruch. Einige Erkennungen können Fehlalarme sein, und unser Team arbeitet kontinuierlich daran, diese zu reduzieren und die Erkennungsgenauigkeit zu verbessern.
- Führen Sie den markierten Code nicht aus. Starten, bauen oder testen Sie das betroffene Projekt nicht, bis die Situation geklärt ist.
- KRITISCHE Funde: Deinstallieren Sie die Erweiterung/das Paket sofort. Rotieren Sie Ihre NPM-Tokens, GitHub-Tokens, SSH-Schlüssel und alle anderen Anmeldeinformationen auf dem Rechner.
- HOHE Funde: Untersuchen Sie die markierte Datei. Wenn sie sich in einer Abhängigkeit befindet, die Sie nicht explizit installiert haben, entfernen Sie sie.
- MITTlere Funde: Überprüfen Sie den Code. Diese Muster sind verdächtig, können aber in manchen Kontexten legitim sein.
CI/CD-Integration
JSON-Ausgabe für automatisierte Verarbeitung:
glassworm-hunter scan . --format json --output report.json --no-extensions
SARIF für GitHub Code Scanning:
glassworm-hunter scan . --format sarif --output results.sarif --no-extensions
SARIF nach GitHub hochladen:
- uses: github/codeql-action/upload-sarif@v3
with:
sarif_file: results.sarif
Exit-Codes in CI verwenden:
glassworm-hunter scan . --severity critical --no-extensions || exit 1
Build-Artefakte und Vendor-Code ausschließen:
glassworm-hunter scan . --exclude "dist/**" --exclude "*.min.js" --no-extensions
Kein Netzwerkzugriff
Dieser Scanner ist standardmäßig vollständig offline. Er liest nur lokale Dateien. Keine Telemetrie, kein Heimtelefonieren, keine automatischen Update-Prüfungen. IoC-Datenbanken sind im Paket enthalten.
Der einzige Befehl, der eine Netzwerkanfrage stellt, ist glassworm-hunter update, der die neueste IoC-Datenbank von GitHub (oder einer benutzerdefinierten --source-URL) abruft. Er wird nie automatisch aufgerufen.
Konfigurationsdatei
Legen Sie eine .glassworm.yml im Stammverzeichnis Ihres Projekts ab, um Standardwerte festzulegen:
exclude:
- "*.min.js"
- "vendor/**"
- "dist/**"
disable_rules:
- zero-width-chars
severity: medium
CLI-Flags überschreiben Konfigurationsdateiwerte.
Benutzerdefinierte IoC-Dateien
Verwenden Sie --ioc-file, um zusätzliche Indikatoren aus einer JSON-Datei zu laden. Dies ist nützlich für team-spezifische oder interne Bedrohungsdaten:
glassworm-hunter scan /path --ioc-file /path/to/team_ioc.json
Die Datei muss dem gleichen Schema wie data/ioc.json folgen:
{
"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]"}]
}
Die benutzerdefinierte Datei wird auf alle anderen IoC-Ebenen aufgespielt (hartcodiert → gebündelt → Benutzer ~/.glassworm/ioc.json → --ioc-file).
IoC-Datenbankebenen
Der Scanner verwendet ein 3+1-Ebenen-IoC-System (jede Ebene wird auf die vorherige aufgespielt, nie entfernt):
- Hartcodiert – im Python-Quellcode integriert, immer verfügbar
- Gebündelt –
data/ioc.jsonim Paket enthalten - Benutzer –
~/.glassworm/ioc.json, aktualisiert überglassworm-hunter update - Benutzerdefiniert –
--ioc-file-Flag, höchste Priorität
Danksagungen
- Koi Security – ursprüngliche Entdeckung von GlassWorm (Oktober 2025) und fortlaufende Verfolgung über mehrere Wellen, einschließlich der OpenVSX/VSCode-Kampagne, Rust-Binary-Pivot und macOS-Pivot. IoC-Daten in diesem Scanner bauen auf ihrer veröffentlichten Forschung auf.
- Aikido Security – Analyse der GlassWorm-Welle vom März 2026, die GitHub-Repositorys und npm-Pakete angriff, zusammen mit Socket, Step Security und der OpenSourceMalware-Community.
- AFINE – dieser Scanner. Lesen Sie die vollständige Forschung: Hunting GlassWorm: Open-Source Detection for Invisible Supply Chain Payloads
Windows
Der Scanner funktioniert unter Windows. 4 Tests schlagen fehl, wenn Sie keine erhöhte (Administrator-) Eingabeaufforderung ausführen.
Lizenz
MIT