Dependency-Track - تحليل SBOM المستمر (Cheatsheet)
Dependency-Track (مشروع OWASP الرئيسي) هي منصة لـ إدارة مخاطر سلسلة التوريد البرمجية المستمرة. فكرتها الأساسية: بدلاً من مسح تبعياتك مرة واحدة في وقت البناء، تحمل SBOM من CycloneDX لكل مشروع والمنصة تعيد تقييم تلك المكونات بشكل مستمر عندما يتم الكشف عن ضعف جديد. عندما يسقط CVE، تعرف فوراً أي من تطبيقاتك يحتوي على المكون المتأثر — بدون إعادة بناء أو إعادة فحص أي شيء.
النشر
| الطريقة | الأمر |
|---|
| Docker Compose | curl -LO https://dependencytrack.org/docker-compose.yml && docker compose up -d |
| حاوية (API) | docker run -p 8081:8080 dependencytrack/apiserver |
| الواجهة الأمامية | dependencytrack/frontend container (واجهة المستخدم الافتراضية على 8080) |
| Kubernetes | مخطط Helm متاح |
| المتطلبات | ~4GB+ RAM؛ PostgreSQL للإنتاج |
المفاهيم الأساسية
| المصطلح | المعنى |
|---|
| Project | تطبيق/خدمة تتابعها |
| Component | تبعية ضمن مشروع |
| SBOM | CycloneDX bill of materials التي تحملها |
| Vulnerability | CVE/advisory تؤثر على مكون |
| Policy | قواعس بوابة المخاطرة (الترخيص، الشدة، العمر) |
| Portfolio | جميع المشاريع، مجمعة |
تحميل SBOM
أنشئ باستخدام Syft أو أدوات cyclonedx-*، ثم قم بالتحميل عبر API:
# قم بإنشاء CycloneDX SBOM
syft dir:. -o cyclonedx-json > bom.json
# حمل إلى Dependency-Track
curl -X POST "http://localhost:8081/api/v1/bom" \
-H "X-Api-Key: $DT_API_KEY" \
-F "project=$PROJECT_UUID" \
-F "bom=@bom.json"
| نقطة النهاية | الغرض |
|---|
POST /api/v1/bom | تحميل SBOM |
GET /api/v1/project | مشاريع القائمة |
PUT /api/v1/project | إنشاء مشروع |
GET /api/v1/vulnerability/project/{uuid} | الضعف لمشروع |
GET /api/v1/metrics/project/{uuid}/current | مقاييس المخاطرة الحالية |
مصادر استخبارات الضعف
| المصدر | يوفر |
|---|
| NVD | بيانات CVE |
| GitHub Advisories | المشورة الخاصة بالنظام البيئي |
| OSV | قاعدة بيانات Open Source Vulnerabilities |
| VulnDB | تجاري (اختياري) |
| Internal | المشورة الخاصة بك |
تعكس المنصة هذه التغذيات وتعيد تحليل كل مكون مخزن ضدهم على جدول زمني.
محرك السياسة
| شرط السياسة | مثال |
|---|
| الشدة | فشل إذا كان هناك أي ضعف CRITICAL |
| الترخيص | حظر GPL في المنتجات المملوكة |
| عمر المكون | علم التبعيات غير المحفوظة لـ N سنة |
| الإحداثيات | حظر حزمة/إصدار معين |
| CWE | علم فئات الضعف المحددة |
تنتج السياسات انتهاكات تظهر جنباً إلى جنب مع الضعف، لذا يتم تتبع المخاطرة المرخصة والنظافة في نفس المكان.
تكامل CI/CD
# في خط الأنابيب: بناء → توليد SBOM → تحميل → بوابة
syft dir:. -o cyclonedx-json > bom.json
curl -X POST "$DT_URL/api/v1/bom" -H "X-Api-Key: $DT_API_KEY" \
-F "project=$PROJECT_UUID" -F "bom=@bom.json"
# استطلع نتيجة التحليل والفشل على انتهاكات السياسة
| التكامل | ملاحظة |
|---|
| Jenkins/GitHub Actions | البلاجينات/الإجراءات الرسمية متاحة |
| Webhooks | إخطار Slack/Teams/Jira عند النتائج الجديدة |
| VEX | سجل قرارات القابلية للاستغلال (غير متأثر، وما إلى ذلك) |
الفحص و VEX
| الإجراء | المعنى |
|---|
| غير متأثر | مسار الكود الضعيف غير قابل للوصول |
| False Positive | الاكتشاف خاطئ |
| Resolved | تم الإصلاح في هذا المشروع |
| مكبوت | خطر مقبول مع تبرير |
تسجيل هذه باسم VEX يقلل الضوضاء ويوثق القرارات للمدققين.
Dependency-Track مقابل أجهزة ماسح النقطة
| الجانب | Dependency-Track | Grype/Trivy | Socket |
|---|
| النموذج | منصة SBOM المستمرة | فحص نقطة زمنية | كشف الأسلحة الحية |
| إعادة التقييم | تلقائي على CVEs الجديدة | فقط عند إعادة التشغيل | على تغييرات التبعية |
| عرض المحفظة | نعم (جميع المشاريع) | لكل مسح | لكل PR |
| الأفضل لـ | خطر سلسلة التوريد على مستوى المنظمة | مسح CI | كشف حزمة ضارة |
قدمه SBOMs من Syft؛ اقترنه مع Grype لمسح وقت البناء و Socket لكشف الحزمة الضارة.
الموارد