
glassworm-hunter v1.0.4
يكتشف حمولات هجوم سلسلة التوريد GlassWorm من خلال فحص إضافات VS Code، وحزم npm/PyPI، ومستودعات git بحثًا عن حمولات Unicode غير مرئية، وأنماط فك التشفير، وعلامات C2، ومؤشرات IOC ضارة معروفة.
glassworm-hunter

اكتشف حمولات هجوم سلسلة التوريد 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
ما يكتشفه
كشف التقنية (يلتقط المتغيرات غير المعروفة)
- حمولات Unicode غير المرئية - أحرف محددات الاختلاف (U+FE00-FE0F, U+E0100-E01EF) المستخدمة لتشفير كود مخفي. الاستخدامات المشروعة هي 1-2 أحرف للرموز التعبيرية. يستخدم GlassWorm آلافًا منها.
- أنماط فك تشفير GlassWorm - عملية codePointAt + نطاق محددات الاختلاف التي تفك الحمولات غير المرئية
- أحرف التجاوز ثنائي الاتجاه - هجوم Trojan Source (CVE-2021-42574)
- حشو Hangul - معرفات JavaScript صالحة غير مرئية (U+3164)
- eval/Function بمحتوى ديناميكي - نقاط تنفيذ تتغذى على سلاسل مفكوكة
- الوصول إلى بيانات الاعتماد - كود يقرأ .npmrc، .gitcredentials، مفاتيح SSH، متغيرات بيئة الرموز
- أنماط اتصال C2 - استدعاءات Solana RPC، عناوين URL لتقويم Google، قنوات بيانات WebRTC في سياقات غير متوقعة
مطابقة مؤشرات الاختراق المعروفة (إضافية)
- 21 معرفًا ضارًا معروفًا لإضافات VS Code/OpenVSX (جميع الموجات الخمس)
- 4 حزم npm ضارة معروفة
- 14 عنوان IP معروفًا لـ C2
- 3 عناوين محفظة Solana معروفة لـ C2
- بريد إلكتروني للمهاجم وقطع أثرية لمسار البناء
مستويات الخطورة
| المستوى | المعنى |
|---|---|
| حرج | تم اكتشاف حمولة GlassWorm نشطة (مجموعة Unicode غير مرئية في الكود، نمط فك التشفير) |
| عالي | مطابقة مؤشر اختراق معروف (IP C2، محفظة، اعتماد إضافة على برمجية ضارة معروفة) |
| متوسط | نمط مشبوه يستحق المراجعة (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] | console | تنسيق الإخراج |
--output FILE | stdout | كتابة التقرير إلى ملف |
--severity [critical|high|medium|low] | low | الحد الأدنى من الخطورة للإبلاغ |
--max-file-size SIZE | 10MB | تخطي الملفات الأكبر من ذلك |
--include-hidden | إيقاف | مسح الملفات/الدلائل المخفية |
--quiet | إيقاف | إخفاء إخراج التقدم |
--verbose | إيقاف | إظهار كل ملف يتم مسحه |
--exclude PATTERN | — | أنماط glob لاستبعادها (قابلة للتكرار) |
--disable-rule RULE_ID | — | إخفاء قواعد كشف معينة (قابلة للتكرار) |
--ioc-file FILE | — | تحميل مؤشرات IoC إضافية من ملف JSON |
يتم عرض شريط تقدم Rich على stderr أثناء المسح. يتم إخفاؤه تلقائيًا مع --quiet أو --verbose. يتم دائمًا طباعة سطر ملخص (الملفات الممسوحة ضوئيًا، النتائج، مسار الإخراج) إلى stderr بعد اكتمال المسح.
أوامر أخرى
# سرد جميع معرفات قواعد الكشف (للاستخدام مع --disable-rule)
glassworm-hunter rules
# تحديث قاعدة بيانات IoC المحلية من GitHub (المصدر الافتراضي:
# 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 | خطأ في الماسح |
إذا وجدت شيئًا
- لا داعي للذعر. وجد الماسح مؤشرًا، وليس اختراقًا مؤكدًا. قد تكون بعض الاكتشافات إيجابيات خاطئة، وفريقنا يعمل باستمرار على تقليلها وتحسين دقة الكشف.
- لا تنفذ الكود المميز. لا تقم بتشغيل أو بناء أو اختبار المشروع المتأثر حتى يتم حله.
- النتائج الحرجة: قم بإلغاء تثبيت الإضافة/الحزمة فورًا. قم بتدوير رموز NPM الخاصة بك، ورموز GitHub، ومفاتيح SSH، وأي بيانات اعتماد أخرى على الجهاز.
- النتائج العالية: قم بالتحقيق في الملف المميز. إذا كان في تبعية لم تقم بتثبيتها بشكل صريح، فقم بإزالته.
- النتائج المتوسطة: راجع الكود. هذه الأنماط مشبوهة ولكنها قد تكون مشروعة في بعض السياقات.
التكامل مع CI/CD
إخراج JSON للمعالجة الآلية:
glassworm-hunter scan . --format json --output report.json --no-extensions
SARIF لمسح الكود في GitHub:
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
علامات CLI تتجاوز قيم ملف التكوين.
ملفات IoC مخصصة
استخدم --ioc-file لتحميل مؤشرات إضافية من ملف JSON. هذا مفيد لمؤشرات خاصة بالفريق أو استخبارات تهديدات داخلية:
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).
طبقات قاعدة بيانات IoC
يستخدم الماسح نظام IoC من 3+1 طبقة (كل طبقة تدمج فوق السابقة، لا تزيل أبدًا):
- مضمنة — مبنية داخل مصدر Python، متاحة دائمًا
- مرفقة —
data/ioc.jsonمشحونة مع الحزمة - المستخدم —
~/.glassworm/ioc.json، محدثة عبرglassworm-hunter update - مخصصة — علامة
--ioc-file، أعلى أولوية
الاعتمادات
- Koi Security - الاكتشاف الأصلي لـ GlassWorm (أكتوبر 2025) والتتبع المستمر عبر موجات متعددة، بما في ذلك حملة OpenVSX/VSCode، والتحول إلى ثنائي Rust، والتحول إلى macOS. تعتمد بيانات IoC في هذا الماسح على أبحاثهم المنشورة.
- Aikido Security - تحليل موجة GlassWorm في مارس 2026 التي استهدفت مستودعات GitHub وحزم npm، بالتعاون مع Socket وStep Security ومجتمع OpenSourceMalware.
- AFINE - هذا الماسح. اقرأ البحث الكامل: Hunting GlassWorm: Open-Source Detection for Invisible Supply Chain Payloads
Windows
يعمل الماسح على Windows. تفشل 4 اختبارات ما لم تقم بتشغيل موجه أوامر بصلاحية مرتفعة (مسؤول).
الترخيص
MIT