تطوير البرمجيات الآمن / متقدم: المكونات والأدلة والاستجابة / الدرس 13
بناء قائمة مكونات لقرارات مخاطر التبعيات
تحديد ما يشحن وكيف يستخدم والدليل اللازم قبل تقرير انطباق تنبيه.
في هذه الصفحة
أهداف الدرس
- فصل قوائم المعلن والمحلول والمبني والمنشور.
- فصل هوية المكون وانطباق التنبيه وأولوية المعالجة.
السؤال عن البرمجيات التي تصفها القائمة
يعلن ملف التبعيات ما ينوي المشروع استخدامه؛ ويسجل ملف القفل الاختيارات المحلولة وفق نموذج مدير الحزم؛ وتصف قائمة مكونات ملف البناء ما يحتويه. قد يختلف النظام المنشور مرة أخرى بسبب التغليف أو المكونات الاختيارية أو إعداد لاحق. سم نطاق كل قائمة ومراجعتها. يختلف مسار تعرض منسق مخصص للتطوير عن محلل مستندات مضمن في خدمة الورش؛ ولا يصنف أي منهما بالاسم وحده. تدعم القائمة التحقيق، لكنها لا تثبت أمان كل مكون أو سلامة ترخيصه أو إمكان الوصول إليه أو صحة إعداده.
حفظ هوية تمنع المطابقة الخاطئة
قد تحتاج هوية المكون نظام الحزم والنطاق والاسم والإصدار والمصدر والعلاقة بملف البناء. ليست حزمتان متشابهتا الاسم من نظامين مختلفين المكون نفسه تلقائيا. يقارن البرنامج هويات مختلقة صريحة دون الاستعلام عن موجز تنبيهات، ويستخدم إصدارات دقيقة بلا خوارزمية لمجالات الإصدارات عمدا. تختلف دلالات الإصدارات والترقيعات المنقولة وتغليف الموردين، فلا تقارن الإصدارات كسلاسل اعتباطية أو تعمم محللا منزليا واحدا. استخدم أداة معتمدة تراعي نظام الحزم، واحفظ افتراضاتها عند تقييم سجلات حقيقية.
component = {"ecosystem":"lab-python", "name":"schedule-reader", "version":"2.4.1"}
advisory_case = {"ecosystem":"lab-python", "name":"schedule-reader", "version":"2.4.1"}
other = {"ecosystem":"lab-java", "name":"schedule-reader", "version":"2.4.1"}
def same_identity(left, right):
return all(left[key] == right[key] for key in ("ecosystem", "name", "version"))
assert same_identity(component, advisory_case) is True
assert same_identity(component, other) is False
print("synthetic component identities distinguished")
synthetic component identities distinguished
يفحص البرنامج الكامل قرارَي تطابق دقيقين. الأسماء مختلقة ولا تعني ضعفا حقيقيا. لا يحل أو يثبت حزمة أو يبحث تنبيها أو يقيم مجال إصدار.
تسجيل العلاقات وسياق الاستخدام
تستطيع صيغة SBOM تمثيل المكونات والعلاقات، لكن المراجعة المفيدة تحتاج معرفة ملف البناء وعملية البناء المقصودين. مثال JSON قائمة تدريب مخصصة عمدا، وليس مستند SPDX صالحا. يميز الاستخدام المباشر للتطبيق من علاقة محلل غير مباشر، ويحفظ حالة استخدام أثناء التشغيل غير معروفة. يستدعي المجهول التحقيق، لا إعلانا تلقائيا بالأمان أو ثبوت إمكان الاستغلال. حتى SBOM مولدة بأداة معتمدة تحتاج تقييم شمولها ومطابقتها للملف المشحون وفق العملية المختارة.
{"format":"classroom-inventory-v1","artifact":"workshop-service-lab","sourceRevision":"lab-revision-8","components":[{"name":"schedule-reader","version":"2.4.1","relationship":"direct","runtimeUse":"confirmed-in-model"},{"name":"text-decoder","version":"1.6.0","relationship":"transitive-of-schedule-reader","runtimeUse":"unknown"}]}
هذه البيانات غير التنفيذية ليست صيغة SPDX ولا نتيجة ماسح. المكونات مختلقة ويحفظ unknown الحقيقة الناقصة بدلا من ادعاء الضعف أو الأمان.
فصل الانطباق عن الاستعجال
يسأل تطابق التنبيه هل تنطبق هوية المكون وشروط التأثر. ثم يراعي ترتيب الأولوية التعرض وأثر العمل والأدلة المناسبة والتخفيف المتاح وكلفة ترك عدم اليقين دون حل. لا يجيب تصنيف الشدة وحده عن كل ذلك. وفي المقابل، لا يثبت غياب مسار وصول موضح استحالة الوصول، خاصة عندما تكون القائمة ناقصة. سجل سبب قرار الانطباق ومالكه. استخدم أمثلة مختلقة للتعلم وسجلات المشرف الرسمية للحالات الحقيقية؛ ولا تختلق معرف تنبيه حقيقيا أو تزعم تأثر حزمة دون فحص مصدرها الموثوق.
فحص الملف بعد تغيير التبعية
لا يثبت تحديث تصريح تبعية تغير المكون المحلول أو المشحون. افحص ملف القفل وقائمة ملف البناء المعتمدين، ثم نفذ انحدارات توافق وأمن مفيدة عند الحد المتأثر. حدد هل يحتاج الإصلاح إعدادا أو شفرة أيضا. احفظ النتيجة القديمة ودليل الاستبدال الفعلي، ولا تغلقها لمجرد اكتمال أمر تحديث. لا يحدث المساق حزما أو يثبتها. يعلم نموذج الهوية المحلي الاستدلال اللازم لطلب دليل دقيق، وتجنب استبدال المعالجة المتحققة بإجراءات إدارة القوائم.
الأخطاء الشائعة وإصلاحها
تعلم حزمة مشابهة الاسم متأثرة
- لماذا يحدث؟
- أهملت هوية النظام والمكون.
- كيف تصلحه؟
- قارن الهوية والشروط الرسمية.
- كيف تتجنب تكراره؟
- احفظ النطاق والمصدر والإصدار والملف.
يغلق تحديث التصريح النتيجة
- لماذا يحدث؟
- لم يفحص المحلول والمشحون.
- كيف تصلحه؟
- افحص الملف والسلوك بعد التغيير.
- كيف تتجنب تكراره؟
- اربط الدليل بمراجعة بناء.
يسمى الاستخدام المجهول غير متأثر
- لماذا يحدث؟
- يخلط نقص الدليل بالغياب.
- كيف تصلحه؟
- حقق في الاستخدام وسجل الجهل.
- كيف تتجنب تكراره؟
- اشترط سببا مدعوما لقرار الانطباق.
اختبر فهمك
1. يسرد ملف القفل مكونا مصححا، لكن المحلل القديم ما زال مضمنًا. هل اكتملت المعالجة؟
اعرض الحل المشروح
لا. حدد الملف الذي يحتوي المحلل القديم وسبب احتفاظ التغليف به. افحص الاستبدال في قائمة البناء المعتمد الفعلية، ونفذ فحوص السلوك المتأثر. ملف القفل أحد المدخلات، وليس إثباتا للمحتوى الذي يصل إلى المستخدمين.
2. لماذا لا تعد قائمة المكونات تقرير نقاط ضعف؟
اعرض الحل المشروح
تصف القائمة المكونات المحددة وعلاقاتها في نطاق معلن. يحتاج انطباق الضعف شروط تأثر موثوقة وسياق استخدام، وتحتاج الأولوية أيضا استدلال الأثر والتعرض. اربط هذه السجلات مع إبقائها مختلفة، حتى لا تتحول هوية أو معرفة استخدام ناقصة بصمت إلى ادعاء أمان.
أهم ما تعلمته
- يهم نطاق القائمة وهوية الملف.
- يختلف الانطباق وأولوية المعالجة.
- افحص المحتوى المشحون بعد التغيير.