أصبحت حزم البرامج الحديثة أكثر أمانًا من أي وقت مضى، وذلك بفضل التقدم في ممارسات الأمن السيبراني. ومع ذلك، فإنها تواجه أيضًا التهديدات الأكثر تقدمًا، مما يجعلها عرضة للخطر بقدر ما هي آمنة. هجمات سلسلة التوريد مثل سولارويندز ونقاط الضعف الشديدة مثل Log4Shell هي من بين أحدث التهديدات التي تواجهها أنظمة البرمجيات اليوم. تعتبر هجمات سلسلة توريد البرامج مثل هذه ديناميكية في تأثيرها ويصعب التنقل فيها لأنها تستغل نقاط الضعف في الأنظمة الخارجة عن سيطرتك المباشرة.
ومع ذلك، فإن الخطوة الأولى في مكافحة هجمات سلسلة توريد البرامج مثل هذه هي الحصول على معرفة واضحة بالحزم والتبعيات والمكونات المضمنة في برنامجك. ولهذا السبب من المهم إنشاء قائمة مواد البرامج (SBOM) للبناء الخاص بك. فهو لا يعزز رؤية نقاط الضعف في سلسلة توريد البرامج فحسب، بل أصبح SBOM مهمًا أيضًا لأغراض الامتثال. لقد تم تكليف جيل SBOM مؤخرًا أمر تنفيذي صادر عن الحكومة الفيدرالية الأمريكية لتعزيز الأمن السيبراني وضمان صحة مكونات الطرف الثالث المستخدمة في حزم البرامج.
ووفقا ل غارتنر وفقًا للتنبؤ، فإن 60% من المؤسسات المسؤولة عن تطوير برامج البنية التحتية الحيوية ستتطلب أدوات SBOM موحدة بحلول عام 2025. يبدأ إنشاء SBOM باختيار أداة تتوافق مع معايير مؤسستك وأهدافها، وتحديد مراحل دورة حياة بناء البرنامج التي سيتم خلالها تطبيق SBOM، والتأكد من التزامه بالتنسيق، وإجراء فحص الثغرات الأمنية. يعد إنشاء SBOM عملية دقيقة ومعقدة. ستغطي هذه المقالة متى يكون إنشاء SBOM ضروريًا وكيفية إنشائه لبرنامجك.
متى يتم إنشاء قائمة مواد البرامج
يعد إنشاء قائمة مواد البرامج (SBOM) أمرًا ضروريًا لتأمين إصدارات البرامج الخاصة بك بالإضافة إلى سلسلة توريد البرامج بأكملها. يمكن دمج إنشاء SBOM في مراحل مختلفة من عملية إنشاء برنامجك. يمكنك إنشاء قائمة مواد باستخدام الكود المصدري أثناء وقت الإنشاء، أو أثناء وقت التشغيل، أو أثناء إجراء التحليلات الجنائية على البرنامج. من بين كل هذه الأشياء، يوصي الخبراء بإنشاء SBOM أثناء وقت الإنشاء. وذلك لأن مولدات SBOM وقت البناء أكثر دقة وتولد قائمة أكثر اكتمالا من التبعيات. ومع ذلك، نظرًا لأن هذا ليس عمليًا دائمًا، فيمكن إنشاء SBOM في أي وقت آخر أثناء دورة حياة DevOps.
تجدر الإشارة إلى أن نوع أداة إنشاء SBOM التي سيتم استخدامها يعتمد على المرحلة في دورة حياة DevOps التي يتم إنشاء وثائق SBOM بها. فيما يلي المراحل المختلفة التي يمكن من خلالها إنشاء SBOMs أثناء دورة حياة البناء. كل فترة لها مزايا ومقايضات مختلفة. من الأفضل فهم الجمهور المستهدف وحالة الاستخدام لبيانات SBOM التي تقوم بإنشائها واختيار النهج الذي يوفر لك أفضل النتائج.
في مرحلة كود المصدر
من خلال فحص العناصر وأي مصادر مرتبطة بها مثل البيانات وبيانات التعريف وملفات القفل، ستقوم الأدوات المصدرية أو الثنائية بإنشاء قائمة مواد البرنامج في مرحلة التعليمات البرمجية المصدر. في هذه المرحلة، يمكنك إما إجراء تحليل لمكونات البرنامج أو تحليل ثنائي لبرنامجك.
تم تصميم أداة SCA (تحليل مكونات البرنامج) لتحليل جزء من البرنامج وملفات البيان الخاصة به لتحديد مكوناته. من ناحية أخرى، تقوم أدوات التحليل الثنائي بتحليل بيانات تعريف البرنامج وإنشاء معلومات مصطنعة لإنشاء SBOM. تتضمن أمثلة أدوات التحليل المستخدمة في هذه المرحلة CycloneDX، وIt-Depends، وFossa، وAppSonar، وCybellum، وBlack Duck، وFortress.
يمكنك استخدام محلل الثغرات الأمنية مع SBOM الذي تم إنشاؤه في مرحلة الكود المصدري لتلقي تحذيرات مبكرة من الثغرات الأمنية في البرنامج الذي يتم إنشاؤه. ومع ذلك، هناك قيود على SBOMs التي تم إنشاؤها في هذه المرحلة. لسبب واحد، أنها ليست كاملة، حيث غالبًا ما تكون المعلومات التي تم إنشاؤها أثناء معلومات البناء مع التبعية مفقودة. بالإضافة إلى ذلك، قد تتضمن معلومات حول المكونات التي لم يتم استخدامها في المنتج النهائي الذي تم نشره.
خلال وقت البناء
إن إنشاء SBOM في وقت الإنشاء باستخدام أداة تستفيد من نظام الإنشاء لديه المعرفة الأكثر دقة بما يدخل في الملف الثنائي، بما في ذلك التبعيات المتعدية وغير المثبتة. وهذا مدعوم من دراسة NTIA حول إنتاج وتوفير SBOM لموردي البرامج.
توصي NTIA بإنشاء SBOM لكل إصدار مكون جديد. وهذا يعني إنشاء SBOM جديد في كل مرة تقوم فيها بتحديث أو إصدار إصدار جديد من برنامجك. يُطلب من الموردين أيضًا إنشاء SBOMs جديدة عندما يكتشفون خطأ في الإصدار السابق أو يتعلمون معلومات جديدة حول مكونات برامجهم التي لم يتم توثيقها مسبقًا.
يتضمن إنشاء SBOM الخاص بك أثناء وقت الإنشاء استخدام مكون إضافي يعمل مع البيئة الأصلية التي تنشئ برنامجك بها. تحتوي معظم بيئات التطوير على مكونات إضافية تتكامل مع نظام إدارة التبعية لإنشاء SBOM تلقائيًا. تتضمن أمثلة مولدات SBOM وقت البناء SPDX، والمكون الإضافي CycloneDX Maven، وDependency-Track-Check من OWASP.
على الرغم من أن مولدات SBOM وقت البناء هي الأكثر شمولاً ودقة، إلا أنها أكثر صعوبة في الإعداد مقارنة بالطرق الأخرى. كما أن هذه الطريقة لا تعمل مع بعض أنظمة البناء، ولا يمكنك استخدام هذه الطريقة مع المنتجات القديمة.
توليد SBOM أثناء وقت التشغيل
تم تصميم منشئ SBOM الذي يعمل أثناء وقت التشغيل لالتقاط المكتبات التي يستخدمها البرنامج أو خادم التطبيق أو المكونات الإضافية أثناء وقت التشغيل. يقدم هذا النوع من المولدات أيضًا تفاصيل كافة الخدمات التي يستدعيها البرنامج بالإضافة إلى المنافذ والمكتبات النشطة التي يصل إليها. ومع ذلك، هذه الطريقة لتوليد SBOMs ليست متاحة على نطاق واسع. بالإضافة إلى ذلك، لا يوجد سير عمل واضح لدمج البيانات التي تم إنشاؤها باستخدام هذه الطريقة مع وثائق SBOM الأصلية. جبوم مخطط التهديد هي أمثلة على مولدات SBOM في وقت التشغيل.
كيفية إنشاء قائمة مواد برمجية: دليل خطوة بخطوة
يعد إنشاء قائمة مواد البرنامج يدويًا أمرًا مستهلكًا للوقت ومملًا للمطورين. يعد إدراج جميع مكونات البرنامج بهذه الطريقة غير عملي في الغالب. ومع ذلك، تتوفر الآن العديد من أدوات إنشاء SBOM التي تعمل على تبسيط هذه العملية. تعتمد كيفية القيام بذلك على معايير مؤسستك ومتى تريد إنشاء SBOM الخاص بك أثناء دورة حياة التطوير.
من خلال دمج سير عمل SBOM في مسارات إنشاء البرامج، يمكنك أتمتة عملية SBOM. منصة الكاتب هي إحدى هذه الأدوات التي تعمل على تبسيط كيفية إنشاء قائمة مواد البرنامج الخاصة بك. يتيح لك Scribe إدارة ومشاركة SBOM الخاص بك من مكان واحد. بهذه الطريقة، يمكنك التحقق من سلامة مكونات البرنامج لديك وتتبع نقاط الضعف في مسار البرنامج بسلاسة. يعد هذا القسم دليلاً خطوة بخطوة لإنشاء قوائم المواد البرمجية باستخدام Scribe.
الخطوة 1: قم بالتسجيل وتسجيل الدخول إلى Scribe Trust Hub.
قبل أن تبدأ، يجب أن تعلم أن منصة Scribe بها واجهة ويب — Scribe Trust Hub — يمكن الوصول إليها من متصفحك. ومع ذلك، فإن أداة تجميع الأدلة Scribe تعمل فقط على أجهزة Linux وMac. لإنشاء تقرير تكامل وSBOM باستخدام Scribe، يجب أن يكون لديك إذن لتعديل البرنامج النصي لبناء مشروعك وإضافة مقتطف التعليمات البرمجية ذي الصلة اللازم لتوصيل مشروعك بـ Scribe. ضع في اعتبارك أنه بينما يستطيع Scribe إنشاء وحدات SBOM للمشاريع المكتوبة بأي لغة برمجة تولد صورة حاوية، فإن الإصدار الحالي يعمل فقط مع مشاريع Node.js.
الخطوة الأولى لدمج Scribe في مشروعك هي التسجيل في Scribe Trust Hub. بمجرد قيامك بالتسجيل وتسجيل الدخول، انتقل إلى علامة التبويب "المنتجات" وانقر على "الإعداد". لدى Scribe منتج تجريبي في هذه الصفحة، والذي يمكنك التفاعل معه للتعرف على النظام الأساسي وكيفية عمله.
الخطوة 2: دمج Scribe Trust Hub
الخطوة التالية هي توصيل Scribe بخط أنابيب التكامل المستمر لمشروعك. يؤدي هذا إلى أتمتة عملية إنشاء SBOM. بشكل عام، يمكنك إضافة مقتطفات التعليمات البرمجية من Scribe Trust Hub إلى نقطتين على مسار CI الخاص بك. يمكنك وضع الكود عند الخروج من الكود المصدري أو الصورة النهائية المبنية. الخيار الأول موصى به ولكنه ليس إلزاميا، بينما الخيار الثاني إلزامي.
يعمل إعداد CI الخاص بـ Scribe حاليًا فقط مع Jenkins عبر Kubernetes وGitHub Actions. إن عملية دمج Scribe لإعدادات CI هذه متشابهة. ستحتاج إلى الحصول على بيانات الاعتماد التالية في صفحة إعداد منتج Scribe Hub للبدء:
- مفتاح المنتج
- معرف العميل
- سر العميل
يختلف مفتاح المنتج من منتج إلى آخر، بينما تكون بيانات اعتماد العميل فريدة لحسابك.
إعداد تكامل CI لـ Jenkins
لإعداد عمليات تكامل CI لـ Jenkins، يمكنك إضافة مقتطف التعليمات البرمجية للاتصال بـ "Gensbom" (أداة Scribe Trust Hubs لجمع الأدلة وإنشاء SBOMs) عند نقطة الخروج و/أو بعد إنشاء صورة Docker.
ابدأ بإضافة بيانات الاعتماد أعلاه إلى بيئة البناء الخاصة بك وفقًا للتعليمات الفريدة الخاصة بـ جنكينز. بعد ذلك، قم بإضافة مقتطف الشفرة إلى المسار الخاص بك وفقًا للتعليمات هنا.
إعداد تكامل CI لإجراءات GitHub
تشبه عملية إعداد تكامل CI لـ GitHub Actions عملية Jenkins. الفكرة الرئيسية هي الاتصال بجامع أدلة Scribe ومولد SBOM المعروف باسم "Gensbom". للبدء، اتبع تعليمات جيثب لإضافة بيانات اعتماد إعداد المنتج ومقتطف التعليمات البرمجية إلى المسار وفقًا للتعليمات هنا
دمج Scribe Trust Hub مع أنظمة CI الأخرى
على الرغم من أن Scribe يقدم فقط دعمًا أصليًا لإجراءات Jenkins وGitHub، فقد تتمكن أيضًا من استخدامه لأنظمة CI الأخرى. للبدء، قم بتنزيل أداة "Gensbom" من واجهة سطر الأوامر المستندة إلى Unix. بعد ذلك، أضف منتجك وبيانات اعتماد العميل، ثم اتصل بـ Scribe gensbom من البرنامج النصي للإنشاء الخاص بك إما عند الخروج أو بعد الصورة النهائية المبنية.
الخطوة 3: إنشاء قائمة مواد البرنامج
تقوم أداة gensbom CLI من Scribe بإنشاء قائمة مواد البرنامج (SBOM) لصور Docker وOpen Containers (OCI). تعمل هذه الأداة فقط على أنظمة Mac أو Linux. إن SBOM النهائي الذي تم إنشاؤه بواسطة Scribe هو بتنسيق CycloneDX JSON، وهو أحد الأجهزة القياسية والتنسيقات القابلة للقراءة البشرية والمعترف بها لـ SBOMs. يمكن استخراج صور الحاوية المفتوحة من Docker، أو من قرص محلي أو من سجل بعيد، حسب الحالة.
على الرغم من وجود إعدادات افتراضية للاسم والدليل ومسار الصورة التي يتم إنشاء SBOM منها، فمن الممكن تغيير هذه الإعدادات الافتراضية وفقًا لذلك إذا أردت.
الخطوة 4: تصدير SBOM
يتيح لك Scribe Trust Hub أيضًا تصدير قائمة مواد البرنامج ومشاركتها بسلاسة كجزء من عملية التحقق من صحة برنامجك. يتم إنشاء SBOM بتنسيق تقارير CycloneDX JSON ويعرض تفاصيل جميع التبعيات مفتوحة المصدر لصورة Docker التي تم تحليلها. بمجرد إنشاء SBOM، يمكنك تصديره بنقرة واحدة. ستجد زر "تصدير SBOM" في الزاوية اليمنى العليا من التقرير. انقر فوقه لتصدير فواتير المواد الخاصة بالبرنامج.
وفي الختام
أصبح إنشاء قائمة مواد البرامج خطوة حيوية بشكل متزايد لتأمين سلسلة توريد البرامج ولأغراض الامتثال أيضًا. بغض النظر عن أسباب إنشاء SBOM، ستجد Scribe Trust Hub طريقة سهلة الاستخدام ومرنة لأتمتة سير عمل إنشاء SBOM لكل إصدار من إصدارات برامجك.