ما الجديد؟
شرحت GitHub كيف بنت مصنّفًا مخصّصًا لكشف «الأسرار العامة» في الكود، مثل كلمات المرور وسلاسل الاتّصال التي لا تحمل بادئة أو شكلًا مميّزًا، بدل خطّ معالجة سابق يعتمد على نموذج لغوي كبير.
لماذا هي صعبة؟
نفس السلسلة قد تكون بيانات اعتماد حقيقية أو مثالًا في التوثيق. أمثلة من GitHub:
- كلمة مرور بجانب رابط قاعدة بيانات إنتاجية، مقابل القيمة نفسها في بيانات اختبار.
- سلسلة اتّصال في إعدادات النشر، مقابل سلسلة localhost في دليل الإعداد.
- قيمة عشوائية مرتبطة بمفتاح واجهة برمجية، مقابل مجموع اختباري أو معرّف بناء.
إضافة قواعد أكثر تكتم بعض الحالات، لكن كل استثناء قد يخفي سرًّا حقيقيًا.
الحلّ: مرحلتان
- توليد المرشّحين: تعبيرات نمطية (Regex) تلتقط كل ما يشبه بيانات الاعتماد بسرعة وبشكل حتمي.
- التصنيف حسب السياق: مصنّف ModernBERT مضبوط يقرأ كل مرشّح مع مسار الملف ونوع السرّ وأسماء المتغيّرات والكود المحيط، ويقدّر احتمال أن يكون سرًّا حقيقيًا.
النتائج
- تحسّن قبول المستخدمين للتنبيهات بنسبة 11.5%، أي إيجابيات كاذبة أقلّ.
- زمن الفحص بعد الدفع أقلّ بـ86% مقارنةً بخطّ المعالجة القائم على النموذج اللغوي.
- تكلفة تشغيل أقلّ بأكثر من 98%.
- السرعة جعلت توسيع الكشف إلى Push Protection عمليًا، أي فحص التغييرات قبل قبول الدفع، لا بعده فقط.
ليه ده مهم؟
ليست كل مهمّة تحتاج نموذجًا لغويًا كبيرًا. مصنّف صغير مضبوط على مهمّة محدّدة قد يكون أدقّ وأسرع وأرخص بكثير. وهذا النمط، فلتر واسع ثم مصنّف سياقي، يصلح لمشاكل كثيرة تتطلّب فحص كمّيات ضخمة من البيانات.
المصادر: GitHub Blog — 2026-10-13



