هناك نوعان من عمليات الحماية التي تتفحص الكود نفسه: فحص الكود يطبق قواعد ثابتة على كل تغيير وعلى الفرع الافتراضي، و مراجعة الأمان على طلبات السحب تتحقق من مشاكل الأمان التي تحددها مراجعة Coroid قبل أن تمنع اكتمال عملية pull request.
فحص الكود
قواعد Coroid
قسم الأمان هو المسؤول عن هذه القواعد. كانت جزءًا من معايير مكافحة الأخطاء في ضبط الجودة، والآن أصبحت هنا، لذا لكل قاعدة مكانها المخصص:
| القاعدة | تبحث عن |
|---|---|
security.hardcoded-secret | بيانات اعتماد مكتوبة داخل الكود. انظر إلى بيانات اعتماد مسربة. |
security.tls-disabled | تعطيل التحقق من صحة شهادة TLS. |
security.auth-removed | إزالة أو تعليق عمليات المصادقة أو حمايات الصلاحيات، أو الديكوريتورات أو البرمجيات الوسيطة. |
security.cors-wildcard-credentials | السماح بأي مصدر مع بيانات الاعتماد. |
security.sql-concat | استعلام SQL مبني من سلاسل نصية مُقحمة ويُمرر إلى دالة الاستعلام. |
security.eval | تنفيذ كود بناءً على مدخلات المستخدم: eval، new Function، غير معقمة dangerouslySetInnerHTML. |
security.remote-script-exec | تنزيل برامج نصية وتشغيلها مباشرة في واجهة سطر الأوامر أو المفسر. |
security.policy-changed | تغييرات في إعدادات أداة الفحص. انظر إلى إجراءات الحماية والتطبيق. |
deps.nonexistent | تبعيات جديدة غير موجودة في سجل الحزم الخاص بها. |
deps.known-malicious | تبعيات جديدة لها تحذيرات بشأن حزم خبيثة. |
deps.suspicious-new | تبعيات جديدة تم نشرها منذ أقل من 30 يومًا، ولها عدد تنزيلات قليل جدًا، أو اسمها يختلف بحرف أو حرفين عن حزمة شائعة، أو تغير مطورها مؤخرًا. |
deps.install-script | تبعيات npm جديدة تنفذ برنامج نصي عند تثبيتها. |
قواعد نظافة التبعيات، والإصدارات غير المحددة، واختلاف ملفات البيانات الوصفية وملفات القفل، تظل في ضبط الجودة ضمن معايير مكافحة الأخطاء. انظر إلى معايير مكافحة الأخطاء.
تُطبق القواعد على التغييرات، في نفس عملية الفحص التي تجريها ضبط الجودة لمعايير مكافحة الأخطاء، وعلى الفرع الافتراضي عند كل عملية دفع ومرة يوميًا، سواء كانت معايير مكافحة الأخطاء مفعلة أم لا. قسم الأمان، وليس إعدادات معايير مكافحة الأخطاء، هو من يحدد ما تفعله كل قاعدة. يمكن العثور عليها في قسم الأمان ← إعدادات ← فحص الكود. حتى يتم تطبيق قواعد فحص الكود، تظل كل قاعدة تحتفظ بالإجراء الذي كان مطبقًا عليها في ضبط الجودة، لذا القاعدة التي كانت مضبوطة على الحظر ستستمر في حظر التغييرات.
أمر الفحص الخاص بك
إذا كان مشروعك يستخدم أداة فحص أمان بالفعل، أدخل أمرها في
أمر الفحص الخاص بك ضمن فحص الكود. سيتم تشغيله كعملية فحص للمشروع
security_scan اتركه فارغًا لإيقاف تشغيله.
يمكن أيضًا أن تصل نتائج الأدوات الخارجية مثل SonarQube أو Snyk أو Semgrep إلى Coroid كأدلة للمراجعة. انظر إلى مزودي أدلة المراجعة.
مراجعة الأمان على طلبات السحب
تقوم مراجعة Coroid بفحص طلبات السحب في ضبط الجودة. عندما تكتشف مشكلة أمان، لا تدونها في مراجعتها كنص عادي، بل تبلغ عنها كادعاء منظم: نوع الثغرة، والملف والأسطر المتأثرة، ومستوى الخطورة. يسجل قسم الأمان كل ادعاء كـ لم يتم تأكيده بعد.
الفحص المستقل
بالنسبة للادعاءات الحرجة والعالية الخطورة، تقوم Coroid بتشغيل فحص مستقل: نموذج منفصل ومحدود يقرأ الملف المذكور في الادعاء، في آخر التزام للفرع pull request، ويجب عليه إعادة استنتاج المشكلة بنفسه. إذا نجح في ذلك، يصبح الادعاء اكتشافًا ثابتًا مؤكدًا. وإذا كان الكود الذي يحدد وجود المشكلة موجودًا في ملف آخر، لا يمكن للفحص تأكيده، فيبقى الادعاء غير مؤكد.
يستهلك هذا الفحص ائتمانات مؤسستك مثل أي عمل نموذجي آخر، ضمن حدود محددة لكل pull request. عند استهلاك الائتمانات أو الساعات، لا يتم تشغيل الفحص، وتظهر المراجعة رسالة: "لا يمكن التحقق من وجود مشكلة أمان محتملة: تم استهلاك ائتمانات المؤسسة أو ساعاتها."
ما الذي يؤدي إلى فشل المراجعة
| ملاحظة | تطبيق | |
|---|---|---|
| ادعاء مؤكد بمستوى يساوي أو يتجاوز العتبة (العالية بشكل افتراضي) | محايد، "اكتشاف مؤكد" | فشل فحص مراجعة Coroid، "اكتشاف مؤكد" |
| ادعاء غير مؤكد | لا يفشل أبداً | لا يفشل أبداً |
حتى لو تم ضبط المراجعة على الوضع الاستشاري في ضبط الجودة، فإن ادعاءً حرجًا أو عالي الخطورة مؤكد ومطبق يؤدي إلى فشل مراجعة Coroid. هذا هو الاستثناء الوحيد لعدم فشل المراجعات الاستشارية. المراجعة التي تطلب تغييرات بسبب ادعاءات أمان غير مؤكدة تُعتبر استشارية.
تتطلب مراجعة الأمان تفعيل مراجعة Coroid للمشروع. إذا كانت مراجعة Coroid غير مفعلة، ستظهر عبارة مناسبة في صفها ضمن قسم الأمان ← إعدادات.
ما الذي يصل إلى GitHub
قبل أن يصل أي نص للمراجعة أو تعليق أو تفتيش إلى GitHub، يمر عبر بوابة النشر. في المستودع العام، أو في المستودع الذي لا يمكن لـ Coroid التأكد من مستوى إمكانية رؤيته، يتم استبدال أي مشكلة أمنية غير معلنة بنص يقول "وجد Coroid مشكلة أمنية محتملة؛ التفاصيل متوفرة في Coroid"، مع رابط. انظر إلى ذلك. الإفصاح.