مقبولية أعلى
دقة التنبيهات المرجّحة بالمالك
86%زمن تنفيذ وسيط أقل للفحص
الفحص ما بعد الدفع
98%تكلفة تقديم أقل
النموذج المضغوط مقابل استدعاءات LLM البعيدة
يعمل فحص الأسرار بأفضل شكل عندما يثق المطوّرون في النتائج. فإذا كُشف القليل جدًا، فقد تبقى بيانات اعتماد حقيقية في المستودع. وإذا صدرت التنبيهات كثيرًا، فقد يقضي المطوّرون وقتًا في التحقق من سلاسل نصية ليست أسرارًا.
تجعل الأسرار العامة هذا التوازن صعبًا بشكل خاص. فالسلسلة النصية نفسها قد تكون بيانات اعتماد حقيقية أو عنصرًا بديلًا في وثائق، لذا يتطلب كشفها فهم الشيفرة والنص المحيطين بها.
لمواجهة هذا التحدي، درّبنا مصنّفًا للأسرار مخصصًا لاحتياجات منتج GitHub: التمييز بين بيانات الاعتماد الحقيقية وما يشبهها مع تلبية متطلبات السرعة والكفاءة اللازمة للفحص على نطاق واسع.
في مقالنا المكمّل، حماية الأسرار يجب أن تتوسع مع البرمجيات، شرحنا لماذا يجب أن تواكب حماية الأسرار التطوير المسرّع بالذكاء الاصطناعي. وهنا، ننقلكم خلف الكواليس إلى المصنّف المدرك للسياق الذي يشغّل هذا الجهد: كيف صممناه ودرّبناه وقيّمناه للعثور على أسرار حقيقية أكثر مع ضوضاء أقل.
ما قمنا بتمكينه
يعمل فحص الأسرار في GitHub في لحظتين رئيسيتين:
- حماية الدفع تساعد على منع وصول الأسرار إلى المستودع من خلال فحص التغييرات قبل قبول الدفع، مما يمنح المطوّرين فرصة لمعالجة النتيجة.
- الفحص ما بعد الدفع يعمل بعد التزام الشيفرة، إذ يفحص محتوى المستودع باستمرار وينشئ تنبيهات عند اكتشاف أسرار محتملة ليتمكن المطوّرون وفرق الأمن من التحقق منها ومعالجتها.
طوّرنا مصنّفًا سريعًا خفّض الوسيط الزمني لتنفيذ الفحص ما بعد الدفع بنسبة 86% مقارنة بخط المعالجة السابق القائم على LLM. جعلت هذه الكفاءة من العملي توسيع كشف الأسرار العامة ليشمل حماية الدفع، فتُعاد النتائج قبل أن يدفع المطوّرون تغييراتهم، لا فقط بعد التزام الشيفرة.
لماذا يصعب كشف الأسرار
غالبًا ما تتضمن بيانات الاعتماد المهيكلة بادئة مميزة أو طولًا أو مجموعة أحرف أو قيمة تحقق. أما الأسرار العامة فقد لا تتضمن ذلك. إذ تتداخل صياغتها مع معرّفات البناء وقيم التحقق وبصمات الأصول وقيم العينات وسلاسل أخرى غير حساسة. والسياق هو الإشارة الحاسمة.
| بيانات اعتماد حقيقية على الأرجح | عنصر مشابه غير ضار على الأرجح |
|---|---|
| كلمة مرور مُسندة بجوار عنوان URL لقاعدة بيانات إنتاج | القيمة نفسها الشبيهة بكلمة المرور داخل عنصر تجريبي للاختبار |
| سلسلة اتصال في إعداد النشر | سلسلة اتصال بـ localhost في دليل إعداد |
| قيمة عالية العشوائية مرتبطة ببيانات اعتماد لواجهة برمجة التطبيقات (API) | مجموع تحققي أو معرّف بناء أو تجزئة أصل ذات عشوائية عالية |
هذه الحالات هي سالبات صعبة: سلاسل نصية تطابق نمط بيانات اعتماد ولكنها ليست بيانات اعتماد قابلة للاستخدام. يمكن أن تُخفي إضافة المزيد من القواعد بعضها، لكن كل استثناء يحمل خطر إخفاء سرّ حقيقي. وبدلاً من ذلك، يمكن لمصنِّف متعلَّم استخدام إشارات مثل مسار الملف، ونوع السرّ، وأسماء المتغيرات، والكود أو النص المجاور.
لهذا السبب أطلقنا ماسحًا جديدًا يستخدم خط أنابيب من مرحلتين:
- توليد المرشحين: تفحص المرشِّحات التعبيرية (Regex) المحتوى بحثًا عن سرور محتملة بمعدل استرجاع مرتفع. هذه المرحلة مُحسَّنة لالتقاط عائلات واسعة من الأنماط الشبيهة ببيانات الاعتماد بسرعة وبشكل حتمي.
- تصنيف مدرك للسياق: يقوم مصنّف ModernBERT مضبوط بدقة بتقييم كل مرشّح والسياق المحيط به. وقد دُرّب للتعرّف على المؤشرات التي تفصل الأسرار الحقيقية عن النتائج الإيجابية الكاذبة، بما في ذلك القيم المؤقتة (placeholders) والأمثلة ومقتطفات التوثيق والمحتوى المُولَّد والمعرّفات غير الحساسة. ولأن النموذج صغير الحجم وفعّال التشغيل على بنيتنا التحتية للاستدلال، فإن تكلفة تشغيله أقل بكثير وهو أسهل في التوسّع مقارنة بخط أنابيب يعتمد على نماذج LLM.
الأثر:
- تحسّن بنسبة 11.5% في قبول المستخدمين، مع تقليل الإنذارات الكاذبة.
- وقت تنفيذ أسرع بنسبة 86% لكشف الأسرار بعد الدفع.
- توفير في التكاليف يزيد عن 98% مقارنةً بالمسار المعتمد على نماذج LLM.
كيف تعمل خطوط المعالجة لدينا
أثناء فحص المحتوى، تُلقي أنماط التعبيرات النمطية (regex) شبكة واسعة وتضع علامة على أي شيء يشبه بيانات اعتماد، حتى لا تُفوّت الأسرار الحقيقية في البداية. ثم يُوجَّه كل مرشح إلى مصنِّف ModernBERT مُدرَّب بدقة، يقرأ القيمة مع مسار الملف وأسماء المتغيرات والشيفرة المحيطة بها. يقدِّر المصنِّف احتمال أن يكون سرًّا حقيقيًا. تتحول النتائج عالية الثقة إلى تنبيهات، بينما تُستبعد العناصر المشابهة مثل القيم المؤقتة (placeholders) وبيئات الاختبار والمجاميع الاختبارية (checksums) قبل وصولها إلى المطورين.
الخطوة 1
مسح
محتوى المستودع، والالتزامات (commits)، وطلبات السحب، والأسطح الأخرى المفحوصة.
الخطوة 2
توليد المرشحين
تُحدِّد أنماط التعبيرات النمطية (Regex) الرموز الممكنة والمفاتيح والسلاسل النصية الشبيهة ببيانات الاعتماد.
الخطوة 3
تصنيف
تم ضبط ModernBERT بدقة لتقييم المرشح مع السياق وتحديد احتمالية كون السر حقيقيًا.
الخطوة 4
تنبيه أو كتم
تتقدم النتائج عالية الثقة قدمًا؛ وتُرشَّح النتائج الإيجابية الكاذبة المحتملة.
الخيار التصميمي المهم هو أن النموذج لا يحل محل الفحص الحتمي، بل يكمّله. تظل التعبيرات النمطية (Regex) هي الأداة المناسبة للعثور بسرعة على السلاسل النصية المرشحة. أما المصنِّف فيُستخدم حيث يوفر تعلُّم الآلة أكبر قيمة: التمييز بين "يبدو وكأنه سر" و"يُرجَّح أنه سر حقيقي."
مشكلة السلبيات الصعبة: أسرارًا تبدو حقيقية تقريبًا
معظم الإنذارات الكاذبة ليست عشوائية. إنها أمثلة سلبية صعبة: سلاسل نصية تطابق نمط بيانات اعتماد لكنها ليست بيانات اعتماد صالحة للاستخدام. تشمل الأمثلة العناصر النائبة في الوثائق، والأمثلة التجريبية في الاختبارات، والقيم المحجوبة، والمعرفات غير الحساسة، والبيانات التجريبية المُنشأة. هذه الحالات سهلة على التعبير النمطي (regex) لمطابقتها وصعبة على النظام القائم على القواعد وحده كبحها دون أن يفقد عن طريق الخطأ أسرارًا حقيقية.
يساعد ModernBERT لأنه يستطيع قراءة المرشَّح مع الكود والنصوص المجاورة، مما يوفر فهماً سياقياً يضاهي نموذج LLM دون زمن الاستجابة والعبء الحاسوبي الناتجين عن توليد مخرجات بلغة طبيعية. على سبيل المثال، قد يكون المرشَّح المحاط بكلمات مثل “example” أو “dummy” أو “fake” أو “replace-me” أقل خطورة من مرشَّح مُسند إلى متغير بيئة في ملف نشر. يتعلم المصنِّف هذه الاختلافات السياقية من أمثلة موسومة بدلاً من اشتراط أن يرمّز المهندسون كل استثناء كقاعدة إضافية.
اخترنا ModernBERT لأنه يوفر ملاءمة قوية لهذه الأعباء العملية: فهو مدمج وفعال ومناسب جيداً للتصنيف على النصوص المجاورة للكود. في مسح الأسرار، يحتاج النموذج إلى اتخاذ قرار معاير على نوافذ مرشَّحة قصيرة بسرعة إنتاجية عالية وزمن استجابة منخفض.
هذا يجعل مصنِّفاً من نوع المُرمِّز المُضبوط بدقة شكلاً خدمياً أفضل من نموذج LLM متعدد الأغراض في هذه المرحلة من خط المعالجة. يمكن تدريب النموذج مباشرة على حدود القرار لدينا، وتقييمه باستخدام نفس مقاييس الاستدعاء والدقة التي تهم لجودة مسح الأسرار.
كيف درّبنا النموذج
كان التحدي يتمثل في إيجاد بيانات ممثِّلة للحالات التي يكون فيها التركيب اللغوي وحده مضللاً. تجمع استراتيجية التدريب والتقييم بين ثلاثة مصادر:
- أمثلة مشتقة من المنتج من مستودعات GitHub، مستخدمةً التغذية الراجعة من تجربة كشف الأسرار وتحققاً بشرياً إضافياً.
- مرشَّحات تعبير نمطي عالية الاستدعاء من بيانات مستودعات GitHub، بما في ذلك أمثلة موسومة بشرياً وسوم وضعيفة تُستخدم لتوسيع التغطية.
- أمثلة اصطناعية موجهة للحالات النادرة والصعبة، مثل أسرار التوثيق وبيانات الاختبار الثابتة والمفاتيح العامة والمجاميع الاختبارية والمناظرات المهيكلة وأزواج شبه المطابقة.
تتجاوز الصفوف الاصطناعية التحقق الحتمي والمراجعة القائمة على النموذج قبل إدراجها. يركز التدريب على الأسرار الحقيقية، والنتائج الإيجابية الزائفة الواقعية، والأمثلة السلبية الصعبة التي تربك في كثير من الأحيان الأساليب المعتمدة على التعبيرات النمطية فقط. يتضمن كل مدخل نموذج القيمة المرشحة، ومسار الملف، ونوع السر، وكمية محدودة من السياق المحيط. نختار العتبات من خلال التقييم دون اتصال بالإنترنت، ثم نتحقق من السلوك على حركة مرور شبيهة بالإنتاج قبل الطرح الأوسع.
قبل تقسيم البيانات، جمّعنا الصفوف التي تشترك في مستودع أو قيمة مرشحة أو مثال، بحيث لا تتمكن النسخ شبه المطبوعة من الظهور في كلٍّ من التدريب والتقييم.
ركّز التدريب على الحالات الأكثر أهمية لجودة التنبيهات: الأسرار الحقيقية، والإنذارات الكاذبة الواقعية، والأمثلة السالبة الصعبة التي تطابقها التعبيرات النمطية كثيرًا. تتضمن تمثيلة المدخلات سلسلة السر المرشح، ومسار الملف، ونوعه، وكمية محدودة من السياق المحيط. أما المخرجات فهي درجة تصنيف يستخدمها الماسح ليقرر ما إذا كان ينبغي المتابعة مع المرشح.
حسّنّا من أجل الموازنة في المنتج: الحفاظ على نسبة الاسترجاع أو تحسينها مع تقليل الإنذارات الكاذبة وتكلفة التقديم. عمليًا، يعني ذلك أن عتبة المصنِّف تُختار باستخدام التقييم دون الاتصال، ثم تُتحقق من صحتها أمام حركة مرور شبيهة بالإنتاج قبل الطرح.
كان مبدأ التدريب الأهم هو جعل النموذج يرى الأمثلة المربكة. أدرجنا مرشحات تشبه الأسرار الحقيقية في الشكل لكنها مختلفة في المعنى، حتى يتعلم النموذج ليس فقط كيف يبدو السر، بل أيضًا كيف يبدو الإنذار الكاذب في السياق.
يُصدَّر النموذج المدرَّب بصيغة ONNX مع تكميم 8 بت، مما يتيح استدلالًا سريعًا.
نتائج التقييم
| النتيجة الفعلية | التغيير مقارنة بخط أنابيب LLM السابق | ما يقيسه |
|---|---|---|
| القبول الموزون بمالك المستودع | أعلى بنسبة 11.5% | قبول العملاء للنتائج المكتشفة |
| الزمن الوسيط لتنفيذ الفحص بعد الدفع | أقل بنسبة 86% | زمن تنفيذ الفحص في الإنتاج |
| تكلفة التقديم | أقل بأكثر من 98% | تكلفة المصنِّف المضغوط مقارنةً باستدعاءات LLM البعيدة |
قيّمنا أثر خط الأنابيب الجديد في الإنتاج على مرحلتين: أولًا مقارنةً بخط الأساس الإنتاجي على حركة المرور العامة نفسها، ثم من خلال تجربة A/B مع العملاء.
- التقييم دون الاتصال: في الفحص بعد الدفع، حقق خط الأنابيب الجديد دقة أعلى بنسبة 13% واسترجاعًا أعلى بنسبة 19% مقارنةً بخط أنابيب LLM السابق عند التقييم على حركة المرور العامة نفسها.
- التقييم الفعلي: ثم تحققنا مما إذا كانت هذه التحسينات في الجودة تُترجم إلى نتائج لدى العملاء من خلال تجربة A/B مقابل خط أنابيب LLM السابق. ارتفع القبول الموزون بمالك المستودع بنسبة 11.5%. نزّن القبول بمالك المستودع لتقليل تأثير العملاء الذين يعالجون كميات كبيرة من التنبيهات دفعة واحدة، وهو ما قد يشوّه المتوسط البسيط لولا ذلك.
خذ هذا معك
أفضل أداة أمنية هي التي يثق بها المطورون بما يكفي لاستخدامها. الدقة الأعلى تعني تنبيهات مشتتة أقل. الاسترجاع الأعلى يعني رصد أسرار حقيقية أكثر. التكلفة الأقل تعني إمكانية مواصلة تحسين التغطية دون جعل الفحص مكلفًا إلى حدٍّ يمنع استخدامه.
للمطورين وفرق الأمان، يجب أن يترجم هذا إلى إنذارات كاذبة أقل، وتغذية راجعة أسرع في الأماكن التي يُرجَّح فيها إدخال الأسرار: عمليات الإيداع (commits)، وطلبات السحب (pull requests)، وسير عمل التطوير اليومي.
الأنظمة الهجينة قوية. يمنحنا التعبير النمطي (Regex) السرعة والشفافية وتغطية واسعة للمرشحين. يمنحنا ModernBERT فهماً سياقياً متعلَّماً وتقليل الإنذارات الكاذبة. والجمع بينهما يتفوق على أي من النهجين بمفرده في ظل قيد هذا المنتج.
تعلمنا أيضًا أن حجم النموذج ليس معناه فائدته. قد يكون مصنفًا أصغر مُضبوطًا بدقة هو الإجابة الصحيحة عندما تكون المهمة محدودة النطاق، وحد القرار قابلاً للقياس، وكفاءة الخدمة بالغة الأهمية.
هذه خطوة واحدة نحو جعل فحص الأسرار أكثر دقة وقابلية للتوسع وسهولة في الاستخدام. وبالنظر إلى المستقبل، نركز على مجالين:
- بناء عجلة تحسين مستمر. سنستخدم حلقات التغذية الراجعة في بيئة الإنتاج لتحديد حالات الإنذارات الكاذبة الجديدة والحالات المفقودة الخاطئة، وتحويل الإشارات الواقعية إلى بيانات تدريب وتقييم ذات جودة أعلى.
- استكشاف هياكل نماذج جديدة. نحن نحقق في أساليب يمكنها أداء اكتشاف الأسرار واستخراجها في خطوة واحدة، مما يقلل من تعقيد خط الأنابيب مع الحفاظ على الدقة وقابلية التوسع.
شكر وتقدير
شكر جزيل لفرق الهندسة والعلوم والمنتج عبر GitHub وMicrosoft الذين ساعدوا في بناء بيانات التدريب ومنظومة التقييم ومنصة الخدمة وخطة الإطلاق لهذا الماسح الجديد للأسرار.
ظهر المنشور نموذج GitHub لكشف الأسرار: اكتشاف أسرار أكثر مع ضوضاء أقل أول مرة على مدونة GitHub.
