حماية تسريبات خطافات Git

اقضِ على تسريبات البيانات الحساسة.
قبل وصولها إلى المستودع.

سنتينل (Sentinel) هو ملف برمجي ثنائي مستقل ومجمع بلغة Go، يقوم بفحص التحقق من المرفقات محلياً في أقل من 20 جزءاً من الثانية لحماية مفاتيحك السرية وبياناتك الحساسة قبل مغادرتها جهاز المطور.

نُشر بواسطة خالد هاني في 3 يوليو 2026

01 / الفلسفة الأمنية

لماذا يعد الفحص المحلي خط الدفاع الأخير الحقيقي

في بيئات التطوير الحديثة (DevSecOps)، يتم تأجيل فحص البيانات الحساسة غالباً إلى منصات البناء المستمر (CI) أو خطافات الرفع (Post-Push Webhooks). وعلى الرغم من أهمية هذه الفحوصات، إلا أنها تعمل بعد فوات الأوان. بمجرد وصول المفتاح السري إلى قاعدة بيانات git البعيدة، يجب اعتباره مكشوفاً، مما يستدعي إجراءات مكلفة لتدوير المفاتيح، ومراجعة سجلات الوصول، وتنسيق استجابة الطوارئ بين فرق العمل.

"بمجرد خروج المفتاح السري من محطة عمل المطور، تتحول المهمة الأمنية من الوقاية إلى معالجة الكارثة."

يعمل سنتينل على سد هذه الثغرة عند الحافة (Edge). من خلال تثبيته كخطاف pre-commit أصلي لـ Git مباشرة في بيئتك المحلية، يقوم بفحص التعديلات المرحلية وإلغاء الالتزام فوراً إذا تم الكشف عن مفاتيح سحابية نشطة أو كلمات مرور أو إعدادات حساسة. ولأنه يعمل بالكامل محلياً، فهو لا يتطلب أي اتصال بشبكة الإنترنت ولا يشارك أي بيانات مع خوادم خارجية.

02 / البنية الهندسية للأداة

التحقق من البيانات الحساسة في أقل من 20 جزءاً من الثانية

تعتبر سرعة التطوير قيداً أساسياً عند تفعيل خطافات pre-commit؛ إذ أن الخطافات التي تتسبب في بطء الالتزام تدفع المطورين لتجاهلها. لحل هذا القيد، يعتمد سنتينل على خط فحص ثلاثي المستويات يقوم بتحليل التعديلات في أجزاء من الثانية مع الحفاظ على دقة كشف استثنائية.

المستوى الأول: خوارزمية Aho-Corasick الأوتوماتيكية

يمر كل ملف عبر فحص خطي ذو تعقيد $O(N)$ باستخدام شجرة البحث المجمعة Aho-Corasick. يتم تضمين القواعد الافتراضية والمخصصة للمستخدم مباشرة داخل جدول الحالات البرمجية للأداة، مما يسمح باكتشاف الأنماط والرموز في ممر واحد دون إثقال المعالج.

المستوى الثاني: قياس شانون لعشوائية النصوص (Entropy)

تخضع الرموز المرشحة المكتشفة في الممر الأول لحساب مدى العشوائية وتوزيع الأحرف فيها (Shannon Entropy). يساعد هذا المقياس في التمييز بين المفاتيح العشوائية الحقيقية والمتغيرات أو القوالب النصية الافتراضية.

المستوى الثالث: محلل سياق الاستثناءات

أخيراً، يقوم المحلل بقراءة أسطر الكود المحيطة بالمتغيرات والتعليقات المجاورة. يتيح هذا المستوى استبعاد المفاتيح الموجودة في ملفات الاختبار أو بيئات التطوير الافتراضية، أو الأسطر الملحقة بتتعليق التجاوز // sentinel:ignore.

معاينة مخرجات الفحص الفعلية

عندما يكتشف سنتينل تسريباً للبيانات، يقوم بإلغاء عملية الالتزام وعرض تفاصيل الفحص الدقيقة في واجهة سطر الأوامر بالشكل التالي:

03 / إحصائيات الأداء

حجم استهلاك الذاكرة وسرعة المعالجة

لضمان تحليل أداء شفاف، قمنا بمقارنة سنتينل بأبرز أدوات الكشف (Gitleaks و TruffleHog). تم جمع هذه المقاييس على محطة عمل محلية بمعالج ثماني النواة (ARM64)، مع قياس زمن الاستجابة والحد الأقصى لاستهلاك الذاكرة العشوائية (Peak RSS).

المقياس المرصود سنتينل (v2.0.5) جيتليكس (v8.30.1) ترافلهوغ (v3.95.7)
حجم الملف الثنائي (المجمّع) 11.6 MB 42.5 MB 185.0 MB
ذاكرة محطة العمل (Peak RSS) 11.2 - 11.6 MB 15.0 - 16.8 MB 152.9 - 155.7 MB
فحص ملفات النظام المرحلية 30 - 40 ms 210 - 220 ms 7.13 - 11.41 s
الفحص التاريخي (سجل Git) 60 - 140 ms 160 - 260 ms 6.32 - 9.05 s
الاعتمادية الخارجية للملف صفر (مستقل) صفر صفر
04 / تثبيت الأداة

التثبيت والدمج المحلي

يتم تجميع سنتينل كملف ثنائي مستقل للعمل مباشرة على أنظمة Linux و macOS وأجهزة Android عبر بيئة Termux دون الحاجة لتثبيت لغة Go أو أي اعتماديات برمجية أخرى.

الخيار أ: الملفات الثنائية الجاهزة (موصى به)

أسرع طريقة لتثبيت الأداة مباشرة على نظامك دون الحاجة لبناء الملف من المصدر. مناسبة جداً لمستخدمي أندرويد و Termux.

# 1. تنزيل الملف الثنائي المناسب لمعمارية جهازك
wget https://github.com/sentinel-cli/sentinel/releases/download/v2.0.5/sentinel-v2.0.5-linux-arm64 -O sentinel

# 2. منح صلاحيات التشغيل للملف
chmod +x sentinel

# 3. نقل الملف لمسار البرامج المعتمد في جهازك ($PREFIX/bin لـ Termux، أو /usr/local/bin لـ Linux/macOS)
mv sentinel $PREFIX/bin/

# 4. التحقق من نجاح التثبيت
sentinel version

الخيار ب: مثبت حزم لغة Go

إذا كان لديك بيئة Go مهيأة في مسار نظامك، يمكنك تنزيل وبناء الأداة مباشرة بالأمر التالي:

go install github.com/sentinel-cli/sentinel/v2/cmd/sentinel@latest

الخيار ج: التجميع والبناء من المصدر

استنساخ المستودع وبناء الملف الثنائي يدوياً باستخدام أوامر Makefile المرفقة:

git clone https://github.com/sentinel-cli/sentinel.git
cd sentinel
make build
./dist/sentinel version

تفعيل خطاف Git في المستودعات

بعد وضع البرنامج في مسار نظامك، يمكنك تفعيل فحص الالتزام التلقائي للمستودعات محلياً:

# تفعيل الفحص للمستودع الحالي فقط
sentinel install

# تفعيل الفحص عالمياً لكافة المستودعات المستقبلية
sentinel install --global
05 / تفاصيل التشغيل والأوامر

أوائل أوامر التشغيل وسير العمل

يدعم سنتينل عدة طرق تشغيل مختلفة لتناسب احتياجات المطورين وسير العمل محلياً أو في الخوادم البعيدة:

1. فاحص الالتزام التلقائي (Pre-Commit)

يتم تشغيله تلقائياً بواسطة git عند كتابة أمر الالتزام. يقوم بقراءة الملفات المجهزة جزئياً فقط وفحصها في الذاكرة لمنع الالتزام إذا كانت تحتوي على أسرار.

sentinel run

2. الفحص اليدوي للمجلدات

لفحص مجلد أو ملف محدد يدوياً وبشكل تكراري قبل البدء في تجهيز الملفات للالتزام:

sentinel scan -r ./path/to/project

3. التصدير لمنصات البناء المستمر

تصدير تقرير أمني مهيكل بصيغة JSON أو SARIF لدمجه مع أدوات التحليل الأخرى في خوادم CI/CD:

sentinel scan -r -f sarif . > report.sarif
06 / التخصيص والضبط

تخصيص سنتينل ليتوافق مع مستودعك البرمجي

يعمل سنتينل بشكل فوري ومباشر بالإعدادات الافتراضية الجاهزة للإنتاج. بالنسبة لفرق العمل والمؤسسات ذات بيئات العمل المعقدة، يمكن تعديل وتخصيص سلوك الكشف بإضافة ملف .sentinel.yaml في الجذر الرئيسي للمستودع.

قواعد الكشف المخصصة (Custom Signatures)

يمكنك كتابة وتحديد بادئات المفاتيح الخاصة بمؤسستك وتجميعها مباشرة ضمن شجرة حالات البحث (Aho-Corasick Automaton) دون التسبب بأي بطء تشغيلي:

# .sentinel.yaml
custom_signatures:
  - id: "internal-api-key"
    description: "Proprietary internal service credential"
    prefix: "mycompany_key_"
    severity: "CRITICAL"
    regex: "^mycompany_key_[a-zA-Z0-9]{32}$"

استبعاد المسارات والامتدادات (Exclusions)

لتسريع عمليات الفحص والابتعاد عن فحص المجلدات الخارجية أو ملفات الوسائط الثقيلة:

exclude_paths:
  - "vendor/**"
  - "node_modules/**"
exclude_extensions:
  - ".png"
  - ".zip"

أنماط القائمة البيضاء العالمية (Allowlist)

لمنع إطلاق تنبيهات كاذبة حول مفاتيح عامة أو تجريبية معروفة مسبقاً وتستخدم بكثرة في الاختبارات:

allowlist_patterns:
  - "AKIAIOSFODNN7EXAMPLE"   # مطابقة تامة
  - "sk_test_*"              # كافة مفاتيح اختبار Stripe
07 / المدونة الهندسية

كواليس التطوير الهندسية وملفات النظام

مقالات يشاركها المطورون لشرح آليات تحسين وسرعة الكشف والفلسفة الأمنية خلف بناء الأداة.

7 يوليو 2026

محرك الـ DFA المسطح: القضاء على حجز الذاكرة في المسار الساخن

كيف نجح الإصدار 2.0.5 في تمثيل خوارزمية Aho-Corasick عبر جدول DFA مسطح ومتصل ومفهرس بالأعداد الصحيحة. أدى ذلك لتقليص ذاكرة Trie النشطة إلى 500 كيلوبايت، وتخفيض ذروة استهلاك ذاكرة النظام RSS إلى الحدود الدنيا لبيئة عمل Go (~11 ميجابايت) مع انعدام تام لحجز الذاكرة المؤقتة (Heap Allocations) أثناء الفحص.

3 يوليو 2026

تحسين استهلاك الذاكرة: تجميع القواعد مباشرة في الأوتوماتون

كيف نجح الإصدار 2.0.4 في تقليص حجم استهلاك الذاكرة RSS بنسبة 27% من خلال بناء القواعد المخصصة وتجميعها مباشرة ضمن مصفوفة الحالات البرمجية لشجرة Trie، متفادياً معالجة الرموز أثناء التشغيل.

28 يونيو 2026

وهم الفحص الأمني بعد الرفع (Post-Push)

دراسة حول النافذة الزمنية لاختراق المفاتيح السحابية بعد رفعها للإنترنت ولماذا يعتبر تدارك التسريب في خوادم الـ CI فواتاً للأوان وضرورة تصفية الأخطاء عند جهاز المطور محلياً.

08 / المشاريع الأخرى

تحف هندسية ومعمارية أخرى

استكشف مشاريع الحماية والشبكات وتطبيقات خوادم النظام المطورة في بيئتنا التقنية الخاصة.

NexusFi

بيئة سحابية وشبكية متكاملة ومستقلة ثلاثية الطبقات مصممة للعمل بشكل أصلي على أجهزة أندرويد المعززة بصلاحيات الروت. تربط محركات قطع اتصال L2، استكشاف الـ OTG التلقائي، وتجزئة سرعة النطاق الترددي.

NetAnatomy

أداة متقدمة لتصور الشبكات والتخطيط التشريحي للطبولوجيا المعقدة للبنية التحتية. متوفرة عبر لوحة تحكم ويب تشخيصية.

Decisify

محرك اتخاذ قرارات متطور وإطار لتحديد الأولويات مصمم للتحليل السريع للخيارات والنمذجة المنطقية.

09 / مجتمع المطورين والدعم

تواصل معنا وناقش تفاصيل الحماية البرمجية

سنتينل هو مشروع مفتوح المصدر تم تطويره بالكامل بالتعاون مع مجتمع المطورين. نهتم جداً بمراجعاتكم واقتراحاتكم لتحديث القواعد وزيادة فاعلية الكشف.

إذا كنت ترغب في الإبلاغ عن مشكلة أمنية، أو اقتراح قاعدة مطابقة جديدة، أو الاستفسار عن التثبيت في بيئات عمل مختلفة، يرجى استخدام قنوات التواصل التالية: