ملخص
- أكدت GitHub أن مفتاح مضيف SSH RSA الخاص بـ GitHub.com تم الكشف عنه لفترة وجيزة في مستودع عام، وقامت باستبداله في حوالي الساعة 05:00 UTC في 24 مارس 2023؛ وأكدت أن المفتاح لم يمنح حق الوصول إلى البنية التحتية أو بيانات العملاء، ولا دليل على إساءة استخدامه. البيان الأساسي موجود علىhttps://github.blog/news-insights/company-news/we-updated-our-rsa-ssh-host-key/.
- الحادثة الفعلية لم تكن مجرد كشف مفتاح خاص. كانت مشكلة إصلاح ثقة مفروضة على المطورين وأنظمة التكامل المستمر ومديري الإصدارات والشركات الصغيرة التي كان عليها أن تقرر ما إذا كان تغيير هوية مضيف SSH هو تغيير شرعي من المزود أم محاولة اعتراض.
- عدم التطابق بين العقد والتحكم هو أن شروط المنصة قد تحد من الضمانات والمسؤولية، بينما تمارس عمليات المزود سلطة حقيقية على استمرارية بناء العملاء وإصدارهم والتحكم بالمصدر. شروط GitHub علىhttps://docs.github.com/en/site-policy/github-terms/github-terms-of-serviceتوزع المخاطر القانونية بشكل يختلف عن كيفية عمل التحكم التشغيلي أثناء التدوير.
- المساءلة تتبع الضوابط التي يملكها كل فاعل فعليًا: سيطرت GitHub على حفظ المفاتيح والكشف والتدوير والإرشادات والتحديثات المدعومة؛ سيطر العملاء على مخزون مخزن الثقة والتحقق المستقل وتحديثات سير العمل المقيدة والنقل البديل وانضباط مقاطعة الإصدار.
العقد لا يمكنه تدوير المفتاح؛ GitHub يمكنها
حادثة مارس 2023 من السهل التقليل من شأنها لأنها لم تؤدِ إلى سرقة مكشوفة لمستودعات العملاء أو حساباتهم أو بيئة إنتاج GitHub. ومن السهل أيضًا المبالغة فيها لأن حيازة مفتاح مضيف الخادم ليس مثل حيازة بيانات اعتماد المستخدم أو مفتاح رئيسي للكود الخاص. يقع تحليل المساءلة المفيد بين هذين الخطأين. كائن ثقة واحد يسيطر عليه المزود فقد سريته، وأصبح إصلاح المزود مرئيًا لأنظمة العميل كتحذير مشابه لما صُممت تلك الأنظمة لإظهاره أثناء تغيير عدائي.
قال بيان GitHub إن المفتاح الخاص القديم لمضيف SSH RSA تم الكشف عنه لفترة وجيزة في مستودع عام على GitHub، وأن الشركة تحركت لحماية المستخدمين من احتمالية الانتحال أو التنصت عبر SSH. حددت البيان التأثير في عمليات Git عبر SSH باستخدام RSA، وقالت إن مستخدمي HTTPS وECDSA وEd25519 لم يتأثروا بنفس الطريقة. هذا النطاق مهم. الحادثة لا تدعم ادعاءً بأن المستودعات الخاصة تمت قراءتها من GitHub، أو أن مفاتيح SSH الخاصة بالعملاء تم كشفها، أو أن الخدمة الداخلية لـ GitHub تم اختراقها بشكل عام. لكنها تدعم ادعاءً بأن GitHub اضطرت لاستبدال هوية خدمة كان العديد من العملاء قد ثبّتها كشرط مسبق لقبول الكود عبر SSH.
سؤال العقد مقابل التحكم يبدأ بعلاقة الخدمة. تحدد شروط GitHub الحالية نطاقًا واسعًا للخدمة وتتضمن إخلاء مسؤولية بأن الخدمة مقدمة كما هي متاحة، مع حدود على الضمانات فيما يتعلق بالتوقيت المناسب والأمان والوصول المتواصل أو التشغيل الخالي من الأخطاء. هذه الشروط مفيدة للتوزيع القانوني، لكنها لم تعط العميل سلطة تدوير مفتاح مضيف GitHub.com. لم تسمح لشركة برمجيات صغيرة بالاحتفاظ بمفتاح قديم بأمان بعد أن أصبح المفتاح الخاص عامًا. لم تعطِ أداة CI وسيلة مستقلة لمعرفة ما إذا كان المفتاح الجديد حقيقيًا. اللغة القانونية والسلطة التشغيلية تشيران في اتجاهات مختلفة.
عدم التطابق شائع في الاعتماد على السحابة. قد يحتفظ المزود بسلطة تقديرية واسعة ويحد من التعرض، بينما يصبح أيضًا الفاعل الوحيد القادر على تشغيل عنصر تحكم مشترك. يمكن للعملاء ترك المنصة نظريًا، لكن في لحظة التدوير الطارئ يحتاجون إلى قرار في دقائق، ليس تمرين مشتريات. أنظمتهم البنائية وأدوات النشر والوحدات الفرعية وتكاملات البائعين والنسخ المتطابقة الداخلية غالبًا ما تفترض أن نقطة نهاية SSH لـ GitHub هي مصدر ثبات للحقيقة. عندما يتغير مصدر الحقيقة نفسه، يجب على العميل إما التوقف أو التحقق عبر قناة أخرى.
هذا ليس شكوى من أن GitHub قامت بالتدوير. كان التدوير هو خطوة الاحتواء الصحيحة بمجرد أن المفتاح الخاص كان من المحتمل أن يكون مكشوفًا. اختبار المساءلة هو ما إذا كانت المنظمة التي لديها حضانة كائن الثقة لديها ضوابط وقائية كافية لإبقائه خارج مستودع عام، وكشف كافٍ لمعرفة كيفية حدوث الكشف، وسيطرة كافية على الاستجابة للإلغاء دون خلق ارتباك يمكن تجنبه، وكشف كافٍ للسماح للعملاء بالتعافي دون إضعاف التحكم الذي كان يحميهم.
ما تم تأكيده وما لا يزال مجهولًا
يؤكد البيان العام لـ GitHub خمس حقائق. أولاً، السر المعني هو مفتاح مضيف SSH RSA الخاص بعمليات Git عبر SSH على GitHub.com. ثانيًا، اكتشفت الشركة ظهوره لفترة وجيزة في مستودع عام. ثالثًا، استبدلت GitHub المفتاح في حوالي الساعة 05:00 UTC في 24 مارس 2023، وأفادت أن المفتاح الجديد كان مرئيًا لفترة خلال الاستعدادات بدءًا من حوالي الساعة 02:30 UTC. رابعًا، قالت الشركة إن الحادثة لم تكن بسبب اختراق أنظمة GitHub أو معلومات العملاء. خامسًا، قالت GitHub إنه لا يوجد سبب للاعتقاد بأن المفتاح قد أسيء استخدامه.
تحدد هذه التصريحات حدود الأدلة. لا تحدد المستودع أو الشخص أو سير العمل أو الماسح الضوئي أو مدة الكشف أو عدد المشاهدات أو الاستنساخات أو سلوك التخزين المؤقت أو السبب الجذري. لا تكشف عن التليمترية المستخدمة لاستنتاج عدم وجود إساءة معروفة. لا تذكر ما إذا تم إنشاء المفتاح الخاص أو تخزينه بطريقة تجعل النشر في المستودع مستحيلاً. لا تذكر ما إذا تم اكتشاف الكشف بواسطة فحص الأسرار الخاص بـ GitHub أو تقرير موظف أو مستخدم أو باحث أو غير ذلك.
هذا الغياب مهم لأن GitHub تبيع وتوثق ضوابط تهدف إلى منع كشف الأسرار العامة. في فبراير 2023، أعلنت GitHub عن تنبيهات فحص الأسرار المجانية للمستودعات العامة علىhttps://github.blog/news-insights/product-news/secret-scanning-alerts-are-now-available-and-free-for-all-public-repositories/. في مايو 2023، بعد حدث مفتاح المضيف، أعلنت عن حماية دفع مجانية أوسع للمستودعات العامة علىhttps://github.blog/news-insights/product-news/push-protection-is-generally-available-and-free-for-all-public-repositories/. توثيق GitHub الحالي يسرد أنماط المفاتيح الخاصة العامة علىhttps://docs.github.com/en/code-security/reference/secret-security/supported-secret-scanning-patterns. هذه المصادر تظهر عائلة التحكم. لا تثبت أي تحكم رأى أو فات أو منع مفتاح المضيف المحدد في مارس 2023.
التقييم النهائي
الحادثة المؤكدة كانت متوسطة التأثير وعالية الثقة. شكل كشف مفتاح مضيف RSA الخاص خطر انتحال معقول لعملاء SSH الذين ما زالوا يثقون في ذلك المفتاح وتم تحويل مسار شبكتهم. كان تدوير GitHub حكيمًا ومحدودًا وموثقًا علنًا. السجل المستعرض لا يظهر سرقة مستودع عملاء أو اختراق بنية GitHub التحتية أو كشف مفتاح خاص للمستخدم أو إساءة مؤكدة للمفتاح القديم.
نتيجة المساءلة أكثر حدة من حجم الحادثة. تجاوز تحكم GitHub التشغيلي في هوية مضيف مشتركة الحماية العملية التي يمكن للعملاء شراؤها في العقود العادية. يمكن للعملاء قراءة العقد، لكنهم لا يستطيعون فحص مسار حفظ المفتاح. يمكنهم قبول إخلاء المسؤولية، لكنهم ما زالوا بحاجة إلى إيقاف البناء عندما تتغير هوية المضيف. يمكنهم امتلاك مستودعاتهم، لكن حدث مفتاح من جانب المزود يمكن أن يحدد ما إذا كان نظام الإصدار يثق في المصدر.
هذا هو عدم التطابق بين العقد والتحكم: تصف المستندات القانونية علاقة خدمة؛ تكشف الحادثة عن اعتماد تشغيلي. لذلك تنتمي المساءلة إلى نقطة التحكم العملي. تتحمل GitHub مسؤولية الحفظ والتدوير السريع والإشعار الدقيق وأدلة الإصلاح. يتحمل العملاء مسؤولية التحقق الصارم وجرد الثقة وتخطيط الاستمرارية. الفرق بين هذه الواجبات ليس نظريًا. في الساعة 05:00 UTC في 24 مارس 2023، كان الفرق بين توقف آمن ولصق غير آمن.

