أي بيانات اعتماد وصلت إلى التزام تم دفعه إلى المستودع فهي مُسربة بالفعل، حتى لو أزال التزام لاحق تلك البيانات. تكتشف أداة الأمان بيانات الاعتماد في التغييرات وسجل الإصدارات، ولا تحتفظ بأي منها، وتعتبر كل حالة مفتوحة حتى يؤكد أحدهم أنها تم تغييرها أو إلغاؤها.
ما الذي يتم مسحه؟
- كل تغيير: تغييرات كل pull request، كجزء من
Coroid Securityعملية الفحص، وتغييرات وكلاء Coroid قبل إرسالها إلى المستودع. - الفرع الافتراضي: كل عملية دفع، ومرة واحدة عبر كامل سجل الإصدارات. يبدأ مسح سجل الإصدارات عند ربط المستودع أو تفعيل خاصية البيانات السرية المُسربة.
- فروع طلبات السحب: أي بيانات اعتماد تم دفعها إلى فرع pull request تؤدي إلى ظهور نتيجة اكتشاف أيضًا، لأنها موجودة بالفعل في المستودع.
الفرع الذي يتم دفعه دون pull request لا يتم مسحه.
يقرأ مسح سجل الإصدارات كل التزام قابل للوصول إليه، بدءًا من الأحدث، ويقرأ كل نسخة من الملف مرة واحدة. يعمل على شكل شرائح ويستأنف من حيث توقف؛ لكل مستودع حدود لكمية سجل الإصدارات التي يتم قراءتها (التزامات، بايتات، وقت، وحجم ملف)؛ وإذا تجاوز المستودع هذه الحدود، سيظهر تغطية جزئية.
ما الذي يتم اكتشافه؟
بيانات اعتماد مزودي الخدمات بصيغها المعروفة (مفاتيح الوصول لـ AWS، رموز GitHub وGitLab، مفاتيح OpenAI وغيرها)، ورموز التفويض، وبيانات الاعتماد المخصصة لأسماء مثل password أو api_key، ومفاتيح خاصة، وبيانات اعتماد داخل عناوين URL، وسلاسل ذات طاقة عالية. تُطابق بيانات الاعتماد الموجودة في الكود فقط عندما تكون القيمة حرفية، وليس متغيرًا أو استدعاء دالة.
لا تحتفظ Coroid بقيمة بيانات الاعتماد أبدًا
تنتقل القيمة المكتشفة مباشرة من أداة الكشف إلى وسيط بيانات الاعتماد الخاص بـ Coroid، الذي يعيد بصمة مشفرة ويحذف القيمة؛ فقط البصمة هي التي تُخزن. تكون هذه البصمة مرتبطة بكل مؤسسة، لذا لا يمكن مقارنتها بين المؤسسات أو تخمينها دون اتصال.
في كل مكان قد تظهر فيه البيانات السرية (نتائج الاكتشاف، عمليات الفحص، تعليقات المراجعة، السجلات)، تعرض Coroid فقط القاعدة وطول البيانات وموقعها، على سبيل المثال
[redacted secret: named_credential, 40 characters]. لا يتم عرض أي جزء من القيمة، حتى أول حروفها.
لا تحاول Coroid اختبار ما إذا كانت بيانات الاعتماد التي تكتشفها تعمل أم لا.
بيانات اعتماد واحدة، نتيجة اكتشاف واحدة
أي بيانات اعتماد تظهر في العديد من التزامات تُعتبر نتيجة اكتشاف واحدة بها عدة حالات؛ وبيانات الاعتماد نفسها في مستودعين تُعتبر نتيجتي اكتشاف، واحدة لكل مستودع. عندما تؤكد وجودها، تعرض أداة الأمان النتائج الأخرى التي تحمل نفس بيانات الاعتماد لتتمكن من تأكيدها معًا؛ ولا تفعل ذلك تلقائيًا.
لا تُغلق البيانات السرية إلا بتأكيد
إزالة بيانات الاعتماد من الكود تجعل حالاتها غير موجودة، لكن نتيجة الاكتشاف تظل مفتوحة: فقد يكون أي شخص قرأ المستودع مسبقًا قد حصل عليها. لا تُغلق إلا بعد أن يؤكد مالك أو مسؤول ما تم فعله:
- تم تغييرها أو تم إلغاؤها؛
- تاريخ تنفيذ ذلك؛
- ملاحظة اختيارية.
تسجل أداة الأمان من قام بالتأكيد والوقت، وتعرضه على نتيجة الاكتشاف: "تم تغييرها في 28 أكتوبر، وتم تأكيدها من قبل أليكس في 29 أكتوبر". تنتقل النتيجة إلى تم تأكيد تغييرها.
إصلاح البيانات السرية المُسربة
إنشاء مهمة قائمة تدقيق تُنشئ مهمة في المشروع تتضمن الخطوات التالية:
- قم بتغيير أو إلغاء بيانات الاعتماد لدى مزود الخدمة.
- نقلها إلى المكان الذي يحتفظ فيه المشروع ببيانات الاعتماد السرية.
- إزالتها من الكود.
- تأكيد تغييرها في أداة الأمان.
لا تكرر المهمة أو تحاول استخدام بيانات الاعتماد؛ كما لا تعيد كتابة سجل Git: إزالة بيانات الاعتماد من سجل الإصدارات قرار يعود لفريقك، ولا يجعل البيانات السرية المُسربة آمنة مرة أخرى.
هل البيانات السرية حقيقية أم ليست مشكلة؟
عند وجود نتيجة اكتشاف بيانات سرية، يجيب المالكون والمسؤولون على هل كانت بيانات اعتماد حقيقية؟
- بيانات اعتماد حقيقية تبقي نتيجة الاكتشاف مفتوحة حتى يتم تأكيدها.
- ليست مشكلة تسجل استثناءً لنتائج إيجابية كاذبة يخفي نتيجة الاكتشاف، مثلًا للبيانات المستخدمة في الاختبارات. بيانات اعتماد حقيقية تزيل ذلك الاستثناء مجددًا.
تساعد هذه الإجابات أيضًا في معايرة أدوات الكشف.
الحظر
تراقب خاصية البيانات السرية المُسربة التغييرات بشكل افتراضي؛ ولا تحظر إلا بعد أن تمر أدوات الكشف بمعايرة ويتم تفعيل الإجراءات الوقائية. اطلع على الحمايات والإجراءات الوقائية.
المؤسسات التي كانت تفعيل ميزة فحص السرّيات المبكرة في سياسة المؤسسة الخاصة بها لا تزال تُعاق بواسطتها، وذلك بناءً على إصدار أداة الكشف الخاص بها، إلى أن تمر أدوات الكشف الجديدة بعملية معايرة. هذا الفحص المبكر لا ينتج عنه أي نتائج، لذا لا يمكن لأي استثناء أو شهادة إخفاء ما يتم حظره بواسطته.
في الإعداد الافتراضي للمؤسسة، حظر الأسرار الجديدة وأكبر التغييرات التي تم فحصها تُصنف تحت قسم سرّيات مُسربة.
إشعارات
نتائج فحص السرّيات لا ترسل إشعارات حتى الآن. تظهر هذه النتائج في قسم أمان ← نتائج وفي نظرة عامة.
GitHub لفحص السرّيات
إذا كان فحص السرّيات الخاص بـ GitHub مفعلاً لمستودع معين، يمكن لقسم الأمان استيراد تنبيهاته. يظل تنبيه فحص السرّيات من GitHub مفتوحاً حتى يقوم أحدهم بحله في GitHub، لذا فإن دمج الإصلاح لا يغلقه هناك. اطلع على تنبيهات أمان GitHub.