الاعتماديات المتعدية، أي اعتماديات اعتمادياتك واعتمادياتها وهكذا، تشكّل غالبية المكونات البرمجية في التطبيق الحديث. فقد يكون لتطبيق في بيئة الإنتاج خمسون اعتمادية مباشرة، لكن هذه الاعتماديات الخمسين قد تكون لها مجتمعةً آلاف الاعتماديات المتعدية. والثغرة في اعتمادية مباشرة، التي تركز عليها معظم فرق الأمن، هي المخاطر الظاهرة. أما الثغرة في اعتمادية متعدية في العمق الثالث أو الرابع، أي على بُعد ثلاث أو أربع خطوات من المتطلبات المباشرة للتطبيق، فهي المخاطر التي لا تديرها معظم فرق التطوير بفاعلية، ولا تغطيها كثير من أدوات SCA تغطية كاملة ضمن نطاقها المضبوط.
مشكلة عمق التعرّض هي التحدي المحدد في إدارة المخاطر. فثغرة الاعتمادية المباشرة يمكن إدارتها: إذ يمكن تحديد الاعتمادية، ومعرفة الإصدار المعرّض للثغرة، وتطبيق التحديث على المتطلبات المباشرة للتطبيق. أما ثغرة اعتمادية متعدية في العمق الثالث فتتطلب: تحديد وجود الاعتمادية المتعدية في الشجرة، ومعرفة أي من اعتماديات التطبيق المباشرة أو غير المباشرة تتضمنها، وإيجاد مسار تحديث للاعتمادية المتعدية تقبله جميع الاعتماديات الوسيطة بين التطبيق والحزمة المعرّضة للثغرة، والتحقق من أن التحديث لا يعطّل الاعتماديات الوسيطة. وهذا صعب في الغالب، ومستحيل أحيانًا دون تغييرات كبيرة في شجرة الاعتماديات.
حالة Log4Shell هي المثال التوضيحي الحاسم. فقد أثّرت ثغرة Log4j في ملايين التطبيقات، لم يعلن معظمها اعتمادًا مباشرًا على Log4j، بل استخدمتها بشكل متعدٍّ عبر أطر التسجيل وخوادم التطبيقات والبرمجيات الوسيطة التي تضمّنت Log4j اعتماديةً متعدية. واكتشفت مؤسسات كثيرة أنها متأثرة فقط عند نشر CVE وإجرائها فحصًا كاملًا للاعتماديات المتعدية، لا لأن إدارتها للاعتماديات المباشرة كانت قاصرة، بل لأن الاعتماديات المتعدية في مستويات عمق متعددة لم تكن تخضع للرصد المستمر.
لماذا يهم هذا
تكتسب مخاطر الاعتماديات المتعدية أهميتها لـTPRM لأن مورّدي البرمجيات الذين تنشر منتجاتهم لديهم أشجار اعتماديات متعدية قد تحتوي على مكونات معرّضة للثغرات لا يرصدونها بفاعلية. فالمورّد الذي يقتصر فحص SCA لديه على الاعتماديات المباشرة قد يُصدر تقارير SCA نظيفة بينما يشغّل اعتماديات متعدية معرّضة للثغرات. والسؤال عن تغطية الاعتماديات المتعدية هو الذي يكشف ما إذا كانت إدارة الثغرات لدى المورّد تمتد إلى شجرة الاعتماديات كاملة.
- ضبط SCA على الاعتماديات المباشرة فقط، دون تغطية كاملة للعمق المتعدي
- تأخر اكتشاف الثغرات المتعدية: اكتشافها عبر أبحاث خارجية لا عبر الرصد الداخلي
- عدم تقييم تعقيد مسار التحديث للاعتماديات المتعدية
- عمق SBOM: هل تغطي SBOM الشجرة المتعدية كاملة أم الاعتماديات المباشرة فقط
- تعرّض على غرار Log4Shell: عدم الرصد المستمر للاعتماديات المتعدية المُدرجة
كيف تبدو الممارسة الجيدة
تطبّق برامج إدارة مخاطر الاعتماديات المتعدية الناضجة SCA مع فحص بالعمق المتعدي الكامل، وتحتفظ بقوائم مكونات برمجية تشمل شجرة الاعتماديات المتعدية كاملة، وترصد الثغرات المنشورة حديثًا في شجرة الاعتماديات كاملة لا في الاعتماديات المباشرة فقط، وتُدرج تغطية الاعتماديات المتعدية سؤالًا في تقييم المورّدين.
- فحص SCA بالعمق المتعدي الكامل، دون الاقتصار على الاعتماديات المباشرة
- SBOM متعدية كاملة: جميع الاعتماديات في جميع الأعماق
- الرصد المستمر للثغرات في شجرة الاعتماديات كاملة
- تقييم جدوى مسار التحديث للثغرات المتعدية
- سؤال التغطية المتعدية في تقييمات أمن برمجيات المورّدين
الأدوات
SCA بالعمق الكامل: Snyk وDependabot وDependency-Check من OWASP مع فحص متعدٍّ كامل
تتفاوت أدوات SCA في تغطيتها للاعتماديات المتعدية، فبعضها يفحص الاعتماديات المباشرة فقط افتراضيًا، وبعضها يفحص شجرة الاعتماديات كاملة. وبالنسبة إلى ممارسي TPRM، فإن السؤال عمّا إذا كانت أدوات SCA لدى المورّد تفحص شجرة الاعتماديات المتعدية كاملة وإلى أي عمق يمثّل سؤالًا محددًا عن التغطية. ويوفّر كلٌّ من Snyk وDependabot الفحص المتعدي الكامل خيارًا قابلًا للضبط.
اكتمال SBOM: Syft لإنشاء SBOM متعدية كاملة؛ وDependency-Track لإدارة SBOM المتعدية
توفّر أدوات إنشاء SBOM التي تُنتج شجرة الاعتماديات المتعدية الكاملة، لا الاعتماديات المباشرة فقط، جرد المكونات الكامل الذي يتطلبه تقييم المخاطر المتعدية. ويستطيع Syft إنشاء قوائم مكونات برمجية بصيغة CycloneDX مع تغطية قابلة للضبط لعمق الاعتماديات المتعدية.
تحديات الحوكمة
يتمثل تحدي الحوكمة في مخاطر الاعتماديات المتعدية في تعقيد المعالجة. فقد لا تتوفر لثغرات الاعتماديات المتعدية مسارات تحديث مباشرة، إذ قد يتطلب تحديث اعتمادية متعدية انتظار نشر تحديث لاعتمادية في المنبع، أو تجاوز شجرة الاعتماديات بطرق تُنشئ مخاطر توافق. ويكمن حل الحوكمة في ترتيب أولويات معالجة الثغرات المتعدية بحسب قابلية الوصول، أي ما إذا كان التطبيق يستخدم فعلًا مسار الشيفرة المعرّض للثغرة.
- ضبط SCA على العمق المتعدي الكامل، لا على الاعتماديات المباشرة فقط
- إنشاء قوائم مكونات برمجية متعدية كاملة تشمل جميع مستويات الاعتماديات
- الرصد المستمر للثغرات المتعدية المنشورة
- تقييم قابلية الوصول للثغرات المتعدية: هل تُستدعى الشيفرة المعرّضة للثغرة فعلًا
- إدراج التغطية المتعدية في تقييم برنامج SCA لدى المورّد
إذا كنت فريقًا صغيرًا
أجرِ فحصًا كاملًا للاعتماديات المتعدية على تطبيقك في بيئة الإنتاج باستخدام Snyk أو Dependency-Check من OWASP مع تفعيل الوضع المتعدي. قارن النتائج بآخر تقرير SCA لديك غطّى الاعتماديات المباشرة فقط. الفرق، أي الثغرات الموجودة في الاعتماديات المتعدية التي لم تظهر في فحص الاعتماديات المباشرة، هو فجوة تعرّضك المتعدي الحالية. ولكل ثغرة حرجة في هذا الفرق، قيّم ما إذا كان مسار الشيفرة المعرّض للثغرة قابلًا للوصول من تطبيقك، وحدّد الأولويات وفقًا لذلك.
- إجراء فحص كامل للاعتماديات المتعدية ومقارنته بالفحص المقتصر على الاعتماديات المباشرة
- تحديد فرق التعرّض المتعدي
- تقييم قابلية الوصول للثغرات المتعدية الحرجة
- إدراج التغطية المتعدية في أسئلة تقييم المورّدين
ما الذي ينبغي اشتراطه
اسأل مباشرةً:
«هل يغطي فحص SCA لديكم شجرة اعتمادياتكم المتعدية كاملة، لا الاعتماديات المباشرة فقط، وهل تتضمن SBOM لديكم جميع المكونات المتعدية؟ وكيف حددتم ثغرة Log4Shell واستجبتم لها، علمًا بأن Log4j تكون عادةً اعتمادية متعدية لا مباشرة؟»
ما تتوقعه دليلًا
- تأكيد الفحص المتعدي الكامل عبر SCA
- SBOM متعدية كاملة
- الجدول الزمني للاستجابة لـLog4Shell بوصفها دراسة حالة لثغرة متعدية
- عملية رصد الثغرات المتعدية
ينبغي أن يُسأل المورّد الذي يؤكد إدارة الثغرات عبر SCA عن تغطية عمق الاعتماديات المتعدية. فـSCA للاعتماديات المباشرة نقطة بداية، أما الفحص المتعدي الكامل فهو الصورة الكاملة. وتُعدّ Log4Shell حالة الاختبار النموذجية لمعرفة ما إذا كان هذا التمييز قد فُعّل.
كيف تُثبت ذلك
- سجلات الفحص المتعدي الكامل عبر SCA
- SBOM متعدية كاملة
- تنفيذ رصد الثغرات المتعدية
- عملية تقييم قابلية الوصول
الخلاصة الرئيسية
الاعتماديات المباشرة: صفر ثغرات حرجة. العمق المتعدي الرابع: ثغرة حرجة في سلسلة اعتماديات إطار التسجيل. نطاق SCA: الاعتماديات المباشرة. العمق الرابع: خارج النطاق. وصلت Log4Shell إلى ملايين التطبيقات عبر اعتماديات متعدية لم تعلنها فرقها مباشرة. فالفحص المتعدي الكامل يجد ما يفوّته الفحص المقتصر على الاعتماديات المباشرة، وقوائم المكونات البرمجية المتعدية الكاملة تجرد ما وجده الفحص الكامل، وتقييم قابلية الوصول يرتب أولويات ما حدده الجرد. والسؤال «هل يغطي SCA لديكم شجرتكم المتعدية كاملة؟» هو حالة الاختبار لمعرفة ما إذا كانت تغطية البرنامج تطابق نموذج التهديد.