في السنوات القليلة الماضية، أصبح الناس يدركون بشكل متزايد المخاطر الكامنة في استخدام المكونات مفتوحة المصدر في برامجهم. وبالنظر إلى أن معظم البرامج عبارة عن مزيج من المصدر المفتوح ومنطق الملكية، فإن معرفة المكونات التي تم استيرادها من الخارج، بشكل مباشر أو عابر، أمر ضروري لإدارة المخاطر المناسبة لمنتج البرنامج النهائي. نظرًا لأن أيام تتبع المكونات باستخدام جداول بيانات معقدة قد ولت منذ فترة طويلة، وأصبحت غير فعالة على الإطلاق، فإن الطريقة الرئيسية لإنجاز هذا التتبع هي استخدام SBOM - قائمة مواد برمجية. مثل قوائم المواد الأخرى، فهي في الأساس قائمة بمكونات البرنامج التي تم إنشاء البرنامج منها مع إضافة العلاقات بين المكونات المختلفة مع التركيز بشكل خاص على المكونات التي تعتمد على بعضها البعض.
هناك نوعان من تنسيقات SBOM الرئيسية المستخدمة في السوق اليوم: SPDX وCycloneDX.
تبادل بيانات حزمة البرامج (SPDX) هو مشروع SBOM مفتوح المصدر وقابل للقراءة آليًا من قبل مؤسسة Linux. تم تصميم أحدث إصدار من SPDX بما يتماشى مع معيار NTIA لـ "الحد الأدنى من العناصر لفاتورة المواد البرمجية.' فهو يسرد المكونات وحقوق النشر والتراخيص والمراجع الأمنية لأحد البرامج.
إعصار دي إكس (CDX) هو أيضًا تنسيق SBOM مفتوح المصدر وقابل للقراءة آليًا تم تطويره بواسطة مجتمع Open Web Application Security Project (OWASP). باعتباره تنسيقًا لقائمة مكونات الصنف (BOM)، فإن CycloneDX لديه تطبيقات أخرى تتجاوز إعداد قوائم المواد البرمجية. ويمكن استخدامه أيضًا لتجميع المكونات ونقاط الضعف وخدمات الأجهزة والأنظمة السحابية.
لماذا تعتبر SBOM مهمة؟
يعد SBOM مفيدًا للغاية لفرق تطوير البرامج ومؤسسات الشراء والمستخدمين النهائيين. يمكن أن يساعد استخدامه في ضمان تحديث المكونات مفتوحة المصدر والجهات الخارجية، ويوفر رؤية حول تبعيات المشروع التي لديها نقاط ضعف معروفة قد تكون قابلة للاستغلال في برنامجك. من ناحية أخرى، يمكن لمشتري البرامج استخدام SBOMs لتحليل المخاطر الكامنة في المنتج من خلال تقييمات الضعف.
سيتم تقديم خدمة أفضل للمؤسسات من خلال التعاون مع مورديها لضمان حصولهم على معلومات صحيحة وحديثة حول مكونات المشروع التي يتم تنفيذها في الأنظمة و/أو المنتجات. يجب عليهم أيضًا تقييم SBOMs الخاصة بهم بانتظام للمساعدة في تقليل مخاطر استخدام المكونات مفتوحة المصدر ومكونات الطرف الثالث.
عينات SBOM
اعتمادًا على تنسيق SBOM الذي تستخدمه، قد تكون هناك اختلافات في مكونات SBOM. اعتمادًا على حجم مشروعك وتعقيده، يمكن لملف SBOM JSON الوصول بسهولة إلى آلاف الأسطر أو أكثر. نظرًا لأن النظر إلى ملف مكون من ألف سطر ليس مفيدًا للغاية، فلنستخدم الأمثلة الموجودة والأبسط لمعرفة ما يتضمنه كل تنسيق SBOM. سنلقي نظرة فاحصة على عينات من التنسيقين الرئيسيين الموجودين في السوق اليوم.
سبدكس
يمكن العثور على عينة SPDX SBOM التي سنتابعها هنا.
يبدأ JSON بمعلومات عامة عن الملف نفسه – البيانات الوصفية.
بعد ذلك، نحصل على البيانات الوصفية حول البرنامج الذي نقوم بفحصه:
لاحظ المجموع الاختباري وقيمته. يتضمن كل قسم من SBOM التشفير ونتيجة الجزء المعني حتى يتمكن الأشخاص الذين يقومون بفحص الملف من التأكد من أن البرنامج أو المكون المذكور مطابق لما يبحثون عنه.
وبدون هذا الضمان، يمكنك بسهولة العثور على نسخ متعددة بنفس اسم المكونات أو البرامج ولن يكون لديك أي فكرة عن أي من هذه الإصدارات تم فحصها أو تضمينها في البرنامج أو SBOM الذي يصفه.
بعد وصف البرنامج الذي تم فحصه، يمكننا البدء في رؤية المكونات:
يمكنك رؤية حقول متعددة مضمنة لوصف ترخيص المكون، وصفحته الرئيسية، وإصداره، واسمه الكامل، وما إلى ذلك.
هناك شيء آخر يمكنك العثور عليه في تنسيق SPDX وهو التعليقات التوضيحية - الإضافات التي يتم إجراؤها في وقت لاحق إلى القسم وتتضمن مزيدًا من المعلومات وأحيانًا نصًا مجانيًا:
لمعرفة المزيد حول هذا التنسيق وإمكانياته، يمكنك زيارة صفحة سبدكس من مؤسسة لينكس.
سيكلون DX
يمكن وصف تنسيق CycloneDX SBOM في ملف JSON، أو ملف XML، أو في المخازن المؤقتة للبروتوكول. لإبقاء الأمور متساوية وبسيطة، سنتبع مثالًا مبسطًا لـ CycloneDX JSON. يمكن العثور على المثال الموصوف هنا.
يبدأ JSON بمعلومات البيانات الوصفية العامة حول الملف.
ثم تم فحص البيانات الوصفية الموجودة على البرنامج:
بعد ذلك مكونات البرنامج وتبعياتها:
ضع في اعتبارك أن هذا مثال مبسط وأن التنسيق قد يتضمن الكثير من المعلومات الأخرى. لإلقاء نظرة أكثر شمولاً على حالات الاستخدام المتنوعة، يمكنك مراجعة صفحة حالات استخدام OWASP CyclonDX هنا.
فيما يلي مثال من تلك الصفحة يوضح إنشاء قائمة التبعيات:
وإليك وصفًا أكثر شمولاً للمكونات المختلفة لهذا التنسيق مأخوذ من OWASP قدرات BOM الصفحة:
كيفية استخدام SBOM
لا تشعر بالسوء إذا لم تتمكن من متابعة أمثلة الملفات الموضحة هنا. على الرغم من أن ملفات JSON قابلة للقراءة بشكل بارز من قبل البشر، إلا أنها أكثر ملاءمة لتكون قابلة للقراءة آليًا حتى تتمكن البرامج المتخصصة من استيعاب المعلومات وإخراج النتائج التي يوفرها التحليل.
يمكنك استخدام قائمة مكونات البرنامج للتأكد من أنها لا تتضمن أي تراخيص مفتوحة المصدر غير مرغوب فيها (السطر GPL3.0 أو MPL1.1). يمكنك التحقق من قائمة التبعيات بانتظام لمعرفة ما إذا كان هناك أي تحديثات متوفرة، أو التحقق من أسماء الحزم مقابل قواعد بيانات الثغرات الأمنية لمعرفة التبعيات التي بها مشكلات والتي يتضمنها برنامجك.
قد يبدو الأمر معقدًا لاستيعاب SBOM واستعادة كل تلك المعلومات ولكن تذكر أنه ليس عليك القيام بكل ذلك بنفسك. يمكن لخدمات مثل منصة Scribe Security إزالة الكثير من المشكلات وتقديم المزيد من الفوائد. لا تتردد في الاطلاع على منصتنا ومعرفة كيف يمكنك إدارة المخاطر الخاصة بك باستخدام نظام المراقبة المستمر الخاص بنا على مدار دورة حياة التطوير والمنتجات النهائية.