وثائق

إفصاح

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

نشر تفاصيل الثغرة الأمنية قبل توفر الإصلاح يفيد المهاجمين أكثر من المدافعين. يحتفظ قسم الأمان بتفاصيل كل نتيجة فحص غير عامة داخل Coroid، ولا يُسمح بإظهارها إلا من قبل شخص لديه الصلاحية المناسبة.

عام وغير عام

كل نتيجة فحص تنتمي إلى أحد النوعين التاليين:

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

تكون نتيجة الفحص عامة فقط عندما تكون مرتبطة بإشعار فني منشور ولم يتم سحبه، أو عندما ينشر مالك أو مسؤول الإصلاح الخاص بها (كما هو موضح أدناه).

بوابة النشر

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

في مستودع عام، أو مستودع لا يمكن لـ Coroid التأكد من درجة ظهوره للعامة، يتم استبدال المشكلة غير العامة بسطر محايد يحتوي على رابط:

اكتشف Coroid مشكلة أمنية محتملة؛ تفاصيلها موجودة في Coroid.

في مستودع خاص، يتم نشر النص. أما المشكلة التي لم يتم تأكيدها بعد، فيتم وصفها بـ "ادعاء أمني غير مؤكد: لم يتحقق Coroid منه بعد."

يتم دائمًا حجب بيانات الاعتماد في كل مكان. انظر أسرار مسربة.

درجة ظهور المستودع للعامة

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

الإشعارات والصادرات

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

إصلاح مشكلة في مستودع عام

في مستودع خاص، يكون إصلاح نتيجة فحص غير عامة عبارة عن طلب سحب عادي من pull request. توضح رسائل الالتزام والوصف طبيعة الإصلاح، وليس تفاصيل الهجوم.

في مستودع عام، أو مستودع لا يمكن لـ Coroid التأكد من درجة ظهوره للعامة، قد يكشف فرع عام أو التزام في pull request عن المشكلة قبل إصلاحها. لذلك لا يلتزم Coroid بإرسال مثل هذا الإصلاح إلى هناك. تتوقف مهمة الإصلاح مع ذكر سبب لا يكشف عن تفاصيل نتيجة الفحص، ويتم الاحتفاظ بالتغيير المُعدّ كـ إصلاح خاص.

الإصلاحات الخاصة

تظهر نتيجة الفحص التي لديها إصلاح خاص تحت قسم الإصلاحات الخاصة. ولا يراها سوى المالكين والمسؤولين.

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

يتم تسجيل عمليتي النشر والإلغاء في سجل تدقيق المؤسسة، كما يتم حذف التغيير المُعدّ من Coroid في كلا الحالتين.

يتم الاحتفاظ بالإصلاح الخاص الذي لا يقوم أحد بنشره أو إلغائه لفترة محدودة. بعد 180 يومًا، يتم تذكير المالكين والمسؤولين. وبعد 365 يومًا، يتم حذفه وإبلاغهم بذلك.

مخطط له

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