
كشف التهديدات في سلسلة التوريد لـ npm/PyPI في الوقت الفعلي. تحليل السلاسل السلوكية، مسح AST، تغذية مؤشرات الاختراق (IOC)، ومحرك تسجيل مركب.
التثبيت | الاستخدام | الميزات | VS Code | CI/CD
هجمات سلسلة التوريد لـ npm و PyPI تتفاقم. اخترق Shai-Hulud أكثر من 25 ألف مستودع في 2025. الأدوات الحالية تكتشف التهديدات ولكن لا تساعدك على الاستجابة.
يجمع MUAD'DIB بين 22 ماسحًا متوازيًا (277 قاعدة كشف)، محرك إزالة التعتيم، تحليل تدفق البيانات بين الوحدات، التسجيل المركب (21 قاعدة مركبة)، و صندوق رمل gVisor/Docker لكشف التهديدات المعروفة والأنماط السلوكية المشبوهة في حزم npm و PyPI. يوجد مصنف XGBoost في قاعدة الكود ولكنه غير نشط حاليًا (انظر التقييم).
MUAD'DIB هو ماسح سلسلة توريد مجاني، مفتوح، وقابل للتدقيق بالكامل لـ npm و PyPI. يكتشف التهديدات المعروفة (أكثر من 225,000 مؤشر IOC)، تنفيذ الأوامر وقت التثبيت (RCE)، تدفقات سرقة بيانات الاعتماد ثم تسريبها، الحمولات المُعمّاة، وغيرها من الأنماط السلوكية المشبوهة — محليًا، دون أي تتبع عن بعد.
مرخص بموجب AGPL-3.0؛ يتوفر ترخيص تجاري للمؤسسات التي تحتاج إلى تضمينه في منتج مملوك أو تشغيله كخدمة مستضافة مغلقة (انظر الترخيص).
إنه لا يحاول عمدًا فعل كل شيء — انظر النطاق لمعرفة ما يكتشفه بالضبط وما لا يكتشفه.
يكتشف (npm & PyPI): الحزم المعروفة بالخبيثة (تطابق اسم + SHA256 IOC)، الانتحال الكتابي (typosquats)، تنفيذ الأوامر وقت التثبيت (خطافات دورة الحياة preinstall/postinstall، curl | sh، وقت استيراد Python، binding.gyp)، قراءة بيانات الاعتماد ثم تسريبها عبر الشبكة (داخل ملف وعبر ملفات)، الحمولات المُعمّاة / عالية الإنتروبيا / محمل الواجهة (stub-loader)، مُسقطات الملفات الثنائية (chmod +x + exec/spawn)، وعلامات التهرب من التحليل.
خارج النطاق: هجمات المتصفح فقط (DOM/window، بدون واجهة Node.js API)، محتوى الملفات الثنائية الأصلية / WASM (لا تحليل ثنائي)، الحزم غير المعروفة ذات الصِفر يوم (خلاصة IOC تفاعلية)، والنظم البيئية غير npm/PyPI (RubyGems، Maven، Go). يعتبر التحديد الدقيق لصندوق الرمل المضاد والحمولات البعيدة متعددة المراحل من مخاطر النتائج السلبية الكاذبة المعروفة. التفاصيل الكاملة: نموذج التهديد.
لا تتبع عن بعد. الكود ونتائج المسح لا تغادر جهازك أبدًا — MUAD'DIB فقط ينزّل خلاصات معلومات التهديد (muaddib update) وللتسجيل، يقرأ بيانات وصفية من سجل npm العام. تنبيهات Webhook اختيارية.
npm install -g muaddib-scanner
git clone https://github.com/DNSZLSK/muad-dib
cd muad-dib
npm install
npm link
muaddib scan .
muaddib scan /path/to/project
يمسح كلاً من تبعيات npm (package.json, node_modules) و Python (requirements.txt, setup.py, pyproject.toml).
muaddib
muaddib install <package>
muaddib install lodash axios --save-dev
muaddib install suspicious-pkg --force # التثبيت القسري رغم التهديدات
يمسح الحزم بحثًا عن التهديدات قبل التثبيت. يمنع الحزم الخبيثة المعروفة.
كل مسح يعرض درجة مخاطرة من 0 إلى 100:
[SCORE] 58/100 [***********---------] HIGH
muaddib scan . --explain
يعرض معرف القاعدة، تقنية MITRE ATT&CK، المراجع، وسيناريو الاستجابة لكل كشف.
muaddib scan . --json > results.json # JSON
muaddib scan . --html report.html # HTML
muaddib scan . --sarif results.sarif # SARIF (أمان GitHub)
muaddib scan . --fail-on critical # الفشل فقط عند CRITICAL
muaddib scan . --fail-on high # الفشل عند HIGH و CRITICAL (الافتراضي)
muaddib scan . --paranoid
كشف فائق الصرامة مع تحمل أقل. يكتشف أي وصول إلى الشبكة، تنفيذ عمليات فرعية، تقييم كود ديناميكي، والوصول إلى الملفات الحساسة.
muaddib scan . --webhook "https://discord.com/api/webhooks/..."
تصفية صارمة (v2.1.2): تنبيهات فقط لتطابقات IOC، تهديدات مؤكدة بصندوق الرمل، أو تسريب رمز الكناري (canary token). فرز أولوية (v2.10.21): P1 (أحمر، IOC/صندوق رمل/كناري)، P2 (برتقالي، درجة عالية/مركبات)، P3 (أصفر، الباقي).
muaddib scan . --temporal-full # جميع الميزات الزمنية الأربعة
muaddib scan . --temporal # كشف البرامج النصية المفاجئة لدورة الحياة
muaddib scan . --temporal-ast # فرق AST بين الإصدارات
muaddib scan . --temporal-publish # شذوذ تردد النشر
muaddib scan . --temporal-maintainer # كشف تغيير المشرف
يكتشف هجمات سلسلة التوريد قبل ظهورها في قواعد بيانات IOC من خلال تحليل التغييرات بين إصدارات الحزم. انظر منهجية التقييم للتفاصيل.
muaddib sandbox <package-name>
muaddib sandbox <package-name> --strict
تحليل ديناميكي في حاوية Docker معزولة: strace, tcpdump, فرق نظام الملفات، رموز الكناري، بيئة مدركة لـ CI، وتحميل مسبق (preload) للقرود لاكتشاف القنابل الزمنية (تشغيل متعدد عند انزياحات [0h, 72h, 7d]).
muaddib watch . # مراقبة في الوقت الفعلي
muaddib daemon # وضع الخفي (مسح تلقائي لـ npm install)
muaddib update # تحديث IOCs (سريع، ~5 ثوانٍ)
muaddib scrape # تحديث كامل لـ IOC (~5 دقائق)
muaddib diff HEAD~1 # مقارنة التهديدات مع الالتزام السابق
muaddib init-hooks # خطافات ما قبل الالتزام (husky/pre-commit/git)
muaddib scan . --breakdown # تحليل قابل للشرح للدرجة
muaddib replay # التحقق من الحقيقة الأساسية (90/94 TPR@3, v2.11.48)
جميع القواعد (272 قاعده أساسية + 5 قاعده بارانويا) مرتبطة بتقنيات MITRE ATT&CK. انظر SECURITY.md للمرجع الكامل للقواعد.
إضافة VS Code تمسح تلقائيًا مشاريع npm الخاصة بك.
code --install-extension dnszlsk.muaddib-vscode
MUAD'DIB: Scan Project - مسح المشروع بأكملهMUAD'DIB: Scan Current File - مسح الملف الحاليmuaddib.autoScan, muaddib.webhookUrl, muaddib.failLevelانظر vscode-extension/README.md للتوثيق الكامل.
name: Security Scan
on: [push, pull_request]
jobs:
scan:
runs-on: ubuntu-latest
permissions:
security-events: write
contents: read
steps:
- uses: actions/checkout@v4
- uses: DNSZLSK/muad-dib@v1
with:
path: '.'
fail-on: 'high'
sarif: 'results.sarif'
muaddib init-hooks # كشف تلقائي (husky/pre-commit/git)
muaddib init-hooks --type husky # فرض husky
muaddib init-hooks --mode diff # حظر التهديدات الجديدة فقط
مع إطار pre-commit:
repos:
- repo: https://github.com/DNSZLSK/muad-dib
rev: v2.11.139
hooks:
- id: muaddib-scan
آخر قياس v2.11.48 (2026-05-26)، قواعد فقط (المصنف ML غير نشط — انظر أدناه). الحقيقة الأساسية: 94 هجومًا حقيقيًا ضمن النطاق + 200 npm عشوائي + 124 PyPI + 107 عدائي/محتفظ به.
مصنف ML: غير نشط. يوجد نموذج XGBoost في src/ml/ ولكنه غير موصل أبدًا بـ muaddib scan، ويعمل في وضع LOG-ONLY في المراقبة منذ 2026-04-08 (النموذج المدرب انهار، في انتظار إعادة التدريب). جميع الأرقام أعلاه هي قواعد فقط.
البروتوكول الكامل، تاريخ كل مسار، تحذير PyPI cap-35، التغطية التشغيلية (بمصطلحات GHSA)، ومنهجية إعادة تدريب ML: منهجية التقييم.
قم بتحرير ملفات YAML في iocs/:
- id: NEW-MALWARE-001
name: "malicious-package"
version: "*"
severity: critical
confidence: high
source: community
description: "وصف التهديد"
references:
- https://example.com/article
mitre: T1195.002
git clone https://github.com/DNSZLSK/muad-dib
cd muad-dib
npm install
npm test
MUAD'DIB مرخص بموجب رخصة GNU Affero العامة الإصدار 3.0 فقط (AGPL-3.0-only) — انظر LICENSE و NOTICE.
أنت حر في استخدامها ودراستها وتعديلها وإعادة توزيعها — بما في ذلك عبر الشبكة — بشرط أن يتم إصدار الأعمال المشتقة والتعديلات المنشورة على الشبكة تحت نفس الرخصة.
الترخيص التجاري: لتضمين MUAD'DIB في منتج مملوك / مغلق المصدر، أو لتقديمه كخدمة مستضافة دون التزامات الإفصاح عن المصدر بموجب AGPL، يتوفر ترخيص تجاري منفصل. افتح مشكلة أو اتصل بالمؤلف (DNSZLSK).
حقوق النشر (C) 2026 DNSZLSK.
يجب أن يتدفق التوابل. يجب أن تموت الديدان.
| الماسح | الكشف |
|---|
| تحليل AST (acorn) | eval, Function, سرقة بيانات الاعتماد، مُسقطات الملفات الثنائية، خطافات النموذج الأولي |
| مطابقة الأنماط | أوامر الصدفة، الصدف العكسية، مفتاح الرجل الميت |
| تحليل تدفق البيانات | قراءة بيانات الاعتماد + إرسال الشبكة (داخل ملف وعبر ملفات) |
| كشف التعتيم | أنماط تعتيم JS (تخطي .min.js) |
| معالجة مسبقة لإزالة التعتيم | تسلسل النصوص، charcode، base64، مصفوفة سداسية عشرية، نشر الثوابت |
| تدفق البيانات بين الوحدات | انتشار التلوث عبر الملفات (سلاسل 3-hop، طرق الفئات) |
| تماسك النية | اقتران المصدر-المصدر داخل الملف (بيانات الاعتماد + eval/شبكة) |
| الانتحال الكتابي | npm + PyPI (مسافة ليفنشتاين) |
| ماسح Python | requirements.txt, setup.py, pyproject.toml, 14K+ IOCs PyPI |
| إنتروبيا شانون | سلاسل عالية الإنتروبيا (5.5 بت + 50 حرف كحد أدنى) |
| ماسح تكوين AI | حقن .cursorrules, CLAUDE.md, copilot-instructions.md |
| الحزمة/التبعيات | نصوص دورة الحياة، مطابقة IOC (أكثر من 225 ألف حزمة) |
| إجراءات GitHub | كشف باب خلفي Shai-Hulud |
| ماسح التجزئة | تجزئات ملفات خبيثة معروفة |
| سلاسل IOC (استخبارات-تصنيف P1.1) | مطابقة سلاسل بنمط YARA (Axios 2026, TeamPCP, GlassWorm, CanisterSprawl) |
| AST لمكافحة الطب الشرعي (استخبارات-تصنيف P1.2) | حلقة XOR + حذف ذاتي + كتابة شرك مركب (csec autodelete) |
| حزمة الواجهة (استخبارات-تصنيف P1.3) | ملف رئيسي صغير + تبعية URL خارجية + خطاف دورة حياة (سلسلة ltidi) |
| ماسح المستودع الأحادي | كشف Lerna/pnpm-workspace/turbo (إصلاح Sprint 1 audit MR-C2) |
| فرق التبعية الموثوقة (اختياري) | فرق ضد حزم التبعية الموثوقة من السجل (v2.10.x) |
| مصدر Python (PYSRC) | أنماط RCE في وقت الاستيراد/التثبيت في __init__.py / setup.py (v2.11.41 — يسد فجوة PyPI TrapDoor) |
| AST Python (PYAST) | AST Tree-sitter-Python مع كاشفات مدركة للتلوث (v2.11.42+) |
| حقن مضاد الماسح (ASI) | نصوص حقن موجهة في التعليقات/السلاسل تُجبر مراجع كود LLM على إصدار حكم نظيف أو تخطي حمولة مُعمّاة (ASI-001..004, حملة Hades 2026-06) |
| الحملة | الحالة |
|---|
| GlassWorm (2026، 433+ حزمة) | مكتشفة |
| Shai-Hulud v1/v2/v3 (2025) | مكتشفة |
| event-stream (2018) | مكتشفة |
| eslint-scope (2018) | مكتشفة |
| برمجيات الاحتجاج (node-ipc, colors, faker) | مكتشفة |
| الانتحال الكتابي (crossenv, mongose, babelcli) | مكتشفة |
| الإدخال | الوصف | الافتراضي |
|---|
path | المسار المراد مسحه | . |
fail-on | أدنى شدة للفشل | high |
sarif | مسار ملف إخراج SARIF | |
paranoid | كشف فائق الصرامة | false |
| المقياس | النتيجة |
|---|
| معدل الكشف (TPR@3) | 95.74% (90/94) |
| معدل التنبيه (TPR@20) | 88.30% (83/94) |
| FPR — npm منسق (548) | 1.10% (6/545) |
| FPR — npm عشوائي (200) | 2.50% (5/200) |
| FPR — PyPI (132) | 9.68% (12/124) |
| ADR — عدائي + محتفظ به | 96.26% (103/107) |
| TPR بري (Datadog 17K) | 92.8% (13,538/14,587) |