قائمة مواد البرنامج (SBOM) هي قائمة بجميع المكونات والمكتبات والتبعيات الأخرى المستخدمة في تطبيق البرنامج. تتضمن التنسيقات القياسية لـ SBOMs SPDX وCycloneDX وCPE (تعداد النظام الأساسي العام). توفر هذه التنسيقات طريقة منظمة لتمثيل المكونات والتبعيات في تطبيق برمجي، مما يسهل فهم وإدارة المخاطر الأمنية المرتبطة بهذه المكونات.
في هذه المقالة، سنشرح - بالتفصيل - ما هي تنسيقات ومعايير SBOM المختلفة، وما الذي يجب أن يتضمنه SBOM، ولماذا تحتاج جميع المؤسسات إلى استخدامه.
ما هو معيار SBOM؟
إن الطبيعة المعقدة والديناميكية لسلاسل توريد أنظمة البرمجيات الحديثة تشكل تحدياً كبيراً للشفافية. ويساهم هذا النقص في الشفافية في زيادة مخاطر الأمن السيبراني ويزيد من التكاليف المرتبطة بالتطوير والمشتريات والصيانة. إن العواقب المترتبة على ذلك بعيدة المدى، ولا تؤثر على الشركات فحسب، بل تؤثر أيضًا على الأمور الجماعية مثل السلامة العامة والأمن القومي في عالمنا المترابط.
يمكن أن تؤدي زيادة الشفافية في سلاسل توريد البرمجيات إلى تقليل مخاطر وتكاليف الأمن السيبراني من خلال:
- تحسين تحديد الأنظمة الضعيفة وتحديد السبب الجذري للحوادث
- تقليل العمل غير المخطط له وغير المنتج
- السماح بتمايز السوق واختيار المكونات بشكل أكثر استنارة
- توحيد التنسيقات عبر قطاعات متعددة، مما يؤدي إلى تقليل ازدواجية الجهود
- اكتشاف مكونات البرامج المشبوهة أو المزيفة
يمكن أن يساعد جمع هذه المعلومات ومشاركتها بتنسيق واضح ومتسق في خفض التكاليف وتحسين الموثوقية وتعزيز الثقة في بنيتنا التحتية الرقمية.
من اجل ذلك الهدف، مجموعة عمل شفافية البرمجيات التابعة لـ NTIA والمعنية بالمعايير والتنسيقات تأسست في عام 2018 لتقييم التنسيقات الحالية لقوائم المواد البرمجية وتحديد الاستخدامات المستقبلية المحتملة. قامت المجموعة بفحص المعايير والمبادرات الحالية المتعلقة بتحديد المكونات الخارجية والمكتبات المشتركة المستخدمة في منتجات البرمجيات وتوصيل هذه المعلومات بتنسيق يمكن قراءته آليًا. لم تأخذ المجموعة بعين الاعتبار التنسيقات الخاصة. تم إصدار الاستطلاع الأصلي في أواخر عام 2019 وتم تحديثه في عام 2021، مع التركيز على تسليط الضوء على فوائد النظام البيئي لأدوات SBOM وأهمية التنسيق والمواءمة في عالم SBOM التقني. الفكرة الأساسية هي أنه يمكن نقل بيانات SBOM بتنسيقات مختلفة ويجب أن يدعم النظام البيئي إمكانية التشغيل البيني فيما بينها.
وجدت مجموعة العمل أن ثلاثة تنسيقات شائعة الاستخدام:
- تبادل بيانات حزمة البرامج (SPDX®)، وهو تنسيق مفتوح المصدر وقابل للقراءة آليًا تم تطويره بواسطة مؤسسة Linux وهو الآن معيار ISO/IEC
- CycloneDX (CDX)، هو تنسيق مفتوح المصدر يمكن قراءته آليًا تم تطويره بواسطة مجتمع OWASP
- تعريف البرنامج (SWID)، وهو معيار صناعي ISO/IEC يستخدمه العديد من ناشري البرامج التجارية
تجدر الإشارة إلى أن هذه التنسيقات الثلاثة تشترك في بعض المعلومات المشتركة. ومع ذلك، فقد تم استخدامها تقليديًا في مراحل مختلفة من عملية تطوير البرمجيات وهي مخصصة لجماهير مختلفة. سنناقش كل من هذه التنسيقات بتفصيل كبير في هذه المقالة.
ما الذي يجب أن يتضمنه SBOM؟
الحد الأدنى من مكونات NTIA يتكون SBOM، المشار إليه بالعناصر، من ثلاثة مجالات واسعة ومترابطة. تسمح هذه العناصر باتباع نهج مرن فيما يتعلق بشفافية البرامج، ومعالجة كل من التكنولوجيا والتشغيل الوظيفي. يمكن إضافة المزيد من التفاصيل أو التطورات التقنية في المستقبل. كما ذكرنا سابقًا، هذه هي الحد الأدنى من المكونات في الوقت الحالي، وقد تحتاج المؤسسات إلى المزيد. قد تتحسن وتتطور القدرة على الشفافية في سلسلة توريد البرامج بمرور الوقت.
تشبه الحد الأدنى من العناصر المطلوبة لSBOM يتم تجميعها عادة في ثلاث فئات:
- حقول البيانات: يجب أن يتضمن SBOM بيانات مهمة حول مكونات البرنامج، مثل اسم المكون واسم المورد والإصدار والمعرفات الفريدة. ويجب أن تتضمن أيضًا معلومات حول التبعيات بين المكونات، مما يسمح بالتحديد الدقيق والتتبع لجميع مكونات البرامج عبر سلسلة التوريد.
- الممارسات والعمليات: يجب أن توضح وثائق SBOM أيضًا الممارسات والإجراءات القياسية لإنشاء وتحديث SBOM، وتوزيعها والوصول إليها، بالإضافة إلى معالجة الأخطاء.
- دعم الأتمتة: يجب أن تكون قائمة مواد البرنامج قابلة للقراءة آليًا وقابلة للإنشاء تلقائيًا للتتبع المستمر للبيانات. وعادةً ما تكون بتنسيقات قياسية مثل علامات SPDX وCycloneDX وSWID والتي تجعلها أيضًا قابلة للقراءة للبشر.
SPDX SBOM التنسيق القياسي
تعد مواصفات SPDX® (تبادل بيانات حزمة البرامج) أحد معايير ISO/IEC لمشاركة المعلومات حول مكونات البرامج والتراخيص وحقوق النشر وتفاصيل الأمان بتنسيقات ملفات متعددة. لقد طور هذا المشروع ويستمر في تحسين مجموعة من معايير تبادل البيانات التي تسمح للشركات والمؤسسات بمشاركة البيانات التعريفية للبرامج بتنسيق يمكن فهمه من قبل كل من البشر والآلات، مما يبسط عمليات سلسلة توريد البرامج.
يمكن ربط معلومات SPDX بمنتجات برامج محددة، أو مكونات أو مجموعات من المكونات، أو ملفات فردية، أو حتى مقتطفات تعليمات برمجية صغيرة. يركز مشروع SPDX على إنشاء وتحسين لغة لوصف البيانات التي يمكن تبادلها كجزء من SBOM، والقدرة على تقديم هذه البيانات بتنسيقات ملفات متعددة (RDF/XML، XLSX، tag-value، JSON، YAML و XML) لتسهيل جمع المعلومات ومشاركتها حول حزم البرامج والمحتوى ذي الصلة، مما يؤدي إلى تحسين الوقت والدقة.
تحدد مواصفات SPDX الحقول والأقسام اللازمة لمستند صالح، ولكن من المهم ملاحظة أنه ليست كل الأقسام إلزامية - مطلوب قسم معلومات الإنشاء فقط. يمكن لمنشئ المستند اختيار الأقسام والحقول التي يريد تضمينها، والتي تصف معلومات البرنامج وبيانات التعريف التي يخطط لمشاركتها.
يمكن لـ SPDX التقاط بيانات قائمة مواد البرامج بشكل فعال من خلال تمثيل جميع المكونات الموجودة في تطوير البرامج ونشرها. يتم استخدامه لتوثيق صور التوزيعة .iso والحاويات وحزم البرامج والملفات الثنائية والملفات المصدر والتصحيحات وحتى مقتطفات التعليمات البرمجية الصغيرة المضمنة في ملفات أخرى. يقدم SPDX مجموعة شاملة من العلاقات لربط عناصر البرنامج داخل المستندات وعبر مستندات SBOM. يمكن أيضًا لوثيقة SPDX SBOM أن تشير إلى مصادر خارجية مثل قاعدة بيانات الضعف الوطنية وبيانات التعريف الأخرى لنظام التعبئة والتغليف.
هناك العديد من المكونات التي تشكل مستند SPDX: معلومات الإنشاء، ومعلومات الحزمة، ومعلومات الملف، ومعلومات المقتطف، ومعلومات الترخيص الأخرى، والعلاقات، والتعليقات التوضيحية.
يمكن تمثيل كل مستند SPDX من خلال تنفيذ نموذج بيانات كامل وبناء جملة المعرف، مما يسمح بالتبادل بين تنسيقات إخراج البيانات المختلفة (RDF/XML، قيمة العلامة، XLSX) والتحقق الرسمي من دقة المستند. يتضمن الإصدار 2.2 من مواصفات SPDX تنسيقات إخراج إضافية مثل JSON وYAML وXML، ويتناول أيضًا "المجهولات المعروفة" كما هو محدد في مستند SBOM الأصلي. يمكن العثور على مزيد من المعلومات حول نموذج البيانات الأساسي لـ SPDX في الملحق الثالث لمواصفات SPDX وعلى موقع SPDX الإلكتروني.
التنسيق القياسي لـ CycloneDX SBOM
تم إنشاء مشروع CycloneDX في عام 2017 بهدف تطوير معيار SBOM مؤتمت بالكامل يركز على الأمان. تقوم مجموعة العمل الأساسية بإصدار إصدارات غير قابلة للتغيير ومتوافقة مع الإصدارات السابقة سنويًا، باستخدام عملية معايير قائمة على المخاطر. يتضمن CycloneDX المواصفات الحالية مثل معرفات وتعبيرات ترخيص Package URL وCPE وSWID وSPDX. يمكن تمثيل وحدات SBOM بتنسيقات مختلفة بما في ذلك XML وJSON ومخازن البروتوكول (protobuf).
CycloneDX عبارة عن مواصفات SBOM خفيفة الوزن مخصصة للاستخدام في تحليل مكونات سلسلة التوريد وأمن البرامج. فهو يتيح الاتصال بمخزون مكونات البرامج والخدمات الخارجية والعلاقات بينهما. إنه معيار مفتوح المصدر تم تطويره بواسطة OWASP (مشروع أمان تطبيقات الويب المفتوحة).
يستطيع CycloneDX التقاط الطبيعة الديناميكية للمكونات مفتوحة المصدر التي يمكن الوصول إلى كود مصدرها وتعديله وإعادة توزيعه. يمكن أن تمثل المواصفات نسب المكون، بما في ذلك أسلافه وأحفاده ومتغيراته، وتصف نسب المكون من أي منظور، بالإضافة إلى الالتزامات والتصحيحات والاختلافات التي تجعله فريدًا.
يحتفظ مشروع CycloneDX بقائمة من الأدوات المعروفة مفتوحة المصدر والخاصة التي تدعم المعيار أو المتوافقة معه، والتي يدعمها المجتمع.
تحدد مواصفات CycloneDX نموذجًا تفصيليًا للكائن يضمن الاتساق عبر جميع عمليات التنفيذ. يمكن التحقق من صحته باستخدام مخطط XML ومخطط JSON، أو باستخدام واجهة سطر الأوامر CycloneDX. يتم أيضًا توفير أنواع الوسائط الخاصة بـ XML وJSON للتسليم الآلي واستهلاك التنسيقات المدعومة.
قد تحتوي وحدات SBOM الخاصة بـ CycloneDX على المعلومات التالية: بيانات تعريف BOM والمكونات والخدمات والتبعيات والتركيبات والملحقات
CycloneDX هو معيار SBOM شامل يمكنه وصف أنواع مختلفة من البرامج، بما في ذلك التطبيقات والمكونات والخدمات والبرامج الثابتة والأجهزة. يتم استخدامه على نطاق واسع عبر الصناعات لوصف حزم البرامج والمكتبات والأطر والتطبيقات وصور الحاويات. يتوافق المشروع مع الأنظمة البيئية التطويرية الرئيسية ويقدم تطبيقات لمصانع البرمجيات مثل إجراءات GitHub، مما يمكّن المؤسسات من أتمتة إنشاء SBOM بشكل كامل.
علامة سويد
تم إنشاء علامات SWID، أو علامات تعريف البرامج، لتمكين المؤسسات من تتبع البرامج المثبتة على أجهزتها المُدارة بطريقة شفافة. تم إنشاء المعيار من قبل ISO في عام 2012 وتمت مراجعته ليصبح ISO/IEC 19770-2:2015 في عام 2015. تحتوي هذه العلامات على معلومات تفصيلية حول إصدار محدد لمنتج برمجي.
يحدد معيار SWID دورة حياة برنامج التتبع: تتم إضافة علامة SWID إلى نقطة النهاية أثناء تثبيت منتج البرنامج، ويتم إزالتها بواسطة عملية إلغاء تثبيت المنتج. ويتوافق وجود علامة SWID محددة بشكل مباشر مع وجود البرنامج الذي تصفه. تقوم العديد من منظمات التقييس، مثل مجموعة الحوسبة الموثوقة (TCG) وفريق عمل هندسة الإنترنت (IETF)، بدمج علامات SWID في معاييرها.
لتتبع دورة حياة أحد مكونات البرنامج، تحتوي مواصفات SWID على أربعة أنواع من العلامات: الأساسية، والتصحيح، والمجموعة، والتكميلية. تخدم علامات المجموعة والأساسية وعلامات التصحيح أغراضًا مماثلة من حيث أنها تصف وجود ووجود أنواع مختلفة من البرامج، مثل مثبتات البرامج وعمليات تثبيت البرامج وتصحيحات البرامج والحالات المحتملة لمنتجات البرامج. من ناحية أخرى، توفر العلامات التكميلية تفاصيل إضافية غير موجودة في علامات المجموعة أو العلامات الأساسية أو علامات التصحيح.
يمكن ربط العلامات التكميلية بأي علامة أخرى لتوفير بيانات وصفية إضافية قد تكون مفيدة. يمكن أن تؤدي علامات SWID معًا مجموعة متنوعة من الوظائف، مثل اكتشاف البرامج وإدارة التكوين وإدارة الثغرات الأمنية.
يمكن أن تعمل علامات SWID كـ SBOM، حيث أنها توفر معلومات تعريفية لمكون البرنامج، وقائمة من الملفات وتجزئة التشفير لعناصر المكون، ومعلومات المصدر حول منشئ SBOM (العلامة) ومنشئ مكون البرنامج. يمكن أيضًا ربط العلامات بعلامات أخرى، مما يسمح بتمثيل شجرة التبعية.
يمكن إنشاء علامات SWID أثناء عملية الإنشاء والتعبئة، مما يتيح الإنشاء التلقائي لـ SBOM المستند إلى علامة SWID عند تعبئة مكون البرنامج المقابل.
لماذا تعتبر فواتير المواد البرمجية مهمة؟
أصبحت قائمة مواد البرامج (SBOMs) ذات أهمية متزايدة للمؤسسات لأنها تهدف إلى إدارة البرامج التي تستخدمها وتأمينها. لا توجد إجابة مختصرة على سؤال ما هو SBOM. توفر SBOMs قائمة شاملة بجميع المكونات والتبعيات التي تشكل حزمة البرامج، بما في ذلك معلومات مثل أرقام الإصدارات والمؤلفين ومعلومات الترخيص. تعتبر هذه المعلومات بالغة الأهمية للأمان والامتثال، وكذلك لتتبع مصدر مكونات البرامج.
تستخدم العديد من المؤسسات، بما في ذلك تلك العاملة في الصناعات الخاضعة للتنظيم، SBOMs لضمان الامتثال للوائح مثل اللائحة العامة لحماية البيانات (GDPR) ومعيار أمان بيانات صناعة بطاقات الدفع (PCI DSS). يمكن لـ SBOMs أيضًا المساعدة في تحديد وإدارة نقاط الضعف في البرامج، وكذلك في تتبع مصدر مكونات البرامج. بالإضافة إلى ذلك، يمكن لـ SBOMs المساعدة في إدارة تراخيص البرامج، مما يضمن أن المؤسسات تستخدم البرامج بما يتوافق مع شروط تراخيصها.
يمكن أيضًا استخدام SBOMs لتتبع استخدام البرامج مفتوحة المصدر، والتي أصبحت شائعة بشكل متزايد في تطوير البرمجيات. من خلال توفير معلومات مفصلة حول المكونات مفتوحة المصدر المستخدمة في حزمة البرامج، يمكن لـ SBOMs مساعدة المؤسسات في ضمان الامتثال للتراخيص مفتوحة المصدر.
علاوة على ذلك، يمكن استخدام SBOMs لدعم تطوير البرامج وصيانتها. من خلال توفير معلومات مفصلة حول المكونات المستخدمة في حزمة البرامج، يمكن لـ SBOMs مساعدة المطورين في فهم تبعيات حزمة البرامج، مما يمكن أن يساعدهم في تحديد مشكلات التوافق المحتملة واتخاذ قرارات مستنيرة بشأن استخدام المكونات الجديدة.