
GlassWorm आपूर्ति श्रृंखला हमले के पेलोड का पता लगाता है, VS Code एक्सटेंशन, npm/PyPI पैकेज, और git रिपॉजिटरी को स्कैन करके अदृश्य यूनिकोड पेलोड, डिकोडर पैटर्न, C2 मार्कर, और ज्ञात दुर्भावनापूर्ण IOCs के लिए।
# glassworm-hunter

अपनी मशीन पर GlassWorm सप्लाई चेन अटैक पेलोड का पता लगाएं। VS Code एक्सटेंशन, npm पैकेज, Python पैकेज, और git रिपॉजिटरी को स्कैन करता है।
यह स्कैनर **अटैक तकनीक का ही पता लगाता है** - अदृश्य यूनिकोड वेरिएशन सेलेक्टर पेलोड, GlassWorm डिकोडर पैटर्न, C2 संकेतक, और क्रेडेंशियल हार्वेस्टिंग कोड।
## स्थापित करें
```bash
pip install glassworm-hunter
```
या pipx के साथ:
```bash
pipx install glassworm-hunter
```
## त्वरित प्रारंभ
अपने वर्तमान निर्देशिका को VS Code/Cursor एक्सटेंशन स्कैन किए बिना स्कैन करें:
```bash
glassworm-hunter scan --no-extensions
```
किसी विशिष्ट प्रोजेक्ट को स्कैन करें:
```bash
glassworm-hunter scan /path/to/project
```
## यह क्या पता लगाता है
### तकनीक का पता लगाना (अज्ञात वेरिएंट को पकड़ता है)
- **अदृश्य यूनिकोड पेलोड** - वेरिएशन सेलेक्टर कैरेक्टर (U+FE00-FE0F, U+E0100-E01EF) जिनका उपयोग छिपा कोड एनकोड करने के लिए किया जाता है। वैध उपयोग इमोजी के लिए 1-2 कैरेक्टर होते हैं। GlassWorm हजारों का उपयोग करता है।
- **GlassWorm डिकोडर पैटर्न** - codePointAt + वेरिएशन सेलेक्टर रेंज अंकगणित जो अदृश्य पेलोड को डिकोड करता है
- **द्विदिशात्मक ओवरराइड कैरेक्टर** - Trojan Source हमला (CVE-2021-42574)
- **हंगुल फिलर** - अदृश्य वैध JavaScript पहचानकर्ता (U+3164)
- **डायनामिक कंटेंट के साथ eval/Function** - डिकोडेड स्ट्रिंग्स द्वारा खिलाए गए निष्पादन सिंक
- **क्रेडेंशियल एक्सेस** - .npmrc, .gitcredentials, SSH कुंजियाँ, टोकन env vars पढ़ने वाला कोड
- **C2 संचार पैटर्न** - अप्रत्याशित संदर्भों में Solana RPC कॉल्स, Google Calendar URLs, WebRTC डेटा चैनल
### ज्ञात IoC मिलान (पूरक)
- 21 ज्ञात दुर्भावनापूर्ण VS Code/OpenVSX एक्सटेंशन ID (सभी 5 वेव)
- 4 ज्ञात दुर्भावनापूर्ण npm पैकेज
- 14 ज्ञात C2 IP पते
- 3 ज्ञात Solana C2 वॉलेट पते
- हमलावर ईमेल और बिल्ड पथ कलाकृतियाँ
## गंभीरता स्तर
| स्तर | अर्थ |
|-------|---------|
| **क्रिटिकल** | सक्रिय GlassWorm पेलोड का पता चला (कोड में अदृश्य यूनिकोड क्लस्टर, डिकोडर पैटर्न) |
| **उच्च** | ज्ञात दुर्भावनापूर्ण IoC मिलान (C2 IP, वॉलेट, ज्ञात मैलवेयर पर एक्सटेंशन निर्भरता) |
| **मध्यम** | संदिग्ध पैटर्न जिसकी समीक्षा करना उचित है (eval + डायनामिक कंटेंट, क्रेडेंशियल एक्सेस, Trojan Source) |
| **निम्न** | सूचनात्मक (असामान्य शून्य-चौड़ाई वर्ण घनत्व, संदिग्ध इंस्टॉल स्क्रिप्ट) |
## CLI विकल्प
```
glassworm-hunter scan [OPTIONS] [PATHS...]
```
| विकल्प | डिफ़ॉल्ट | विवरण |
|--------|---------|-------------|
| `--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]` | कंसोल | आउटपुट प्रारूप |
| `--output FILE` | stdout | रिपोर्ट को फ़ाइल में लिखें |
| `--severity [critical\|high\|medium\|low]` | निम्न | रिपोर्ट करने के लिए न्यूनतम गंभीरता |
| `--max-file-size SIZE` | 10MB | इससे बड़ी फ़ाइलों को छोड़ें |
| `--include-hidden` | बंद | छिपी फ़ाइलें/निर्देशिकाएँ स्कैन करें |
| `--quiet` | बंद | प्रगति आउटपुट दबाएँ |
| `--verbose` | बंद | हर स्कैन की जा रही फ़ाइल दिखाएँ |
| `--exclude PATTERN` | — | बहिष्कृत करने के लिए Glob पैटर्न (दोहराने योग्य) |
| `--disable-rule RULE_ID` | — | विशिष्ट पहचान नियमों को दबाएँ (दोहराने योग्य) |
| `--ioc-file FILE` | — | JSON फ़ाइल से अतिरिक्त IoC संकेतक लोड करें |
स्कैनिंग के दौरान stderr पर एक Rich प्रगति पट्टी दिखाई जाती है। `--quiet` या `--verbose` के साथ यह स्वचालित रूप से दबा दी जाती है। स्कैन पूरा होने के बाद हमेशा stderr पर एक सारांश पंक्ति (स्कैन की गई फ़ाइलें, निष्कर्ष, आउटपुट पथ) मुद्रित होती है।
### अन्य कमांड
```bash
# सभी पहचान नियम ID सूचीबद्ध करें (--disable-rule के साथ उपयोग के लिए)
glassworm-hunter rules
# GitHub से स्थानीय IoC डेटाबेस अपडेट करें (डिफ़ॉल्ट स्रोत:
# https://raw.githubusercontent.com/afine-com/glassworm-hunter/main/data/ioc.json)
glassworm-hunter update
# कस्टम स्रोत से अपडेट करें (जैसे आंतरिक खतरा खुफिया सर्वर)
glassworm-hunter update --source https://internal.corp/ioc.json
# मौजूदा स्थानीय IoC डेटाबेस को बलपूर्वक ओवरराइट करें
glassworm-hunter update --force
# संस्करण प्रिंट करें
glassworm-hunter version
```
## बाहर निकलने के कोड
| कोड | अर्थ |
|------|---------|
| 0 | कोई निष्कर्ष नहीं |
| 1 | निष्कर्ष का पता चला |
| 2 | स्कैनर त्रुटि |
## यदि आपको कुछ मिले
1. **घबराएं नहीं।** स्कैनर ने एक संकेतक पाया है, पुष्टि किया गया उल्लंघन नहीं। कुछ पहचान झूठी सकारात्मक हो सकती हैं, और हमारी टीम उन्हें कम करने और पहचान सटीकता में सुधार करने पर लगातार काम कर रही है।
2. **फ़्लैग किए गए कोड को निष्पादित न करें।** हल होने तक प्रभावित प्रोजेक्ट को चलाएं, बनाएं या परीक्षण न करें।
3. **क्रिटिकल निष्कर्ष:** एक्सटेंशन/पैकेज को तुरंत अनइंस्टॉल करें। मशीन पर अपने NPM टोकन, GitHub टोकन, SSH कुंजियाँ और किसी भी अन्य क्रेडेंशियल को घुमाएं।
4. **उच्च निष्कर्ष:** फ़्लैग की गई फ़ाइल की जाँच करें। यदि यह एक निर्भरता में है जिसे आपने स्पष्ट रूप से स्थापित नहीं किया है, तो इसे हटा दें।
5. **मध्यम निष्कर्ष:** कोड की समीक्षा करें। ये पैटर्न संदिग्ध हैं लेकिन कुछ संदर्भों में वैध हो सकते हैं।
## CI/CD एकीकरण
स्वचालित प्रसंस्करण के लिए JSON आउटपुट:
```bash
glassworm-hunter scan . --format json --output report.json --no-extensions
```
GitHub कोड स्कैनिंग के लिए SARIF:
```bash
glassworm-hunter scan . --format sarif --output results.sarif --no-extensions
```
GitHub पर SARIF अपलोड करें:
```yaml
- uses: github/codeql-action/upload-sarif@v3
with:
sarif_file: results.sarif
```
CI में एक्ज़िट कोड का उपयोग करें:
```bash
glassworm-hunter scan . --severity critical --no-extensions || exit 1
```
बिल्ड आर्टिफैक्ट और विक्रेता कोड को बाहर करें:
```bash
glassworm-hunter scan . --exclude "dist/**" --exclude "*.min.js" --no-extensions
```
## कोई नेटवर्क एक्सेस नहीं
यह स्कैनर डिफ़ॉल्ट रूप से पूरी तरह ऑफ़लाइन है। यह केवल स्थानीय फ़ाइलें पढ़ता है। कोई टेलीमेट्री, कोई फ़ोन-होम, कोई स्वचालित अपडेट जाँच नहीं। IoC डेटाबेस पैकेज में बंडल हैं।
एकमात्र कमांड जो नेटवर्क अनुरोध करता है वह है `glassworm-hunter update`, जो GitHub (या कस्टम `--source` URL) से नवीनतम IoC डेटाबेस लाता है। इसे कभी स्वचालित रूप से कॉल नहीं किया जाता।
## कॉन्फ़िगरेशन फ़ाइल
डिफ़ॉल्ट सेट करने के लिए अपने प्रोजेक्ट रूट में एक `.glassworm.yml` रखें:
```yaml
exclude:
- "*.min.js"
- "vendor/**"
- "dist/**"
disable_rules:
- zero-width-chars
severity: medium
```
CLI फ़्लैग कॉन्फ़िगरेशन फ़ाइल मानों को ओवरराइड करते हैं।
## कस्टम IoC फ़ाइलें
JSON फ़ाइल से अतिरिक्त संकेतक लोड करने के लिए `--ioc-file` का उपयोग करें। यह टीम-विशिष्ट या आंतरिक खतरा खुफिया के लिए उपयोगी है:
```bash
glassworm-hunter scan /path --ioc-file /path/to/team_ioc.json
```
फ़ाइल को `data/ioc.json` के समान स्कीमा का पालन करना चाहिए:
```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`)।
## IoC डेटाबेस परतें
स्कैनर 3+1 परत IoC प्रणाली का उपयोग करता है (प्रत्येक परत पिछले के ऊपर मर्ज होती है, कभी नहीं हटाती):
1. **हार्डकोडेड** — Python स्रोत में निर्मित, हमेशा उपलब्ध
2. **बंडल** — पैकेज के साथ भेजा गया `data/ioc.json`
3. **उपयोगकर्ता** — `~/.glassworm/ioc.json`, `glassworm-hunter update` के माध्यम से अपडेट किया गया
4. **कस्टम** — `--ioc-file` फ़्लैग, उच्चतम प्राथमिकता
## क्रेडिट
- [Koi Security](https://www.koi.ai) - GlassWorm की मूल खोज (अक्टूबर 2025) और कई वेव्स में चल रही ट्रैकिंग, जिसमें OpenVSX/VSCode अभियान, Rust बाइनरी पिवट, और macOS पिवट शामिल हैं। इस स्कैनर में IoC डेटा उनके प्रकाशित शोध पर आधारित है।
- [Aikido Security](https://www.aikido.dev) - मार्च 2026 GlassWorm वेव का विश्लेषण जो GitHub रिपॉजिटरी और npm पैकेजों को लक्षित करता है, Socket, Step Security, और OpenSourceMalware समुदाय के साथ।
- [AFINE](https://afine.com) - यह स्कैनर। पूर्ण शोध पढ़ें: [Hunting GlassWorm: Open-Source Detection for Invisible Supply Chain Payloads](https://afine.com/blogs/hunting-glassworm-open-source-detection-for-invisible-supply-chain-payloads)
## Windows
स्कैनर Windows पर काम करता है। यदि आप एक उन्नत (प्रशासक) कमांड प्रॉम्प्ट नहीं चलाते हैं तो 4 परीक्षण विफल होते हैं।
## लाइसेंस
MIT