
مشروع نموذجي يستخدم VEX لقمع CVE-2024-29415.
يعتمد هذا المشروع النموذجي على حزمة npm node-ip التي تحتوي على ثغرة أمنية CVE-2024-29415.
ومع ذلك، نظرًا لأن مشروعنا لا يستخدم الوظيفة المعرضة للخطر .isPublic() بشكل مباشر، فهو غير قابل للاستغلال من خلال CVE-2024-29415.
يمكنني حزم مشروعي كصورة Docker:
docker buildx build -t felipecruz1638514/node-ip-vex:v1 .
وتشغيل تحليل Docker Scout للتحقق مما إذا كان مشروعي معرضًا للثغرة CVE-2024-29415:
docker scout cves felipecruz1638514/node-ip-vex:v1 --only-cve-id CVE-2024-29415
✓ Image stored for indexing
✓ Indexed 221 packages
✓ Provenance obtained from attestation
✗ Detected 1 vulnerable package with 1 vulnerability
## Overview
│ Analyzed Image
────────────────────┼─────────────────────────────────────
Target │ felipecruz1638514/node-ip-vex:v1
digest │ 972354a74233
platform │ linux/arm64
vulnerabilities │ 0C 1H 0M 0L
size │ 48 MB
packages │ 221
## Packages and Vulnerabilities
0C 1H 0M 0L ip 2.0.1
pkg:npm/[email protected]
✗ HIGH CVE-2024-29415 [Server-Side Request Forgery (SSRF)]
https://scout.docker.com/v/CVE-2024-29415
Affected range : <=2.0.1
Fixed version : not fixed
1 vulnerability found in 1 package
LOW 0
MEDIUM 0
HIGH 1
CRITICAL 0
يظهر الإخراج من هذا الأمر أن هذه الثغرة CVE تؤثر على حزمة npm [email protected] في الصورة.
الخطوة التالية هي إنشاء مستند VEX لإضافة سياق حول حقيقة أنه لمجرد أن الصورة تحتوي على حزمة معرضة للخطر - [email protected] - فهذا لا يعني أن الثغرة CVE-2024-29415 قابلة للاستغلال.
يمكننا استخدام vexctl لإنشاء مستند VEX:
vexctl create \
--author="[email protected]" \
--product="pkg:docker/felipecruz1638514/node-ip-vex@v2" \
--subcomponents="pkg:npm/[email protected]" \
--vuln="CVE-2024-29415" \
--status="not_affected" \
--justification="vulnerable_code_not_in_execute_path" \
--file="CVE-2024-29415.vex.json"
لاختبار ما إذا تم قمع الثغرة CVE، يمكننا بناء الصورة مرة أخرى تحت علامة جديدة (v2) ونسخ بيان VEX إلى نظام ملفات الصورة. هذه الخطوة مغطاة بالفعل باستخدام COPY . . في ملف Dockerfile الحالي.
docker buildx build -t felipecruz1638514/node-ip-vex:v2 .
بعد ذلك، قم بتشغيل تحليل Docker Scout مرة أخرى مع تحميل مستند VEX:
docker scout cves felipecruz1638514/node-ip-vex:v2 --only-cve-id CVE-2024-29415 --vex-location .
✓ Image stored for indexing
✓ Indexed 324 packages
✓ Loaded 1 VEX document
✗ Detected 1 vulnerable package with 1 vulnerability
## Overview
│ Analyzed Image
────────────────────┼─────────────────────────────────────
Target │ felipecruz1638514/node-ip-vex:v2
digest │ 646daafacd8e
platform │ linux/arm64
vulnerabilities │ 0C 1H 0M 0L
size │ 76 MB
packages │ 324
## Packages and Vulnerabilities
0C 1H 0M 0L ip 2.0.1
pkg:npm/[email protected]
✗ HIGH CVE-2024-29415 [Server-Side Request Forgery (SSRF)]
https://scout.docker.com/v/CVE-2024-29415
Affected range : <=2.0.1
Fixed version : not fixed
VEX : not affected [vulnerable code not in execute path]
: [email protected]
1 vulnerability found in 1 package
LOW 0
MEDIUM 0
HIGH 1
CRITICAL 0
لاحظ في الإخراج أعلاه أنه تم قمع CVE-2024-29415:
VEX : not affected [vulnerable code not in execute path]
: [email protected]
أيضًا، يمكنك استخدام العلم --only-vex-affected لتصفية الثغرة CVE المقموعة:
docker scout cves felipecruz1638514/node-ip-vex:v2 --only-cve-id CVE-2024-29415 --vex-location . --only-vex-affected
✓ SBOM of image already cached, 324 packages indexed
✓ Loaded 1 VEX document
✓ No vulnerable package detected
## Overview
│ Analyzed Image
────────────────────┼─────────────────────────────────────
Target │ felipecruz1638514/node-ip-vex:v2
digest │ 646daafacd8e
platform │ linux/arm64
vulnerabilities │ 0C 0H 0M 0L
size │ 76 MB
packages │ 324
أخيرًا، دعنا ندفع الصورة إلى Docker Scout (scout.docker.com) ونفحصها في الواجهة:
docker buildx build --sbom=false --provenance=false -t felipecruz1638514/node-ip-vex:v2 --push .
ملاحظة: لا يتم أخذ مستندات VEX المضمنة في نظام ملفات الصورة في الاعتبار للصور التي تحتوي على شهادات توثيق. إذا كانت صورتك تحتوي على أي شهادات توثيق، فسيبحث Docker Scout عن الاستثناءات في شهادات التوثيق فقط، وليس في نظام ملفات الصورة. ولهذا السبب قمنا بتعطيل SBOM والمصدرية (provenance) في أمر
docker buildx build.
في موقع Docker Scout، لا تظهر الثغرة CVE-2024-29415 ذات الخطورة العالية مع العلامة v2 بعد الآن، حيث يأخذ Scout في الاعتبار مستند VEX المضمن في نظام ملفات الصورة.

على صفحة تفاصيل الصورة، يمكننا رؤية مستند VEX الذي تم تحميله من نظام ملفات الصورة:
