كيفية إنشاء SBOM باستخدام أدوات Microsoft مفتوحة المصدر

كيفية إنشاء SBOM باستخدام أدوات Microsoft مفتوحة المصدر

Shutterstock.com/Song_about_summer

تساعدك SBOM (قائمة مواد البرامج) على فهم سلسلة توريد البرامج الخاصة بك من خلال سرد الحزم والموردين الذين تعتمد عليهم التعليمات البرمجية. تكتسب SBOM زخمًا سريعًا كطريقة لتحسين الأمان في أعقاب هجمات سلسلة التوريد في العالم الحقيقي.

أحد المؤيدين الرئيسيين لـ SBOM هو Microsoft ، التي نشرت نهجها للجيل في أكتوبر 2021. في وقت سابق من هذا العام ، افتتحت الشركة أدوات المصدر لإنشاء وحدات SBOMs على أنظمة التشغيل Windows و macOS و Linux.

في هذه المقالة ، ستتعلم كيفية استخدام المشاريع لفهرسة تبعيات التعليمات البرمجية الخاصة بك. يُنشئ مستندًا متوافقًا مع SPDX يسرد الملفات والحزم والعلاقات في مشروعك. SPDX (تبادل بيانات حزمة البرامج) هو معيار معتمد من ISO لـ SBOM ، لذلك يمكن تمرير التقارير التي تم إنشاؤها مباشرة إلى أدوات النظام البيئي الأخرى.

أعلنت Microsoft في الأصل عن المشروع تحت اسم Salus. تم سحب المصطلح منذ ذلك الحين لأنه يتعارض مع مشروع Salus Code Security الحالي الذي بدأ في Coinbase. يتم استدعاء مولد SBOM الآن ببساطة. sbom-tool.

ابدء

يمكن تنزيل أداة SBOM من مستودع Microsoft GitHub. تتوفر الثنائيات المترجمة مسبقًا في صفحة الإصدارات. حدد التنزيل المناسب لنظامك ، واجعل الملف الثنائي قابلاً للتنفيذ وانقله إلى موقع في مسارك.

فيما يلي مثال لنظام التشغيل Linux:

$ wget https://github.com/microsoft/sbom-tool/releases/download/v/sbom-tool-linux-x64
$ chmod +x sbom-tool-linux-x64
$ mv sbom-tool-linux-x64 /usr/local/bin/sbom-tool

يجب أن تكون قادرًا على الجري sbom-tool لعرض معلومات المساعدة في نافذة الجهاز:

$ sbom-tool
No action was specified

The Sbom tool generates a SBOM for any build artifact.

Usage - Microsoft.Sbom.Tool  -options

توليد SBOM

SBOM الجديد هو أداة generate الأمر الفرعي. تحتاج إلى تحديد بعض الحجج:

  • -b (BuildDropPath) – مجلد لتخزين بيان SPDX SBOM الذي تم إنشاؤه.
  • -bc (BuildComponentPath) – المجلدات التي تم فحصها بحثًا عن التبعيات في المشروع.
  • -nsb (NamespaceUriBase) – المسار الأساسي المستخدم كمساحة اسم لبيان SBOM. يجب أن يكون هذا عنوان URL مملوكًا لمؤسستك ، مثل: https://example.com/sbom.

تحتاج أداة SBOM أيضًا إلى معرفة اسم المشروع وإصداره. يمكنك غالبًا الاستدلال على ذلك من الملفات الموجودة بالفعل في المستودع. package.json name متي version ومع ذلك ، قد يكون من الضروري في بعض الحالات تقديم معلومات يدويًا أو تجاوز الإعدادات الافتراضية.إضافة pn متي pv أعلام للقيام بذلك:

  • -pn (PackageName) – اسم المشروع أو الحزمة.
  • -pv (PackageVersion) – نسخة المشروع التي تقوم بمسحها ضوئيًا. يجب أن يتطابق هذا مع نسخة الإصدار التي يتم شحنها مع SBOM حتى يتمكن المستخدمون من إقران قائمة التبعيات الخاصة بهم ببنية معينة.

فيما يلي مثال يقوم بإنشاء SBOM لملف في دليل العمل الخاص بك. SBOM هو sbom-output دليل فرعي. يجب أن تكون موجودة قبل تشغيل الأداة.

$ mkdir sbom-output
$ sbom-tool generate -b sbom-output -bc . -pn example -pv 1.0 -nsb https://example.com/sbom

سيتم عرض ملخص لنتائج الفحص على جهازك.

[INFO] Enumerated 3728 files and 607 directories in 00:00:00.5938034 

[INFO] |Component Detector Id         |Detection Time                |# Components Found            |# Explicitly Referenced                 | 
...
[INFO] |Npm                           |0.63 seconds                  |241                           |0                                       | 
...
[INFO] |Total                         |0.64 seconds                  |241                           |0                                       | 

[INFO] Detection time: 0.6374678 seconds.

يستخدم هذا المشروع npm لإدارة التبعيات.عثرت الأداة على 241 حزمة في دليل العمل package.json ملف.

تدعم أدوات SBOM حاليًا 19 لغة برمجة مختلفة وتنسيقات حزم. تتضمن هذه القائمة npm و NuGet و PyPi و Maven و Rust Crates و Ruby gems بالإضافة إلى حزم Linux الموجودة في صور Docker. يتم أيضًا دعم التصفح إلى مستودعات GitHub البعيدة.

محتويات SBOM

ولدت SBOM مكتوبة _manifest/spdx_2.2/manifest.spdx.json في دليل الإخراج البناء المحدد. SBOM هو ملف JSON مفصل إلى حد ما مخصص للاستخدام من قبل برامج أخرى.

{
  "files": [],
  "packages": [
    {
      "name": "color-convert",
      "SPDXID": "SPDXRef-Package-A72B0922E46D9828746F346D7FD11B7F81EDEB15B92BEEDAE087F5F7407FECDC",
      ...
    }

هناك أربعة أنواع رئيسية من المعلومات في التقرير:

  • من files الجزء – سيؤدي ذلك إلى سرد جميع الملفات التي تحتوي على الكود المصدري الذي قمت بإنشائه في مشروعك. تملأ أداة SBOM هذا القسم فقط عند فحص أنواع معينة من المشاريع مثل حلول C #.
  • من packages الجزء – كتالوج كامل لجميع تبعيات الطرف الثالث الموجودة في مشروعك. يحتوي على مراجع لمدير الحزمة المصدر والإصدار المستخدم ونوع الترخيص المطبق.
  • من relationships الجزء – يوضح هذا تفاصيل كافة العلاقات بين المكونات المدرجة في SBOM. العلاقات الأكثر شيوعًا هي: DEPENDS_ONقم بتعريف العنصر باستخدام packages كأحد تبعيات المشروع. توجد عدة أنواع أخرى من العلاقات ، مثل CREATED_BYو DEPENDENCY_OF، متي PATCH_FOR.
  • تعرف على المزيد حول البيانات الوصفية للتقرير – مجالات مثل nameو documentNamespaceو spdxVersion، متي creationInfo يحدد SBOM والأداة المستخدمة لإنشائه ومراجعة بيان SPDX التي تنطبق عليه.

يمكنك الآن استخدام SBOM جنبًا إلى جنب مع الأدوات الأخرى لإجراء عمليات فحص الثغرات الأمنية وإدارة الامتثال للترخيص. قد تفكر في توزيع SBOM مع إصدار البرنامج الخاص بك بحيث يمكن للمستهلكين فحص محتويات كل إصدار جديد. من الأفضل إنشاء SBOMs كجزء من خط أنابيب البناء الخاص بك ، بحيث تظل محدثة.

يعد الوصول إلى SBOM أمرًا بالغ الأهمية في حالة حدوث مشكلة جديدة في سلسلة التوريد. على سبيل المثال ، كانت المنظمات التي تستخدم SBOM مناسبة تمامًا لدعم Log4j. بدلاً من تدقيق قائمة الحزم يدويًا ، يمكنك فحص التقرير للعثور سريعًا على المشاريع التي تعتمد على المكتبات المعرضة للخطر.

مسح صور Docker

يمكن لأداة SBOM فحص صور Docker الموجودة كجزء من إنشاء التقرير. لاستخدام هذه الميزة ، -di يحدد علامة الصورة أو الملخص المطلوب مسحه ضوئيًا باستخدام العلامات. تبقى بقية الحجج كما هي.

$ sbom-tool generate -di ubuntu:latest -b sbom-output -bc . -pn demo -pv 1.0 -nsb https://demo.com/demo

يتم تحليل صورة Docker لتحديد الحزم التي تحتوي عليها. تتم إضافتها إلى تقرير SBOM جنبًا إلى جنب مع التبعيات الموجودة في المجلد المصدر. يمكنك مسح صور Docker متعددة في عملية واحدة عن طريق فصل العلامات أو تجزئة الملخص بفاصلات.

ملخص

أدوات SBOM هي أداة إنشاء SBOM جديدة مفتوحة المصدر تم تطويرها بواسطة Microsoft. وهو يدعم العديد من تنسيقات الحزم الرئيسية وينتج مخرجات متوافقة مع SPDX. هذا يعني أنه يمكن تغذية SBOM التي تم إنشاؤها مباشرةً في أدوات أخرى مثل Grype لاكتشاف الثغرات الأمنية والتبعيات القديمة تلقائيًا.

SBOM هي طريقة فعالة لزيادة الوعي والكشف عن المشاكل المحتملة في سلسلة توريد البرمجيات. يساعد إنشاء SBOM وتوزيعها المستخدمين على فهم ما هو ضمني في مشروعك. أداة SBOM هي طريقة ذات أمر واحد لإنشاء تقارير متوافقة مع معايير الصناعة ، مما يجعل من السهل تسليم وحدات SBOM مع كل إصدار.