هذه هي الحلقة الثالثة في سلسلة من المقالات حول النوع الأكثر شيوعًا من هجمات سلسلة توريد البرامج: تلك التي تسيء استخدام السجل العام لـ المصدر المفتوح مكونات البرمجيات. بعد التحليل في الحلقة السابقة “تشريح الحزم الضارة: ما هي الاتجاهات؟"كيفية قيام الجهات الفاعلة السيئة بحقن سلوك ضار في المكونات المنشورة الجديدة أو الموجودة، نحن على استعداد لارتداء سترات مكافحة الحرائق لدينا ودراسة كيف يمكننا بنجاح حظر البرامج الضارة التي يتم تسليمها بهذه الطريقة، أو بدلاً من ذلك، التعامل مع حادث سيبراني يحتمل أن يكون خطيرًا لأننا اتخذنا إجراءات النهج الخاطئ.
لدى معظم المتخصصين في مجال الأمن أفكار حول كيفية التعامل مع هذا التهديد. وقد سمعنا مديري الأمن يقولون دون تردد: SCA تُخبرك الأدوات بالفعل متى يكون إصدار الحزمة برمجيًا ضارًا. أو أنها تعتمد على مكونات برمجية معروفة ومراجعة بدقة، حيث يتم اكتشاف أي برمجية خبيثة وإزالتها فورًا. تستخدم هذه الأدوات إصدارات ثانوية/تصحيحات مفتوحة المصدر لإصلاح الثغرات الأمنية تلقائيًا، وهذه هي الطريقة الصحيحة والموصى بها لتقليل مخاطر تبعيات المصادر المفتوحة، باتباع "التصحيح في وقت مبكر ، التصحيح في كثير من الأحيان" المبدأ.
في هذه الحلقة، سنراجع سبب خطأ هذه الأفكار، وكيف تساهم هذه المفاهيم الخاطئة في زيادة شعبية آلية الهجوم هذه، وفي المخاطر الهائلة التي تواجهها المؤسسات. سننتهي بالحديث عن ما ينجح، وهو الجهد والموارد المستخدمة.
المفاهيم الخاطئة الشائعة
خلال رحلتنا مع أمن البرمجيات، رأينا تقنيات الهجوم تتطور ومجموعة واسعة من الأفكار من الأشخاص المهتمين بالأمن. غالبًا ما تسيء المؤسسات فهم ما يمكن فعله ضد هذا التهديد، لذلك سنفحص أولاً ما لا ينجح، وسنلخصه في قائمة المفاهيم الخاطئة التالية، غير الشاملة.
الاعتقاد الخاطئ رقم 1: SCA الأدوات تقوم بالفعل بالإبلاغ عن المكونات الضارة
في الواقع! ولكن بعد الحقيقة... عندما يكون من المحتمل أن يكون الوقت قد فات إذا تم استخدام العنصر في بناء برنامج، وكان المجرمون السيئون قد اكتسبوا بالفعل موطئ قدم في المطور أو CI/CD ربما تم استخراج الأسرار، أو تنزيل برامج ضارة إضافية وتثبيتها، أو ربما تحرك العدو جانبيًا وتمكن بالفعل من الوصول إلى مكان آخر.
تحليل تكوين البرمجيات (SCAصُممت أدوات () لتحديد الثغرات الأمنية المعروفة المحتملة. تُؤدي الأدوات الحديثة دورًا رائعًا من خلال زيادة نسبة الإشارة إلى الضوضاء، وتحديد ما إذا كانت الثغرة قابلة للوصول أو الاستغلال بالفعل. لكنها عديمة الفائدة ضد البرامج الضارة الجديدة. تخيّل المكون الخبيث على أنه ثغرة يوم الصفر: فقط عند اكتشاف سلوكه الخبيث، يُبلّغ عن المكون إلى سجل الاحتجاز، والذي بعد مراجعة من قِبل فريق أمني، يُؤكّد أنه خبيث ويُزال من السجل. [1].
في تلك المرحلة، العالم (بما في ذلك SCAس) يعلم أن تثبيت أو استخدام المكون (أو بعض إصدارات مكون موجود) ليس بالأمر الجيد. ولكن هذا يحدث عندما لا يكون المكون متاحًا من سجل النظام.إن معرفة وجود ثغرات أمنية في مكونات الطرف الثالث، أو حتى المكونات التي تم تصنيفها على أنها ضارة بواسطة السجل أمر جيد، ولكن للأسف SCA أو أن أدوات التدقيق الشائعة لا تساعد في هذا السياق. ما لم يكن SCAيمكن لأداة التدقيق أن تعرف مسبقًا أن أحد المكونات ضار قبل استخدامه في مؤسستك.
تذكر أن أي حل ضد المكونات الضارة مفتوحة المصدر يجب أن يكتشفها أثناء التنقل، بين وقت نشر المكون في السجل ووقت استخدام المكون (الإصدار) لأول مرة في مؤسستك. وهذا يشمل مكونات متعدية.
المفهوم الخاطئ رقم 2: التحكم في البرامج النصية للتثبيت في وقت الإنشاء يمنع السلوك الضار من المكونات مفتوحة المصدر
يوفر العديد من مديري الحزم القدرة على تشغيل البرامج النصية (المضمنة في مكون tarball [2]), لأسباب مشروعة، مثل تجميع العناصر المطلوبة على منصات مختلفة، أو إنشاء تعليمات برمجية، أو إجراء اختبارات، ويجب أن نعلم جميعًا أنه يمكن إساءة استخدامها من قبل جهات فاعلة سيئة إذا تم تضمين نصوص برمجية ضارة في كرة القطران، أو إذا كان المهاجم قادرًا على إنشاء برنامج ضار تشغيل البرنامج النصي بدلاً من البرنامج الجيد.
بمعرفة ذلك، يمكننا تكوين مدير الحزم لتجاهل البرامج النصية. على سبيل المثال، مع NPM - تجاهل النصوص العلم (أو خاصية التكوين في ملف .npmrc file) يتخطى البرامج النصية أثناء التثبيت. قد يؤدي هذا إلى بعض المشكلات لأن تشغيل البرامج النصية أمر شائع في العديد من الأنظمة البيئية: بعض مديري الحزم لا يسمحون حتى بتعطيل تنفيذ البرنامج النصي (تلميح: المطالبة "ما مديري الحزم الذين لا يسمحون بتعطيل تنفيذ البرامج النصية للتثبيت؟"في الذكاء الاصطناعي المفضل لديك). لكن هذا لا يوفر الحماية بشكل عام (نحتاج إلى التأكد من أن تكوين تعطيل التخطي موجود في كل مكان).
وعندما لا يكون السلوك الضار موجودًا في البرامج النصية للتثبيت ولكن في البرنامج المطلوب تنفيذه في وقت التشغيل، فإن هذا الخيار وحده لا يحمينا.
الاعتقاد الخاطئ رقم 3: يمنع تثبيت الإصدار تثبيت المكونات الضارة
هناك مقايضة بين الترقيع مبكرًا وفي كثير من الأحيان باستخدام الإصدارات المفتوحة (السماح لمدير الحزم بتثبيت التحديثات الجديدة تلقائيًا عند توفرها لإصلاحات الأمان) و تثبيت الإصدار (وجود جميع التبعيات المباشرة والمتعدية للبرنامج في إصدار ثابت). إن المبادئ الأمنية عنيدة ومتناقضة في بعض الأحيان، كما يحدث مع "التصحيح المبكر، والتصحيح المتكرر" و "لا ينبغي الاستخفاف بالترقية". يقوم بعض مديري الحزم بإجراء تحديثات تلقائية لنطاقات الخادم بالطريقة الموصى بها. عظيم إذا كنت تريد أيضًا تلقي التحديثات الضارة! نعم، يجب تحديث المكونات لتلقي الإصلاحات الأمنية التي تعمل على إغلاق الثغرات الأمنية في أسرع وقت ممكن، ولكن... لا تسمح أبدًا لمدير الحزم بالقيام بذلك تلقائيًا.
المفهوم الخاطئ رقم 4: يعد استخدام المكونات الموثوقة أمرًا آمنًا. سيتم العثور على أي إصدار ضار والكشف عنه وإزالته على الفور.
لماذا يعتبر أحد المكونات موثوقًا به؟ ربما لأنه يحظى بشعبية كبيرة، حيث يبحث العديد من الأشخاص عن نقاط الضعف، وعدد كبير من المساهمين في الصيانة، والعديد من صيانين النواة الذين يراجعون جميع المكونات بعناية. pull requestsالواقع مختلف تمامًا. يتم صيانة بعض المكونات الأساسية بواسطة مطور واحد غير مدفوع الأجر. تحتوي الأطر المستخدمة على نطاق واسع على عدد قليل من المساهمين المنتظمين، مع انخفاض عددهم بسرعة commitلكل مشرف (المشاريع الشائعة لها ذيل طويل من المساهمين الذين يقومون ببعض المهام commit ولا تعود أبدا). وتكثر المشاريع الشعبية مع مشرف واحد.
تخيل نفسك تقول "أوه، نحن نستخدم صور Spring Boot / Angular / React / PyTorch / Docker الأساسية، لذا فإن المخاطر التي تتحدث عنها منخفضة جدًا." ربما يكون هذا صحيحًا، فنحن موردي خدمات الأمن نقوم بالترويج للتخويف طوال الوقت، والتدخل في فرق التطوير للتخفيف من المخاطر القابلة للنقاش هو هراء. قد تميل إلى الانتقال إلى فقرة قبول المخاطر (في القسم التالي) وبذلك يتم كل شيء. ولسوء الحظ، فإن المكونات الأكثر شعبية هي أهداف للجهات الفاعلة السيئة، وعلى سبيل المثال، الشعبية تعرضت مكتبة PyTorch للهجوم في الماضي.
"تم العثور عليه والكشف عنه وإزالته على الفور". وتستغرق إزالة المكون الضار الجديد من السجل العام أيامًا. تتوخى السجلات الحذر بشأن إزالة إصدار المكون، للأبد. وتفيد تجربتنا أنه بمجرد الإبلاغ من جانبنا، فإن متوسط الوقت الذي يستغرقه السجل لإزالة الإصدار المتأثر هو 39 ساعة، أي أكثر من يوم ونصف. توجد مكونات ضارة تظهر بعد أسبوع من الإبلاغ الأولي في السجل قبل الإزالة. وفي بعض الحالات، تتم إزالة المكون فقط بعد قيام الضحية أو شركة الاستجابة للحوادث بالإبلاغ عن حادث يتعلق بالمكون.
ما الذي لا يعمل ضد المكونات الضارة
وأي نهج غير محدد سوف يفشل فشلا ذريعا. وهذا أمر مؤكد، فأنت لا تقدم تدابير مضادة فعالة للمخاطر المرتبطة بهذا التهديد.
بناء تقليديا SCA تُخبرك الأدوات عن البرامج الضارة المعروفة، لكن لديها نطاق كشف واسع. ما لم تُجرِ هذه الأدوات كشفًا استباقيًا للبرامج الضارة مع حظرٍ قسريٍّ للمكونات الضارة، فلن تُجدي نفعًا في مواجهة هذا التهديد.
يمكن أن يساعد تعطيل البرامج النصية للتثبيت ولكن يجب تنفيذه في كل مكان يحتاج فيه المكون إلى التثبيت. نفس الشيء مع تثبيت الإصدار، حيث لا يمكن تثبيت الإصدارات من الحالة الأولية الآمنة إلى الأبد.
إن افتراض أن المكونات الشائعة تحظى باهتمام كافٍ بحيث لا يمكن حقنها بسلوك غير مقصود في هجوم على سلسلة التوريد دون اكتشاف فوري تقريبًا لمنع أي ضرر هو افتراض ساذج ومحفوف بالمخاطر. أنت لا تريد أن تعيش على الحافة، أليس كذلك؟
إذا توقفت عند هذه النقطة، ثم قبول المخاطر الشيء الوحيد الذي يمكنك فعله هو: هذا هوcisأي شيء يجب توثيقه في نموذج التهديد/تقييم المخاطر، بما في ذلك مبررات قبول المخاطر وتداعياتها المحتملة. ساهم في رفع مستوى الوعي من خلال إبلاغ الإدارة والأطراف المعنية الأخرى. طارئ يمكن التخطيط له عند تثبيت مكون ضار أو تضمينه في برنامجك، ولكن هذا أمر صعب لأن المهاجمين لديهم العديد من المسارات التي يجب عليهم اتباعها. ستؤدي تفاصيل هجوم سلسلة التوريد بناءً على استخدام مكون ضار إلى تغيير جذري في الكشف العام عن الحادث، والذي ربما يكون إلزاميًا بموجب الإطار التنظيمي لمؤسستك. يمكنك أيضًا تناول ضوابط التعويض or مخاطر النقل على سبيل المثال مع التأمين.
ومع ذلك، هناك ضوابط تعالج التهديد ويجب أخذها في الاعتبار إذا لم تكن راضيًا عن قبول المخاطر. يرجى القراءة.
ما الذي يعمل ضد الهجمات باستخدام المكونات الضارة؟
التعامل مع النسخة الصلبة
يعد تثبيت الإصدار من خلال تحسينات الإصدار الخاضعة للرقابة والمستنيرة هو الحل الأمثل لتحقيق التوازن بين الحاجة إلى إزالة الثغرات الأمنية دون تلقي برامج ضارة. لكن تذكر المفهوم الخاطئ رقم 3: تثبيت الإصدار وحده لا يكفي لحظر التعليمات البرمجية الضارة القادمة من الإصدارات الجديدة، لأنك ستحتاج في المستقبل إلى تحديث الإصدارات في أي تبعية مباشرة أو غير مباشرة. في تلك اللحظة تحتاج إلى دليل قوي بما فيه الكفاية على أن جميع الإصدارات المعدلة لا تحتوي على برامج ضارة.
الإنذار المبكر
أحد الأساليب المتبعة لحل مشكلة المكونات الضارة هو نظام الإنذار المبكر (المسمى هنا باسم الإنذار المبكر بالبرامج الضارة أو MEW)، حيث يتم تحليل الإصدارات الجديدة المنشورة (للمكونات الجديدة أو الموجودة) بواسطة محرك الكشف، والذي عند العثور على أدلة كافية قد يصنف الإصدار الجديد على أنه يحتمل أن يكون ضارًا.
تعد الأتمتة أمرًا ضروريًا هنا، حيث أنه من المستحيل مراجعة جميع المكونات الجديدة يدويًا بمعدل النشر الحالي. لذلك يحتاج محرك الكشف إلى الجمع بين مجموعة متنوعة من التقنيات، ربما بما في ذلك التحليل الثابت والديناميكي وتحليل القدرة وسمعة المستخدم والأدلة القادمة من التناقضات بين البيانات التعريفية للمكون ومحتويات كرة القطران، أو بين كرة القطران ومستودع المصدر حيث يُفترض أن المكون يأتي من.
هناك المنطقة المظلمة بين وقت النشر ووقت قيام المحرك بتحليل محتويات المكون، على ألا يتجاوز ذلك بضع دقائق. يمكن تعديل النظام، على سبيل المثال، من خلال انتظار تحليل المكونات الجديدة قبل السماح بتثبيتها واستخدامها في بناء البرنامج pipelineق، أو تحليلها عند الطلب عند الحاجة. أحد المكونات في إصدار معين غير قابل للتغيير [3]لذلك يجب تحليلها مرة واحدة فقط.
الأتمتة الكاملة غير ممكنة، ويلزم إجراء مراجعة أمنية للمكونات الضارة المحتملة. احذروا من أنصار العلاج الرقمي: لم يتم تطوير الذكاء الاصطناعي والتعلم الآلي بما يكفي لأخذ الكلمة الأخيرة عندما يتعلق الأمر بتأكيد ما إذا كان أحد المكونات المشتبه بها يحتوي على برامج ضارة. من المؤكد أن التعلم الآلي يلعب دورًا رئيسيًا في محرك الكشف في تصنيف مكون الإدخال من الأدلة الأولية التي تم التقاطها، ولكن بمجرد "عزل" المكون، تكون الكلمة الأخيرة في المراجعة اليدوية بواسطة فريق أمني يتمتع بخبرة في المكونات الضارة. وهذا يؤكد وجود أي برامج ضارة محتملة أو يعيد تصنيفها على أنها آمنة. والفترة الزمنية في نطاق الساعات.
يقوم السجل بالإبلاغ عن الإصدار/المكون الضار؛ يقوم السجل بعد ذلك بمراجعته للتأكيد وينتقل إلى الكشف العام والإزالة من السجل. تحتفظ بعض السجلات بحزمة الاحتفاظ بالأمان. النطاق الزمني هنا هو الأيام أو الأسابيع منذ النشر، وهو 'يسكن الوقت"أو"نافذة التعرض"بالنسبة لمعظم المكونات الضارة.
هل من الممكن معرفة ما إذا كان إصدار المكون ضارًا؟
لذا، للإنذار المبكر، نحتاج إلى إعطاء إجابة مرضية لهذا السؤال: كيف يمكنني معرفة أن المكتبة أو الحزمة (ليست) ضارة؟ كيفية جمع أدلة كافية على السلوك الخبيث؟ ممكن، لكنه صعب، حيث يستخدم الخصوم الكثير من البراعة لتجنب اكتشافهم. هناك طرق مختلفة، ولكل منها إيجابيات وسلبيات.
تحليل ثابت يمكنه فحص جميع مسارات التنفيذ والتحقق من التقنيات التي يستخدمها المهاجمون دون تشغيل المكون، وتنفيذ مهام المعالجة المسبقة مثل إزالة التشويش أو فك التشفير. بينما يحاول المهاجمون إخفاء أذىهم، فإن محاولات التشويش هي في الواقع دليل على وجود برامج ضارة (ولكن لاحظ أن المكونات الشرعية تحجب التعليمات البرمجية للحفاظ على الملكية الفكرية، مما يتعارض مع "المصدر المفتوح"). قلة قليلة فقط من الهجمات المتطورة للغاية ذات التعتيم القوي تحتاج إلى حماية، ولكن هذا التعتيم القوي دليل واضح على الخبث. يُرجى ملاحظة أن الهجمات التقليدية SAST تم تصميم الأدوات للتعامل مع الثغرات الأمنية غير المقصودة، وليس للنوايا الخبيثة مثل الأبواب الخلفية.
التحليل الديناميكي يقوم بتشغيل المكون ويفحص الاستجابة من خلال قياس وقت التشغيل، عادةً من خلال توفير بيئة وضع الحماية. قد لا يتم اكتشاف السلوك الضار الذي يتم تشغيله في ظل ظروف معينة: يرجى ملاحظة أن البرامج الضارة قد تستخدم تقنيات التهرب مثل المحاكاة الافتراضية / تجنب وضع الحماية يتم تنشيطه فقط عندما لا يكون خاضعًا للتدقيق، وهو أيضًا علامة واضحة على وجود نشاط ضار لأي محرك تحليل ثابت.
تحليل القدرات يأخذ في الاعتبار ما يفعله المكون: المكان الذي يتصل به، والملفات التي يصل إليها، والأوامر أو البرامج التي يتم تشغيلها، والجهاز الطرفي أو الإدخال/الإخراج الذي يتم تنفيذه، أو استدعاءات النظام التي يتم استدعاؤها. يمكن مقارنة بصمات السلوك هذه (لمكون موجود) عبر الإصدارات، لذلك عند اكتشاف سلوك غير متوقع، يمكن أن يثير هذا الدليل الشكوك حول نشاط ضار محتمل تم إدخاله في الإصدار الجديد. يتبع هذا الأسلوب خطوات الفرز التي يتبعها محللو الأمن عند مواجهة برامج ضارة محتملة: الفحص باستخدام سلاسل أو أدوات مماثلة. يكتشف هذا الأسلوب السلوك الضار بغض النظر عن ظروف التشغيل ويعمل في حالة عدم توفر تعليمات برمجية مصدرية.
تحليل السياق يجمع معلومات حول كيفية نشر المكون ومن قام بنشره. غالبًا ما تستخدم حملات الممثلين السيئين حساب (حسابات) مستخدم جديد لا يخضع لأي عملية تدقيق صارمة. قد يؤدي تتبع النشاط السابق إلى إعطاء رؤى حول المستخدم الأساسي، غالبًا فيما يتعلق بالحالات الشاذة التي قد تشير إلى تسوية محتملة. من الصعب جدًا كسب السمعة ومن السهل جدًا خسارتها! المستخدم الذي ليس لديه أي نشاط سابق يكون محايدًا، لكن الكارما تلاحق الأشرار. ينبغي تعقب الناشطين في مجال القرصنة أو المستخدمين العاديين الذين سُرقت بيانات اعتماد النشر الخاصة بهم بعناية.
المعلومات السياقية الأخرى هي أي تناقض بين مستودع المصدر الذي يُفترض استخدامه لإنشاء كرة القطران المكونة ومحتويات كرة القطران نفسها. وأيضًا اتباع الممارسات الجيدة، مثل إنشاء علامات أو إصدارات في مستودع المصدر مطابقة لإصدارات المكون المنشورة في السجل العام. عندما يكون مستودع المصدر في معين commit تم وضع علامة على الإصدار، ثم فجأة فشلت إحدى الإصدارات في متابعته، وهذا وحده دليل قوي على أن المكون قد يكون ملوثًا: ربما يكون الممثل السيئ قد اخترق الحساب المستخدم لنشر المكون، ولكن ليس لديه أذونات الكتابة في الكود المصدري مخزن). يتم اكتشاف العديد من الهجمات بشكل روتيني باستخدام هذه القواعد: على سبيل المثال، هجوم دفتر الأستاذ يمكن اكتشافها بسهولة على طول هذه الخطوط. وبالتالي، فإن تحليل السياق يحدد مثل هذه الحالات الشاذة في عملية النشر.
جدار حماية التبعية
هناك طريقة مختلفة تتمثل في الحصول على قائمة بيضاء شاملة للمكونات لجميع الرسوم البيانية التبعية المستخدمة في برنامجك، لذلك في أي إصدار pipeline يمكن تشغيل إصدارات المكونات المعتمدة فقط في مؤسستك واستخدامها. ال "جدار الحماية"يتم فرضه باستخدام سجل داخلي حيث يتم تقديم كرات القطران لإصدارات المكونات المسموح بها (مخزنة مؤقتًا أو وكيلًا). يرجى ملاحظة أن أي قائمة بيضاء لن تعمل إلا إذا كان لديك التكنولوجيا اللازمة لتصنيف أي إصدار جديد على أنه آمن إلى حد معقول بحيث يمكن إضافته إلى القائمة البيضاء.
يرجى ملاحظة أن الإنذار المبكر (الاكتشاف السريع في أقرب وقت ممكن بعد نشر الإصدار الجديد) يجب أن يتم دمجه مع طريقة ما لاستخدام هذه المعلومات بشكل استباقي لحظر المكون الذي يؤثر على البناء pipelines أو آلات المطورين [4]. نحن نسمي هذا "جدار الحماية التبعية": آلية عزل لحماية الإصدارات الآلية من الحزم الضارة. تعد الحزم الداخلية وسجلات الصور جيدة لعزل المؤسسات عن الشر الخارجي، لكن الأدلة القوية بما يكفي ضرورية لجعل الحجر الصحي فعالاً.
وضع الحماية في وقت التشغيل
هناك طريقة بديلة للكشف في وقت النشر وهي تحليل السلوك في وقت التشغيل. تتمثل الفكرة في التقاط السلوك المتوقع من البرنامج واكتشاف (أو حظر) أي حالات شاذة يتم العثور عليها. يواجه خط العمل هذا مشكلة الاضطرار إلى استخدام وقت التشغيل للمراقبة أو الحظر، وهي فكرة واعدة ستتم إضافتها إلى ترسانة آليات الحماية ضد الآفات المكونة الخبيثة.
وضع استراتيجية شاملة
تحتاج الإستراتيجية الموصى بها إلى الجمع بين تقنيات مختلفة في عملية تطوير البرامج، مع التحكم في تحديثات الإصدار لمنع المكونات الضارة الواردة. يجب أن نتكيف مع تثبيت الإصدار لتجنب الإصابة التلقائية بتحديث الإصدارات للحصول على إصلاحات لنقاط الضعف المهمة؛ تقييم سريع وفعال للتبعيات المباشرة وغير المباشرة أثناء تحديثات الإصدار للحصول على دليل كافٍ على عدم تعرضها للبرامج الضارة. يجب حظر إصدارات البرامج التي تعتمد على مكونات ضارة معروفة. ويجب تنفيذ كل شيء.
استخدم تثبيت الإصدار، عندما يكون ذلك ممكنًا، لأنه يجعل الإصدارات أكثر قابلية للتكرار. تثبيت الإصدار من خلال نتوءات الإصدار التي يتم التحكم فيها والمعتمدة يدويًاو بمساعدة التكنولوجيا المساعدة، يجب تقييم ما إذا كان التحديث يجلب برامج ضارة أو يعطل البرنامج، والتوفيق بين التحديث لإصلاح الثغرات الأمنية وتجنب الإصابة بالبرامج الضارة. يمكن أن تساعد الأدوات هنا، من خلال (1) تحديد أولويات الثغرات الأمنية المهمة حقًا (يمكن الوصول إليها واستغلالها، مع وجود خطر كبير لاستهدافها من قبل المهاجمين)، (2) اختيار الإصدارات المستهدفة المتوافقة مع استخدامات المكونات الحالية ولا تخرق البرامج، (3) اختيار الإصدارات المستهدفة التي لا تحتوي على سلوك ضار، و(4) جعل تحديث الإصدار للتبعيات المباشرة وغير المباشرة أمرًا سهلاً، من خلال اقتراح تغييرات في ملفات البيان التي يمكن الموافقة عليها بسرعة. تحتاج الخطوة (3) إلى معلومات محددة حول المكونات الضارة في أقرب وقت ممكن لنشرها.
يجب أن تكون عملية تحديث التبعيات هذه فرض و التحقق في جميع الأماكن. يجب توثيق العملية، وتدريب جميع الأطراف المعنية، إذ غالبًا ما يتم تكليف جهة خارجية بتطوير وبناء/نشر البرنامج. CI/CD pipelineيجب تعديل s وفقًا لذلك، بحيث لا تسمح الأتمتة بتسلل تبعية ضارة غير مباشرة إلى البنية: guardrails إن حظر الإنشاء إذا كان هناك دليل كافٍ على وجود برامج ضارة محتملة في التبعية هو الطريقة الموصى بها.
إذا كان لدى مؤسستك سجل داخلي يعمل كوكيل أمان للاحتفاظ بإصدارات المكونات المسموح بها، فيجب عليك الحصول على معلومات حول المكونات الضارة (إلى جانب المعايير الأخرى) لفحص المكون المطلوب قبل إضافته إلى قائمة المسموحات.
إن استخدام البرامج مفتوحة المصدر بأمان ليس بالأمر السهل، ويجب أن يؤخذ عامل البرامج الضارة في الاعتبار بالكامل، مع بذل جهد مماثل في معالجة الثغرات الأمنية.
ملاحظة أخيرة: مصدر المصدر، في شكل شهادات برمجية، يتم إنشاؤها في وقت إنشاء المكون، وهو جزء رئيسي آخر في الجهود المبذولة لتتبع القطعة الأثرية (قطران المكون) مع المصادر وعملية البناء التي أنتجتها. لاحظ أن هذا الرابط بين لقطة المصدر + بيئة البناء والأداة المرتبطة بالبرنامج (الموقعة بواسطة نظام البناء الموثوق به) لا يمنع في حد ذاته أن المكون لا يحتوي على سلوك ضار، ولكنه يجعل من الصعب على الأشرار حقن برامج ضارة . إن جعل التحقق من صحة المصدر متطلبًا شائعًا لاستهلاك المكونات مفتوحة المصدر سوف يستغرق وقتًا طويلاً وفقط تمت إضافته مؤخرًا إلى NPM. إن جعل هؤلاء الموثوقين ينشئون الأنظمة وينشرونها مقاومة للتلاعب، أو تمكين الكشف عن أي تلاعب في البناء هي قصة مختلفة، خارج نطاق هذا المنشور.
لمزيد من القراءة
الحلقة القادمة الحزم الخبيثة مفتوحة المصدر: نهج Xygeni سوف نقدم الإستراتيجية التي نتبعها في Xygeni من أجلنا الإنذار المبكر بالبرامج الضارة نظام (MEW). يتم فحص إصدارات الحزمة الجديدة في الحزمة العامة وسجلات الصور ويتم الحصول على الأدلة باستخدام مزيج من التحليلات الثابتة والديناميكية والقدرات والسياق. يسمح الدليل، بالإضافة إلى سمعة المستخدم وتاريخ التغييرات في مستودعات التعليمات البرمجية المصدر، بتصنيف تلقائي بالكامل للمكون إلى فئات عالية المخاطر وربما ضارة. يتعلم النظام من الأدلة السابقة التي تم جمعها من الطرود لتقليل النتائج الإيجابية الخاطئة إلى الحد الأدنى.
تتلقى المؤسسات المشتركة إشعارًا تحذيريًا بشأن المكونات التي تستخدمها، بشكل مباشر أو غير مباشر، عند تصنيف إصدار ضار. ثم يتم إجراء تحليل يدوي من قبل المحللين لدينا، مما يؤكد التصنيف أو يرفضه. بالنسبة للبرامج الضارة المؤكدة، يتم إخطار السجل العام حتى يتمكن من إجراء تحليله الخاص وإزالة الإصدار الضار عادةً أو اتخاذ إجراء إضافي، مثل حظر حساب المستخدم المعني أو إزالته.
سنشرح كيف نساعد NPM وPyPI وGitHub والبنى التحتية الرئيسية الأخرى في النظام البيئي مفتوح المصدر لتقليل وقت بقاء المكون الضار الجديد المنشور نشطًا حتى يتم التأكد من أنه برنامج ضار وإزالته من السجل. وكيف يمكن للمؤسسات الاستفادة من نظام MEW للحصول على حماية أفضل بكثير ضد هجمات سلسلة توريد البرامج التي تتضمن مكونات مفتوحة المصدر.
- [1] على أية حال، يحتاج مستخدمو المكون إلى التحقق مما إذا كانت كرة القطران الخاصة بالمكون مخزنة مؤقتًا أو مسجلة في مكان ما، على سبيل المثال في سجل داخلي، بحيث يتم القضاء على الخلل.
- [2] يتضمن المكون المعبأ بيانًا يعلن عن محتوياته وبيانات التعريف، والتعليمة البرمجية المصدرية أو المجمعة، والبرامج النصية للتثبيت، وعناصر إضافية مثل مجموعات الاختبار، وفقًا لتنسيق التغليف وعادةً ما يكون في شكل مضغوط. وهذا ما يسمى "عنصر القطران".
- [3] حتى إذا كان بإمكان الجهة الخبيثة تعديل مكون منشور بسبب حدوث اختراق في السجل نفسه، فيمكن لملخص التشفير القديم اكتشاف أي تغيير في كرة القطران بعد الانتهاء من التحليل.
- [4] تذكر أن بعض المكونات الضارة تعمل في وقت التثبيت، لذا يمكن أن تؤثر على عقد المطورين التي تقوم عن غير قصد بتشغيل "npm install X" مع كون X مكونًا ضارًا.





