المستوى المطلوب: محترف. هذا الشرح موجّه لمن يدير مستودعات فريق على Git ولديه خط CI (مثل GitHub Actions). لو أنت مبتدئ، ابدأ بقسم "إزاي بتشتغل الأداة" ففيه مثال مبسّط قبل التفاصيل التقنية.
بوت واحد بيفحص كل commit جديد على GitHub العام، ولو لقى مفتاح AWS بيبدأ يستهلك حسابك قبل ما تخلّص قهوتك. الحل مش تنبيه بشري بيتأخّر، الحل بوّابتان أوتوماتيك بتوقفا المفتاح قبل ما يوصل للمستودع أصلاً — ومجانًا. في نهاية المقال هيكون عندك خطاف محلي وفحص CI شغّالين بالكامل.
أتمتة كشف الأسرار قبل ما تدخل تاريخ Git
المشكلة باختصار
الأسرار (مفاتيح API، توكنات، كلمات سر قواعد البيانات) بتتكتب داخل الكود كل يوم بالغلط. حسب تقرير GitGuardian لعام 2026، ظهر حوالي 29 مليون سر علنًا على GitHub في 2025 وحده. وفي 2023 كان الرقم 12.8 مليون سر جديد بزيادة 28% عن السنة اللي قبلها. المشكلة مش إن السر بيتشاف، المشكلة إن Git بيفتكره.
ركز في النقطة دي: لمّا تمسح المفتاح في commit جديد، هو لسه موجود في التاريخ. أي حد يعمل git log -p بيلاقيه. عشان كده مسح السطر مش كافٍ؛ لازم البوّابة توقفه قبل ما يتسجّل، ولو اتسرّب فعلاً لازم تدوّر المفتاح مش بس تمسحه. الافتراض هنا إن كودك على Git وعندك CI.
ليه الطرق الشائعة بتفشل
الطريقة الشائعة إنك تعتمد على .gitignore ومراجعة الكود البشرية. دي بتفشل في حالتين: الملف اللي فيه السر مش دايمًا في .gitignore، والمراجع البشري بيقرا منطق الكود مش بيدوّر على سلسلة عشوائية بطول 40 حرف وسط 300 سطر. الاعتماد على GitHub Push Protection وحده كمان ناقص: بيغطّي مزوّدين معروفين بس، ومبيشتغلش على كل الأنظمة أو الأسرار الداخلية بتاعتك.
البديل: أداة بتفحص آليًا وبتوقف العملية. gitleaks أداة مفتوحة المصدر بتعمل بالظبط ده، بتفحص بالـ regex والإنتروبيا، وبتديك تقارير بصيغ JSON و SARIF.
إزاي بتشتغل الأداة: regex + إنتروبيا
خلّي بالك من فكرة العشوائية بمثال بسيط. لو طلبت من صاحبك يقول كلمة، هيقول "قلم" أو "بيت" — كلمات متوقّعة. لكن لو فتحت مدير كلمات السر وطلبت مفتاح، هيطلعلك حاجة زي g7Qx2vT9pLmZ — حروف وأرقام بلا نمط. الأداة بتقيس "مقدار المفاجأة" في كل سلسلة نصية؛ السلسلة العشوائية جدًا غالبًا سر، مش كلمة عادية.
علميًا ده اسمه إنتروبيا شانون: كل ما قلّت القابلية للتنبؤ بالحروف، زادت قيمة الإنتروبيا. gitleaks بيدمج إشارتين: قواعد regex لمزوّدين معروفين (شكل مفتاح AWS بيبدأ بـ AKIA، توكن GitHub بيبدأ بـ ghp_)، وحد إنتروبيا للسلاسل اللي مالهاش شكل معروف بس عشوائية بشكل مريب. الدمج ده بيقلّل الإيجابيات الكاذبة مقارنة بأداة بتعتمد على الإنتروبيا لوحدها.
البوّابة الأولى: خطاف pre-commit محلي
الفكرة إن الفحص يشتغل على جهاز المطوّر قبل ما الـ commit يتسجّل. أسرع نقطة توقف ممكنة.