قائمة مكونات البرمجيات (SBOM)
جرد محتويات برامجكم.
قائمة مكونات البرمجيات (SBOM) درس مجاني في Cyber Security Academy على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Cyber Security Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Cyber Security Academy 4 دروس في المجموع.
ما هو SBOM
إن قائمة مكونات البرمجيات (SBOM) جرد رسمي قابل للقراءة آليًا لكل مكوّن داخل قطعة برمجية، بما في ذلك المكتبات وإصداراتها وتراخيصها ومعلومات المورّدين.
وكما تسرد بطاقة الطعام مكوناته، يتيح لك SBOM الإجابة خلال ثوانٍ عن السؤال التالي: هل يحتوي هذا المنتج على الإصدار الذي يتضمن ثغرة في X؟ ومن دون SBOM، قد يستغرق العثور على الإجابة أيامًا من البحث اليدوي المضني.
لماذا تهم SBOMs الآن
عند ظهور ثغرة حرجة، يكون السؤال التشغيلي الأول هو مدى التعرض: أيّ من منتجاتنا يشحن المكوّن المتأثر؟
خلال حادثة Log4Shell، استعلمت المؤسسات التي تملك SBOMs من مخزونها وأجرت الفرز خلال ساعات. أما المؤسسات التي لم تملكها فقضت أسابيع في البحث داخل مجلدات البناء باستخدام grep. وتفرض الجهات التنظيمية وكبار المشترين على نحو متزايد استخدام SBOMs شرطًا للشراء.
- تحليل سريع لأثر الثغرات
- الامتثال للتراخيص وتتبع الالتزامات
- شفافية سلسلة التوريد للعملاء والمدققين
تنسيقات SBOM القياسية
تسود معياران مفتوحان. ويمكن للأدوات عادةً التحويل بينهما.
- SPDX — معيار من Linux Foundation، قوي في مجال التراخيص ويحظى بقبول واسع لدى الجهات التنظيمية
- CycloneDX — معيار من OWASP يركز على الأمان، ويدعم بيانات الثغرات وعلاقات التبعيات
تجنب ابتكار تنسيق خاص بك؛ فالمستخدمين وأدوات الفحص يتوقعون هذه التنسيقات.
ما الذي يتضمنه الإدخال
يجب أن يحتوي كل إدخال لمكوّن على معلومات تعريف كافية لمطابقته مع خلاصات الثغرات. وتشمل الحقول الرئيسية ما يلي:
- الاسم والإصدار — دقيقان، وليس نطاقًا
- PURL (عنوان الحزمة) — معرّف شامل مثل
pkg:npm/lodash@4.17.21 - التجزئة — للتحقق من السلامة
- الترخيص — معرّف ترخيص SPDX
- المورّد — الجهة التي أنتجته
# A PURL uniquely identifies a component across ecosystems
pkg:npm/lodash@4.17.21
pkg:pypi/requests@2.31.0
pkg:golang/github.com/gin-gonic/gin@v1.9.1إنشاء SBOM
أنشئ SBOMs تلقائيًا من المصدر أو من قطعة برمجية مبنية. ويُعد Syft مولّدًا شائعًا متعدد الأنظمة البيئية، ويُخرج كلا المعيارين.
# from a project directory (CycloneDX JSON)
syft dir:. -o cyclonedx-json=sbom.cdx.json
# from a container image (SPDX JSON)
syft my-app:1.4.0 -o spdx-json=sbom.spdx.json
# CycloneDX has native generators per ecosystem too
cyclonedx-npm --output-file sbom.jsonSBOMs المصدر مقابل البناء مقابل وقت التشغيل
يلتقط SBOM الذي يُنشأ في مراحل مختلفة حقائق مختلفة.
- SBOM المصدر — ما يعلنه ملف البيان؛ وقد لا يشمل الشيفرة المضمّنة أو المضمّنة محليًا
- SBOM البناء — ما جلبته عملية البناء فعليًا؛ وهو الأدق بالنسبة إلى الإصدار
- SBOM وقت التشغيل / المنشور — ما هو موجود فعليًا في الصورة قيد التشغيل، بما في ذلك حزم نظام التشغيل
لضمان سلسلة التوريد، أنشئ SBOM وقت البناء من القطعة البرمجية الفعلية، وافحص الحاوية النهائية بحثًا عن حزم على مستوى نظام التشغيل أيضًا.
فحص SBOM بحثًا عن الثغرات
يصبح SBOM قويًا عند تمريره إلى أداة مطابقة تربط المكونات بثغرات CVE المعروفة. ويفصل ذلك بين الإنشاء والتحليل، إذ يمكنك فحص SBOM قديم في اليوم الذي تظهر فيه CVE جديدة.
# match an SBOM against vulnerability databases
grype sbom:sbom.cdx.json
# OSV scanner consumes SBOMs directly
osv-scanner --sbom=sbom.spdx.json
# fail CI above a severity threshold
grype sbom:sbom.cdx.json --fail-on highVEX: تحديد ما يمكن استغلاله
قد يُظهر SBOM مكوّنًا يتضمن ثغرة لكنه غير قابل للاستغلال فعليًا في منتجك، لأن الدالة التي تتضمن الثغرة لا تُستدعى مطلقًا. ويسجل مستند تبادل قابلية استغلال الثغرات (VEX) هذا التقييم.
يقلل VEX الضوضاء: فبدلًا من أن يصاب كل عميل بالهلع بسبب CVE مدرجة، تنشر بيانًا يفيد بأن الحالة not_affected مع ذكر المبررات، أو affected مع إجراء المعالجة. وهكذا يحوّل VEX الجرد الخام إلى فرز قابل للتنفيذ.
توزيع SBOMs وتوقيعها
لا يكون SBOM موثوقًا إلا إذا كان أصليًا ومرتبطًا بالقطعة البرمجية الدقيقة التي يصفها. وقّعه وأرفقه باعتباره إفادة إثبات، بدلًا من تركه ملفًا منفصلًا.
# attach a signed SBOM attestation to an image with cosign
cosign attest --predicate sbom.cdx.json \
--type cyclonedx \
my-registry/my-app:1.4.0
# verify the attached SBOM attestation
cosign verify-attestation --type cyclonedx my-registry/my-app:1.4.0أتمتة SBOMs في CI
تتقادم SBOMs اليدوية فورًا. اربط إنشاءها بمسار البناء حتى ينتج كل إصدار SBOM ويخزنه كقطعة بناء، ويفضل أن يوقّعه ويفحصه في المهمة نفسها.
- أنشئه من القطعة البرمجية المبنية، لا من المستودع وحده
- خزّن SBOMs في سجل قابل للاستعلام، مع ربطها بالإصدار
- أعد فحص SBOMs المخزنة وفق جدول زمني باستخدام خلاصات CVE الحديثة
- اجعل نتيجة فحص الثغرات شرطًا لإصدار الإصدارات
مخاطر SBOMs الشائعة
تفشل SBOMs بصمت عندما يُتعامل معها باعتبارها مجرد خانة يجب وضع علامة عليها.
- قديمة — أُنشئت مرة واحدة ولم يُعاد إنشاؤها
- غير مكتملة — لا تشمل حزم نظام التشغيل أو الشيفرة المرتبطة ساكنًا أو المضمّنة محليًا
- غير موثَّقة — لا توجد تجزئة تربطها بالقطعة البرمجية المنشورة
- غير مستخدمة — أُنتجت لكنها لم تُفحص أو يُستعلم منها قط
الهدف هو SBOM دقيقة يُعاد إنشاؤها وتوقيعها وفحصها باستمرار، لا ملف JSON يُنشأ مرة واحدة.
تحقق سريع: الغرض من SBOM
طبّق ما تعلمته على سيناريو لحادثة.
مراجعة: SBOM
يمكنك الآن جرد محتويات برنامجك واتخاذ الإجراءات المناسبة بناءً عليها.
- إن SBOM قائمة قابلة للقراءة آليًا لكل مكوّن، بتنسيق SPDX أو CycloneDX
- عرّف المكونات باستخدام PURL والإصدار والتجزئة والترخيص
- أنشئها وقت البناء، ثم مرّرها إلى أداة مطابقة (grype، osv-scanner) للبحث عن CVEs
- استخدم VEX للإعلان عن قابلية الاستغلال الفعلية وتقليل الإنذارات الكاذبة
- وقّعها وأتمتها في CI، وأعد فحص SBOMs المخزنة مقابل الخلاصات الجديدة
التالي: إثبات مصدر القطع البرمجية باستخدام التوقيع.
الأسئلة الشائعة
هل درس «قائمة مكونات البرمجيات (SBOM)» مجاني؟
نعم — نص درس «قائمة مكونات البرمجيات (SBOM)» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Cyber Security Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Cyber Security Academy 4 دروس في المجموع.
ماذا ستتعلم في «قائمة مكونات البرمجيات (SBOM)»؟
جرد محتويات برامجكم. تتمرن على Cyber Security Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Cyber Security Academy؟
لا تُشترط خبرة سابقة. Cyber Security Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.
كم من الوقت يستغرق درس «قائمة مكونات البرمجيات (SBOM)»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Cyber Security Academy هذا؟
نعم. كل درس في Cyber Security Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- تهديدات سلسلة التوريد
- قائمة مكونات البرمجيات (SBOM)
- توقيع الاعتماديات والآثار البرمجية
- تأمين مسارات CI/CD