ללא מערכת מאוחדת, נקודות תורפה מתרבות: מה לעשות?
דמיינו: החברה שלכם משתמשת ב-Trivy, Snyk, OWASP ZAP ו-Checkmarx — חמישה סורקים שונים, כל אחד עם ממשק משלו. ללא מערכת ניהול נקודות תורפה מאוחדת, מהנדסים מבזבזים עד 40 שעות בחודש על טרייאז' ידני, תיאום ודיווח. התוצאה: בעיות קריטיות מוחמצות, ונקודות תורפה ברמת עדיפות נמוכה מצטברות. לפי CISA, יותר מ-50% מהמתקפות מנצלות נקודות תורפה ידועות מ-KEV — מה שמאשר את הצורך באוטומציה. לפי התיעוד הרשמי של DefectDojo, הפלטפורמה תומכת ביותר מ-100 סוגי סורקים. המהנדסים שלנו (בעלי הסמכות AWS, CKS, CISSP) מתקינים את DefectDojo ו-Dependency-Track כדי להפוך את האיגregation, הסרת הכפילויות והתעדוף לאוטומטיים. התוצאה היא חיסכון של 80% בזמן והפחתת MTTR ל-24 שעות עבור אירועי P1. לאורך השנים, השלמנו עשרות פרויקטי VM, והפחתנו את הניתוח הידני בממוצע פי 5.
בחירת כלים וארכיטקטורה
שלוש גישות עיקריות:
- DefectDojo — פלטפורמת קוד פתוח. מקבלת תוצאות מ-100+ סורקים (Trivy, Snyk, Checkmarx, ZAP, Burp), מסירה כפילויות לפי CPE/CVE, מקבצת לפי מוצרים וצוותים, מאפשרת הגדרת SLA וסנכרון עם Jira.
- Dependency-Track — מתמחה ב-SCA ו-SBOM. מקבל דוחות CycloneDX/SPDX, ומצליב ברציפות רכיבים עם NVD, OSV ו-GitHub Advisories. לוח מחוונים עם מדדים מבוססי זמן.
- פלטפורמות מסחריות (Snyk, Wiz, Tenable.io, JFrog Xray) — אינטגרציה טובה יותר, יקרות יותר, פחות התאמה אישית.
עבור רוב הצוותים ללא תקציב אבטחה גדול, השילוב של DefectDojo + Dependency-Track מכסה 80% מהצרכים. לפי הנתונים שלנו, השילוב הזה זול פי 3 מ-Snyk Enterprise עם פונקציונליות דומה.
זרימת נתונים:
CI/CD pipelines
├── Trivy (fs + image) → SARIF / JSON
├── Snyk (code + oss) → SARIF / JSON
├── GitLeaks → JSON
├── Checkmarx → SARIF
└── OWASP ZAP → JSON
│
▼ DefectDojo API (импорт результатов, дедупликация)
│
├── Engagement per Product per Sprint
├── Finding deduplication по hash
├── JIRA sync (критичные findings → tickets)
└── Metrics: open/closed/accepted risk DefectDojo: התקנה והגדרה בסיסית
# Docker Compose cd django-DefectDojo ./dc-build.sh docker compose up -d # Helm в k8s helm repo add defectdojo https://raw.githubusercontent.com/DefectDojo/django-DefectDojo/helm-charts helm install defectdojo defectdojo/defectdojo \
--namespace security \
--create-namespace \
--set django.ingress.enabled=true \
--set django.ingress.host=defectdojo.internal \
--values my-values.yaml יישום טכני: מ-CI/CD לתעדוף
איך להגדיר ייבוא אוטומטי של נקודות תורפה מ-CI/CD?
ייבא תוצאות דרך API (GitLab CI):
---
upload-to-defectdojo:
stage: .post
image: curlimages/curl:latest
when: always
script:
- |
ENGAGEMENT_ID=$(curl -s -X POST \
-H "Authorization: Token $DEFECTDOJO_API_TOKEN" \
-H "Content-Type: application/json" \
"$DEFECTDOJO_URL/api/v2/engagements/" \
-d "{ \"product\": $DEFECTDOJO_PRODUCT_ID, \"name\": \"CI scan - $CI_COMMIT_SHORT_SHA\", \"target_start\": \"$(date +%Y-%m-%d)\", \"target_end\": \"$(date +%Y-%m-%d)\", \"status\": \"In Progress\", \"engagement_type\": \"CI/CD\" }" | jq -r '.id')
- |
curl -s -X POST \
-H "Authorization: Token $DEFECTDOJO_API_TOKEN" \
-F "engagement=$ENGAGEMENT_ID" \
-F "scan_type=Trivy Scan" \
-F "[email protected]" \
-F "minimum_severity=High" \
-F "active=true" \
-F "verified=false" \
-F "close_old_findings=true" \
"$DEFECTDOJO_URL/api/v2/import-scan/"
- |
if [ -f zap-report.json ]; then
curl -s -X POST \
-H "Authorization: Token $DEFECTDOJO_API_TOKEN" \
-F "engagement=$ENGAGEMENT_ID" \
-F "scan_type=ZAP Scan" \
-F "[email protected]" \
-F "minimum_severity=High" \
"$DEFECTDOJO_URL/api/v2/import-scan/"
fi
rules:
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
---
Dependency-Track: עבודה עם SBOM:
---
generate-and-upload-sbom:
stage: security
image: aquasec/trivy:latest
entrypoint: [""]
script:
- trivy fs --format cyclonedx --output sbom-fs.json .
- trivy image --format cyclonedx --output sbom-image.json $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA
- |
curl -X PUT -H "X-API-Key: $DEPENDENCY_TRACK_API_KEY" -H "Content-Type: application/json" \
"$DEPENDENCY_TRACK_URL/api/v1/bom" \
-d "{\"project\": \"$DTRACK_PROJECT_UUID\", \"bom\": \"$(base64 -w 0 sbom-image.json)\"}"
artifacts:
paths:
- sbom-*.json
expire_in: 90 days
rules:
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
--- למה CVSS לא תמיד מספיק?
CVSS 9.8 הוא סיכון מקסימלי תיאורטי. סיכון אמיתי = CVSS × יכולת ניצול בהקשר × קריטיות הנכס. רכיב עם CVSS 7.5 ב-API חשוף לציבור ללא אימות הוא מסוכן יותר מאשר CVSS 9.8 בשירות אצווה לא מקוון.
מה זה CISA KEV ואיך זה עוזר לתעדף נקודות תורפה?
KEV (Known Exploited Vulnerabilities) מ-CISA מפרט נקודות תורפה שמנוצלות בפועל. אם CVE נמצא ברשימה זו, התייחסו אליו כ-P1 ללא קשר ל-CVSS.
מערכת עדיפויות:
| קריטריון | P1 (SLA: 24 שעות) | P2 (SLA: 7 ימים) | P3 (SLA: 30 ימים) |
|---|---|---|---|
| CVSS | ≥ 9.0 | 7.0–8.9 | < 7.0 |
| ניצול בשטח | כן | לא | לא |
| חשיפת נכס | חשוף לציבור | פנימי | מבודד |
| תיקון זמין | כן | — | — |
import json, requests
def enrich_with_kev(trivy_report_path):
kev = requests.get("https://www.cisa.gov/sites/default/files/feeds/known_exploited_vulnerabilities.json").json()
kev_ids = {v['cveID'] for v in kev['vulnerabilities']}
with open(trivy_report_path) as f:
report = json.load(f)
for result in report.get('Results', []):
for vuln in result.get('Vulnerabilities', []):
if vuln.get('VulnerabilityID') in kev_ids:
vuln['InKEV'] = True
vuln['Priority'] = 'P1'
return report תהליך היישום והתוצאות
מדדים מרכזיים
- MTTR לפי חומרה — זמן ממוצע מגילוי לתיקון
- מגמת Critical פתוחים — דינמיקה על פני 30/60/90 ימים
- אחוז עמידה ב-SLA — אחוז הממצאים שנסגרו בתוך SLA
- אחוז פתיחה מחדש — איכות התיקונים
- אחוז דיכוי — חלק מהסיכון המקובל
DefectDojo בונה מדדים אלה אוטומטית. עבור Grafana, ייצא דרך Prometheus exporter (תיעוד DefectDojo זמין ב-GitHub).
השוואה בין DefectDojo, Dependency-Track ופלטפורמות מסחריות
| מאפיין | DefectDojo | Dependency-Track | מסחרי (Snyk, Wiz) |
|---|---|---|---|
| סוג קלט | תוצאות סריקה | SBOM (CycloneDX/SPDX) | תוצאות + SBOM |
| הסרת כפילויות | לפי hash, CPE, CVE | לא (רכיבים בלבד) | אוטומטי |
| מדדים | מובנים, API | לוח מחוונים | מובנים |
| תמיכה בסורקים | 100+ | כל סורק שמייצר SBOM | מוגבל |
| מחיר | חינם | חינם | בתשלום (תלוי ספק) |
תהליך היישום
- ביקורת על ערימת האבטחה והתהליכים הנוכחיים
- התקנת DefectDojo ו/או Dependency-Track (Docker Compose או Helm)
- אינטגרציה של ייבוא תוצאות מ-CI/CD (GitLab, GitHub Actions, Jenkins)
- הגדרת מדיניות הסרת כפילויות, תעדוף ו-SLA
- סנכרון Jira/GitLab להקצאת משימות אוטומטית
- לוחות מחוונים ודיווח שבועי
- תיעוד ארכיטקטורה וסקריפטים
- הדרכת צוות על שימוש בפלטפורמה
מה כלול בעבודה
- ביקורת — ניתוח סורקים נוכחיים, פורמטי דוחות, תהליכי טרייאז'
- התקנה — התקנה והגדרה של DefectDojo/Dependency-Track בתשתית שלכם (Docker, k8s, bare metal)
- אינטגרציות — צינורות CI/CD, Jira, Slack, כניסה אחידה (SSO)
- מדיניות תעדוף — הגדרת כללים לפי SLA וקריטיות הנכסים שלכם
- לוחות מחוונים — Grafana + Prometheus exporter לניטור מדדים
- תיעוד — דיאגרמת ארכיטקטורה, runbook לתפעול, סקריפטים לאוטומציה
- הדרכה — סדנה לצוות (2-4 שעות) על שימוש בפלטפורמה
- תמיכה לאחר השקה — שבועיים של תחזוקה לאחר היישום
לוחות זמנים משוערים
פרויקט ממוצע אורך בין שבועיים (צוות יחיד, ערימה פשוטה) ל-2-3 חודשים (ארגון גדול, אינטגרציות ארגוניות). העלות מחושבת באופן אישי. חיסכון בעיבוד דוחות ידני — עד 40 שעות בחודש, מה שמוביל להפחתת עלויות משמעותית. ההשקעה מחזירה את עצמה תוך מספר חודשים. אנחנו עובדים turnkey: מביקורת ועד תמיכה לאחר השקה.
צרו קשר להערכה חינמית של הפרויקט שלכם. בקשו ייעוץ, ואנו נבחר את הארכיטקטורה האופטימלית לניהול נקודות תורפה עבור הערימה שלכם.







