
🐍 🔍 GuardDog هي أداة CLI لتحديد حزم PyPI وnpm الخبيثة
GuardDog هي أداة سطر أوامر (CLI) تحدد حزم PyPI و npm الخبيثة، ووحدات Go، وصناديق Rust، و RubyGems، وإجراءات GitHub، أو إضافات VSCode. تقوم بتحليل ثابت لشفرة مصدر الحزمة (عبر قواعد YARA) وتحلل بيانات الحزمة الوصفية لاكتشاف هجمات سلسلة التوريد.
ما الذي يجعل GuardDog مختلفًا: بدلاً من مجرد سرد الأنماط المشبوهة، يقوم GuardDog بربط النتائج لتحديد المخاطر الفعلية بناءً على سلاسل الهجوم. تحتاج الحزمة إلى كل من القدرة على تنفيذ إجراء (مثل الوصول إلى الشبكة) ومؤشر تهديد (مثل نطاق مشبوه) في نفس الملف ليتم تصنيفها على أنها عالية الخطورة.
يقوم بتنزيل وفحص الكود من:

يستخدم GuardDog نموذج كشف قائم على المخاطر يربط قدرات الكود بمؤشرات التهديد:
تقوم أدوات SAST التقليدية بوضع علامة على كل نمط مشبوه بشكل مستقل، مما يؤدي إلى إرهاق التنبيهات. يفهم GuardDog أن:
تحصل الحزم على درجة من 0-10 بناءً على أربعة عوامل:
| العامل | الوزن | الوصف |
|---|---|---|
| الخطورة | 30% | أعلى نتيجة خطورة (منخفض/متوسط/مرتفع) |
| سلسلة الهجوم | 20% | وجود مراحل هجوم كاملة (مبكرة → متوسطة/متأخرة) |
| الخصوصية | 30% | مدى خصوصية الأنماط للبرامج الضارة مقابل الكود الشرعي |
| التطور | 20% | مستوى تقدم التقنية |
تسميات الدرجات:
مراحل سلسلة الهجوم (استنادًا إلى MITRE ATT&CK):
أسهل طريقة لتشغيل GuardDog هي استخدام uvx:
uvx guarddog pypi scan requests
لتثبيته محليًا:
uv tool install guarddog
# أو
pip install guarddog
أو استخدم صورة Docker:
docker pull ghcr.io/datadog/guarddog
alias guarddog='docker run --rm ghcr.io/datadog/guarddog'
ملاحظة: على Windows، طريقة التثبيت الوحيدة المدعومة هي Docker.
# فحص أحدث إصدار من حزمة 'requests'
guarddog pypi scan requests
# فحص إصدار محدد من حزمة 'requests'
guarddog pypi scan requests --version 2.28.1
# فحص حزمة 'request' باستخدام قاعدتين محددتين
guarddog pypi scan requests --rules exec-base64 --rules code-execution
# فحص حزمة 'requests' باستخدام جميع القواعد باستثناء قاعدة واحدة
guarddog pypi scan requests --exclude-rules exec-base64
# فحص أرشيف حزمة محلي
guarddog pypi scan /tmp/triage.tar.gz
# فحص دليل حزمة محلي
guarddog pypi scan /tmp/triage/
# فحص حزمة مخزنة في S3 (مجلد/بادئة أو كائن أرشيف واحد)
guarddog pypi scan s3://my-bucket/path/to/package/
guarddog pypi scan s3://my-bucket/path/to/package.tar.gz
# فحص كل حزمة مشار إليها في ملف requirements.txt لمجلد محلي
guarddog pypi verify workspace/guarddog/requirements.txt
# فحص كل حزمة مشار إليها في ملف requirements.txt وإخراج ملف sarif - يعمل فقط مع verify
guarddog pypi verify --output-format=sarif workspace/guarddog/requirements.txt
# إخراج JSON إلى الإخراج القياسي - يعمل مع كل الأوامر
guarddog pypi scan requests --output-format=json
# جميع الأوامر تعمل أيضًا على npm و go و crates و rubygems
guarddog npm scan express
guarddog go scan github.com/DataDog/dd-trace-go
guarddog go verify /tmp/repo/go.mod
# فحص صناديق Rust
guarddog crates scan serde
guarddog crates verify /tmp/repo/Cargo.lock
# فحص حزم RubyGems
guarddog rubygems scan rails
guarddog rubygems verify /tmp/repo/Gemfile.lock
# يمكن أيضًا دعم فحص إجراءات GitHub المنفذة في JavaScript
guarddog github_action scan DataDog/synthetics-ci-github-action
guarddog github_action verify /tmp/repo/.github/workflows/main.yml
# فحص إضافات VSCode من السوق
guarddog extension scan ms-python.python
# فحص إصدار محدد من إضافة VSCode
guarddog extension scan ms-python.python --version 2023.20.0
# فحص دليل إضافة VSCode محلي أو أرشيف VSIX
guarddog extension scan /tmp/my-extension/
# التشغيل في وضع التصحيح
guarddog --log-level debug npm scan express
عند فحص الحزم، يقوم GuardDog بتشغيل تحليل الكود المصدري داخل بيئة معزولة على مستوى النواة (Linux عبر Landlock، macOS عبر Seatbelt، باستخدام nono). تمنع البيئة المعزولة جميع الوصول إلى الشبكة وتقيد عمليات نظام الملفات فقط بالمسارات اللازمة للتحليل. يحمي هذا من الحزم الخبيثة التي تحاول تنفيذ كود أثناء استخراج الأرشيف أو الفحص.
افتراضيًا، البيئة المعزولة مطلوبة: إذا لم تكن متاحة على المنصة، يفشل الفحص بدلاً من التشغيل دون حماية. للفحص بدونها، يجب عليك تمرير --no-sandbox صراحةً:
# الافتراضي: يتطلب البيئة المعزولة، ويخرج بخطأ إذا كانت غير متاحة
guarddog pypi scan requests
# تعطيل البيئة المعزولة صراحةً
guarddog pypi scan requests --no-sandbox
بالنسبة للحزم البعيدة، تعمل ثلاث مراحل بمستويات امتياز مختلفة:
تم تقديم البيئة المعزولة للتخفيف من ثغرات اجتياز المسار وتنفيذ الكود أثناء استخراج الأرشيف (CVE-2022-23530، CVE-2022-23531، CVE-2026-22870، CVE-2026-22871).
يمكن لـ GuardDog فحص حزمة مخزنة في S3، إما كمجلد/بادئة أو كائن أرشيف واحد:
guarddog npm scan s3://my-bucket/path/to/package/
guarddog npm scan s3://my-bucket/path/to/package.tar.gz