ملخص

  • قال تحديث Slack الأمني العام إن مهاجمًا استخدم رموز موظفي Slack المسروقة للوصول إلى مستودعات GitHub المستضافة خارجيًا. وأكد Slack أن المستودعات التي تم تنزيلها لا تحتوي على بيانات العملاء أو وسائل الوصول إلى بيانات العملاء أو قاعدة الشيفرة الأساسية لـ Slack. هذه الحدود مهمة ويجب الحفاظ عليها.
  • قضية المساءلة هي نقل التكلفة. يمكن لمزود التعاون تدوير بيانات الاعتماد والتحقيق في الوصول إلى المستودعات، لكن عملاء المؤسسات ما زالوا بحاجة إلى أدلة على أن التكاملات والأسرار وبيانات العملاء وبيانات اعتماد التطبيقات والمستودعات الفرعية لم تُترك مكشوفة بنفس مسار الثقة.
  • لا ينبغي وصف الحادثة بأنها اختراق لـ GitHub دون دليل على فشل أنظمة GitHub. من الأفضل فهمها كحدث ثقة عبر المنصات: بيانات اعتماد موظفي إحدى الشركات كانت قابلة للاستخدام ضد مستودعات مستضافة على منصة مطورين.
  • حوكمة الرموز هي سطح تحكم، وليس تفصيلًا إداريًا. النطاق والانتهاء والإبطال والمراقبة وعضوية المستودعات وفحص الأسرار ومراجعة التفويض تحدد ما إذا كان الرمز المسروق يصبح حدثًا بسيطًا أم بابًا مفتوحًا.
  • يجب أن يظهر سجل الإصلاح الموثوق به جرد الرموز، ومراجعة المستودعات، وتدوير الأسرار، وإشعار العملاء، والأدلة المستقلة على عدم وجود وصول دائم، والتغييرات في تصميم التكامل التي تقلل نفس مسار الفشل.

يمكن للرمز تحريك الثقة أسرع مما يستطيع العقد شرحها

كان الحساب العام لـ Slack للحادثة ضيقًا عمدًا. في تحديث أمان Slack، قالت الشركة إنها اكتشفت نشاطًا مشبوهًا على حساب GitHub الخاص بها، وحققت، وعلمت أن مهاجمًا سرق عددًا محدودًا من رموز موظفي Slack واستخدمها للوصول إلى مستودعات GitHub المستضافة خارجيًا. وقالت Slack أيضًا إن المستودعات لم تحتوِ على بيانات العملاء أو وسائل الوصول إلى بيانات العملاء أو قاعدة الشيفرة الأساسية لـ Slack. هذه الجملة الأخيرة مهمة. لا ينبغي للتحليل المسؤول توسيع الحادثة إلى ادعاء غير مدعوم حول تعرض رسائل العملاء أو اختراق GitHub نفسه.

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

لهذا السبب يبدأ سجل المساءلة بالرمز، وليس بالعنوان الرئيسي. يشرح توثيق GitHub حول إنشاء رمز وصول شخصي و إدارة رموز الوصول الشخصية أسئلة الحوكمة العادية: ما النطاقات الممنوحة، ومتى ينتهي الرمز، ومن يملكه، ومتى يُلغى، وما إذا كانت هناك طريقة تفويض أكثر تقييدًا متاحة. في بيئة المؤسسة، هذه الخيارات ليست مجرد راحة للمطور. بل تصبح جزءًا من واجب المزود لحماية ثقة العملاء.

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

تضمن رد Slack خطوات الإبطال والتدوير، وإشعار العملاء الذين كانت رموزهم متورطة على الأرجح، وشرحًا عامًا. هذه بداية المساءلة، وليست النهاية. السؤال الأصعب هو ما الأدلة التي يتلقاها العملاء والمسؤولون بعد تدوير بيانات الاعتماد الفورية. هل تمت مراجعة جميع المستودعات القابلة للوصول؟ هل وُجدت أي أسرار في الشيفرة المصدرية؟ هل كانت بيانات اعتماد البناء أو النشر موجودة؟ هل تم فحص تفويضات تطبيقات GitHub وأذونات OAuth؟ هل أظهرت السجلات تنزيل المستودعات فقط، أم إجراءات أخرى؟ هل تم إعادة تقييم عمليات التكامل المواجهة للعملاء؟

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

لم تكن الحادثة اختراقًا لـ GitHub

أهم تصحيح هو أيضًا الأبسط: لا ينبغي للسجل العام تسمية هذه الحادثة باختراق لـ GitHub ما لم يثبت مصدر أن أنظمة GitHub نفسها قد اخترقت. بيان Slack يقول إن مهاجمًا استخدم رموز موظفي Slack المسروقة للوصول إلى مستودعات Slack المستضافة خارجيًا على GitHub. هذا نمط حقائق مختلف. منصة المطورين وفرت البيئة حيث عمل الرمز؛ السلطة المسروقة كانت تابعة لموظفي Slack.

هذا التمييز ليس حماية للعلامة التجارية. إنه دقة في المساءلة إذا أخطأ المحللون في تسمية الحادثة كاختراق لـ GitHub، فإنهم يحجبون عناصر التحكم الفعلية التي كانت مهمة: حيازة رمز موظف Slack، والوصول إلى المستودعات، ونطاق الرمز، والمراقبة، ومراجعة الشيفرة المصدرية، وتدوير الأسرار، وإشعار العملاء. كما أنهم يوجهون سؤال الإصلاح بشكل خاطئ. اختراق منصة GitHub سيسأل عما إذا كانت البنية التحتية لـ GitHub أو عناصر التحكم في الوصول قد فشلت. حادثة رمز Slack تسأل عما إذا كانت بيانات اعتماد Slack المفوضة كانت مفيدة جدًا، أو دائمة جدًا، أو غير مراقبة بما يكفي، أو يصعب حصرها.

GitHub لا يزال مهمًا لأن نموذج التحكم الخاص به يشكل نصف قطر الانفجار. التوثيق حول تفويض تطبيقات GitHub و المصادقة على REST API يظهر كيف يمكن جعل خيارات التفويض أكثر وضوحًا وقابلية للتدقيق. التفويض المستند إلى التطبيق يمكن أن يكون أضيق من الرموز الشخصية الواسعة القديمة عند تصميمه جيدًا. يمكن لقواعد مصادقة API تحديد كيفية استخدام بيانات الاعتماد. يمكن لإعدادات الوصول للمؤسسات جعل الملكية والعضوية أكثر وضوحًا. هذه العناصر لا تمحي مسؤولية Slack؛ إنها تحدد الأدوات المتاحة لممارستها.

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

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

بيان Slack العام ساعد بالحفاظ على الحدود. قال إن المستودعات التي تم الوصول إليها لم تحتوِ على بيانات العملاء أو وسائل الوصول إلى بيانات العملاء. هذا تأكيد قوي وقابل للاختبار إذا كانت مراجعة المستودعات كاملة. يعتمد التأكيد على سلامة البحث عن الأسرار ومفاتيح النشر وبيانات اعتماد الخدمة ومسارات الشيفرة التي يمكن أن تصبح وصولاً غير مباشر. السؤال إذن ليس ما إذا كانت Slack استخدمت الجملة الصحيحة. السؤال هو ما الأدلة التي كانت وراءها.

الوصول إلى المستودعات ليس مجرد كشف للشيفرة المصدرية

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

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

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

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

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

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

نطاق الرمز هو قرار إداري، وليس تفضيل مطور

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

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

السؤال الصحيح لـ Slack بعد الحادثة لم يكن ما إذا كان أي موظف قد فعل شيئًا غير معتاد باستخدام الرموز. بل كان ما إذا كانت المنظمة تستطيع إثبات أن أذونات الرمز تطابق حاجة العمل. هل كانت الرموز الواسعة مسموحة حيث كانت الأذونات الدقيقة متاحة؟ هل كان مطلوبًا من الرموز أن تنتهي صلاحيتها؟ هل كانت الرموز مرتبطة بتغييرات دورة حياة الموظف؟ هل كانت المستودعات عالية المخاطر مقيدة؟ هل تم التنبيه بتنزيلات المستودعات من مواقع أو أجهزة غير معتادة؟ هل تم تخزين الرموز في أنظمة معتمدة؟ هل تمت مراجعة تفويضات التطبيقات؟ هل يمكن لبيانات اعتماد التطوير العادية للموظف الوصول إلى شيفرة تؤثر على ثقة العملاء؟

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

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

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

يجب أن يفصل إشعار العملاء بين "لا بيانات" و"لا إجراء"

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

قال تحديث Slack الأمني إن المستودعات التي تم الوصول إليها لم تحتوِ على بيانات العملاء أو وسائل الوصول إلى بيانات العملاء. هذا تطمين قوي. يجب أن يقف إلى جانب أسئلة أخرى: هل ظهرت أي رموز مملوكة للعملاء أو بيانات اعتماد تطبيق في المستودعات؟ هل تم إشعار أي عملاء بشكل فردي لأن رموزهم كانت متورطة؟ هل قامت Slack بتدوير جميع بيانات الاعتماد المملوكة لـ Slack التي كان من الممكن أن تكون موجودة؟ هل وجد التحقيق أي دليل على استخدام ضار يتجاوز تنزيل المستودع؟ هل تم إعطاء مسؤولي المؤسسة معلومات كافية لحوكمة مخاطر الموردين؟

تقرير Cybersecurity Dive، Slack says employee tokens stolen, GitHub repositories breached، وتقرير Wired الأمني، Slack says some private GitHub repositories were accessed، يظهران كيف تختصر الملخصات العامة الحوادث بسرعة إلى سرديات أبسط. هذا الاختزال مفيد للأخبار، لكن العملاء يحتاجون إلى النسخة التشغيلية التفصيلية. "تم الوصول إلى المستودعات" ليس مثل "تم كشف بيانات العملاء". "لا بيانات عملاء" ليس مثل "لم يتم العثور على أي بيانات اعتماد من أي نوع". "تم تدوير الرموز" ليس مثل "تمت مراجعة كل تكامل فرعي".

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

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

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

إرشادات البرمجيات الآمنة تحول حادثة الرمز إلى سؤال واجب المزود

إطار تطوير البرمجيات الآمنة من NIST، SP 800-218، ليس تقرير حادثة عن Slack. إنه مفيد لأنه يشرح لماذا يجب على منتجي البرمجيات حماية الشيفرة، والتحكم في بيانات الاعتماد، والتحقق من سلامة الإصدار، والاستجابة للثغرات. بيئة مستودعات مزود التعاون هي جزء من سلسلة ثقة المنتج. إذا تم الوصول إلى مستودع مصدر من قبل مهاجم، سيسأل العملاء ما إذا كان المنتج الذي يستخدمونه يمكن أن يتأثر.

SP 800-204D، Strategies for the Integration of Software Supply Chain Security in DevSecOps CI/CD Pipelines، يوفر مفردات أخرى، حتى لو كان المقال العام لا ينبغي أن يبالغ في صلته بحادثة Slack المحددة. الدرس المهم هو أن بيانات الاعتماد، والتحكم في الشيفرة المصدرية، وأتمتة البناء، وإدارة التبعيات، وعناصر التحكم في الإصدار مترابطة. حادثة رمز في التحكم في الشيفرة المصدرية يمكن أن تصبح قضية مخاطر منتج إذا كانت الأسرار أو سلطة البناء أو وصول توقيع الإصدار قابلة للوصول.

حملة CISA Secure by Design تدفع المسؤولية بشكل أكثر مباشرة نحو الموردين. لا ينبغي لمورد البرمجيات أن يجعل العملاء يتحملون مخاطر يمكن تجنبها ناتجة عن خيارات تصميم داخلية. هذا لا يعني أن كل مورد يمكنه منع كل بيانات اعتماد مسروقة. يعني أن الموردين يجب أن يقللوا من نصف قطر الانفجار، ويجعلوا إساءة الاستخدام قابلة للكشف، ويوفروا للعملاء أدلة واضحة بعد الحادثة. لمنصة تعاون مثل Slack، يشمل هذا الواجب تكاملات منصة المطورين التي تدعم المنتج.

قائمة OWASP أهم 10 مخاطر أمنية في CI/CD ذات صلة لأنها تعامل الأسرار والأذونات وثقة التبعية وإساءة استخدام نظام البناء كفئة من المشاكل الأمنية. لا ينبغي تضخيم حادثة Slack إلى ادعاء أن المهاجمين وصلوا إلى نظام البناء أو عملية إصدار المنتج. لكن نفس فئة المخاطر تنطبق. رمز مطور مسروق خطير لأنه قد يكون قريبًا من الشيفرة، والأسرار، والأتمتة، وافتراضات الإصدار. يجب أن يثبت سجل الإصلاح أين كان الحد.

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

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

يجب أن يثبت سجل الإصلاح الإغلاق، وليس مجرد النشاط

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

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

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

توثيق GitHub يساعد في تحويل هذه الأدلة إلى أسئلة ملموسة. هل تم استبدال الرموز الشخصية بتفويض أضيق حيثما أمكن؟ هل تم تفويض تطبيقات GitHub بأقل الامتيازات؟ هل تم مراقبة بيانات اعتماد API؟ هل تمت مراجعة تنبيهات فحص الأسرار؟ هل تمت محاذاة إعدادات الوصول للمؤسسة مع احتياج الدور؟ هل تم تدريب مسؤولي المستودعات على تجنب الرموز الواسعة طويلة العمر؟ هذه عناصر تحكم عادية، لكن العناصر العادية هي بالضبط ما يجعل الحادثة أقل تكلفة.

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

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

ملاحظة حول الطباعة

المجهولات المتبقية والسؤال المسؤول

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

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

هذا التوزيع مهم لأنه من السهل إساءة قراءة حوادث التحكم في الشيفرة المصدرية. إذا سمع الجمهور "GitHub" وافترض أن المنصة فشلت، فقد يُفوت الإصلاح الفعلي. إذا سمع الجمهور "لا بيانات عملاء" وافترض عدم وجود قضية ثقة عميل، فقد يُفوت سؤال واجب المزود. إذا سمعت الشركة "رموز مدورة" وافترضت الإغلاق، فقد يُفوت أعباء مراجعة الأسرار ومراجعة التكامل.

معيار المساءلة الصحيح هو منضبط ومتواضع: الحفاظ على حدود بيان Slack، وعدم اختراع تعرض لبيانات العملاء، وعدم اتهام GitHub بالاختراق دون دليل، ومع ذلك المطالبة بدليل على تحسن حوكمة الرمز. المزود الذي يعتمد على منصات مطورين خارجية يجب أن يكون قادرًا على إثبات أن بيانات اعتماد موظف مسروقة لا يمكن أن تصبح بهدوء حدثًا يمس ثقة المنتج.

لماذا يهم تسمية نقل التكلفة

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

قد يكون عمل العميل هذا صغيرًا للعديد من المؤسسات لأن النطاق المعلن لـ Slack كان محدودًا. لكنه كان عملًا حقيقيًا، وحجمه يعتمد على وضوح أدلة Slack. الإشعار الدقيق يقلل تكلفة العميل. الإشعار الغامض ينقل المزيد من التحليل إلى العميل. سجل الإصلاح الذي يثبت مراجعة المستودعات وتدوير بيانات الاعتماد يقلل تكلفة العميل. سجل الإصلاح الذي يقول فقط إن "خطوات تم اتخاذها" ينقل المزيد من عدم اليقين.

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

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

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

عملاء المؤسسات يحتاجون إلى سجل مخاطر موردين قابل للاستخدام

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

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

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

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

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

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

يجب أن تكون حوكمة الرمز مرئية لمجلس الإدارة

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

لشركة SaaS، سؤال مجلس الإدارة ليس "هل يستخدم المهندسون GitHub؟" إنه "هل يمكن لبيانات اعتماد منصة المطورين أن تؤثر على ثقة العملاء؟" إذا كانت الإجابة نعم، فإن أذونات المستودع، ونطاقات الرمز، وفحص الأسرار، وتفويض التطبيق هي جزء من حوكمة مخاطر المنتج. إنها ليست مجرد إعدادات تكنولوجيا معلومات داخلية. رمز مسروق يصل إلى مستودعات الشيفرة المصدرية يمكن أن يخلق التزامات إشعار عام، وعمل ضمان للعملاء، وأسئلة تنظيمية، ومخاطر سلامة المنتج. هذا تعرض على مستوى مجلس الإدارة حتى عندما لا يتم العثور على بيانات العملاء.

مقياس مفيد لمجلس الإدارة سيتتبع الرموز الواسعة حسب المالك، وحساسية المستودع، وانتهاء الصلاحية، وحالة الاستثناء. آخر سيتتبع الوقت اللازم لإبطال فئة من بيانات الاعتماد بعد النشاط المشبوه. آخر سيتتبع ما إذا كانت الأسرار تظهر في المستودعات ومدة بقاء التنبيهات دون حل. آخر سيتتبع ما إذا كانت المستودعات الحرجة مجزأة عن بيانات اعتماد الموظف العادية. هذه المقاييس لا تتطلب من المديرين أن يصبحوا مهندسين. تسمح للمديرين برؤية ما إذا كانت المنظمة تقلل نصف قطر الانفجار.

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

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

راحة التكامل تحمل مساءلة عامة

منتجات SaaS الحديثة تُبنى من خلال التكاملات لأن التكاملات تجعل العمل أسرع. فريق يستخدم Slack للتعاون، وGitHub للشيفرة المصدرية، ومنصات سحابية للنشر، وموفري هوية للوصول، وأنظمة تذاكر للدعم، وأدوات أمان للكشف. كل تكامل يقلل الاحتكاك. كل أيضًا يخلق مسار ثقة جديد. الرمز هو غالبًا الجسم الصغير الذي يربط تلك المسارات.

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

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

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

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