ملخص
- قال تحديث 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. إنه مفيد لأنه يشرح لماذا يجب على منتجي البرامج حماية الشيفرة، والتحكم في بيانات الاعتماد، والتحقق من سلامة الإصدار، والاستجابة للثغرات. بيئة مستودعات مزود التعاون هي جزء من سلسلة ثقة المنتج. إذا تم الوصول إلى مستودع مصدر من قبل مهاجم، سيسأل العملاء عما إذا كان المنتج الذي يستخدمونه قد يتأثر.
يوفر NIST SP 800-204D،Strategies for the Integration of Software Supply Chain Security in DevSecOps CI/CD Pipelines، مفردات أخرى، حتى لو كان على مقال عام ألا يبالغ في صلته بحادث Slack المحدد. الدرس المهم هو أن بيانات الاعتماد والتحكم في المصدر وأتمتة البناء وإدارة التبعيات وضوابط الإصدار مترابطة. يمكن أن يصبح حادث رمز في التحكم بالمصدر مشكلة مخاطر منتج إذا كانت الأسرار أو سلطة البناء أو الوصول لتوقيع الإصدار قابلة للوصول.
حملة CISASecure by Designتدفع المسؤولية بشكل أكثر مباشرة نحو المزودين. لا ينبغي لمزود البرامج جعل العملاء يتحملون مخاطر يمكن تجنبها ناتجة عن خيارات تصميم داخلية. هذا لا يعني أن كل مزود يمكنه منع كل بيانات اعتماد مسروقة. يعني أن المزودين يجب أن يقللوا من نصف قطر الانفجار، ويجعلوا سوء الاستخدام قابلاً للكشف، ويزودوا العملاء بأدلة واضحة بعد حادث. لمنصة تعاون مثل Slack، يشمل هذا الواجب عمليات تكامل منصة المطورين التي تدعم المنتج.
OWASPTop 10 CI/CD Security Risksذو صلة لأنه يعامل الأسرار والأذونات وثقة التبعية وسوء استخدام نظام البناء كفئة من مشاكل الأمان. لا ينبغي تضخيم حادث Slack ليدعي أن المهاجمين وصلوا إلى نظام البناء الخاص بـ 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 يجب أن يسأل عما إذا كان نموذج الوصول إلى منصة مطور المزود جزءًا من مراجعة الأمان الخاصة به. أي منصة مطورين يجب أن تستمر في تحسين الضوابط التي تجعل الامتياز الأقل عمليًا وليس شكليًا.
النتيجة المسؤولة هي مسار ثقة أضيق وأكثر قابلية للملاحظة. يجب أن تكون الرموز محددة بالمهمة، وتنتهي افتراضيًا، وتُخزن في أنظمة معتمدة، وتُراقب للاستخدام غير المعتاد، وتُستبدل بتفويض قائم على التطبيق عندما يعطي هذا النموذج تحكمًا أفضل. يجب تصنيف المستودعات حسب الحساسية. يجب منع الأسرار من دخول المصدر وفحصها عندما يفشل المنع. يجب أن تظهر سجلات الحوادث الإغلاق دون إجبار العملاء على إعادة بناء القصة من ملخصات الأخبار.
هذا هو الدرس الذي يستحق الحفظ. الرمز المسروق يمكن أن يكون محدودًا، أو يمكن أن يصبح الخيط الذي يربط المصدر والأسرار وثقة العملاء وحوكمة البائع. الفرق ليس الحظ. إنه الانضباط الممل لضوابط الوصول المصنوعة مرئية.

