
كلب لطيف يساعدك في البحث عن المشكلات الأمنية في مستودعاتك.
Layne هو تطبيق GitHub مستضاف ذاتيًا يُمركز فحص الأمان عبر مستودعاتنا. نظرًا لأننا لا نستخدم أدوات فحص SAST/الأسرار التجارية، ولا نملك إمكانية الوصول إلى GitHub Enterprise، فقد يصبح الحفاظ على ملفات سير عمل GitHub Actions المختلفة عبر مستودعات متعددة أمرًا صعبًا - خاصةً مع ازدياد عدد هذه المستودعات. بدلاً من ذلك، نثبّت Layne مرة واحدة، وهو يستمع إلى أحداث طلبات السحب، ويشغّل أدوات الأمان لدينا على الخادم، وينشر النتائج كتعليقات توضيحية أصلية في GitHub Check Run، ويُرسل إشعارًا إلى قناة إشعارات فريق الأمان لدينا.
استندت هذه الأداة إلى تنفيذ Reddit.
┌─────────────────────────────────┐
│ GITHUB PULL REQUEST │◀────────────────────────┐
│ (OPEN, SYNC, REOPEN) │ │
└─────────────────────────────────┘ │
│ Check run │
HTTP Post /webhook │
│ │
┌──────────────────────────────────────────────────────────────────────────────────────────┐
│ EC2 Instance (Docker) │ │ │
│ ┌───────▼────────┐ │ │
│ │ NGINX + TLS │ │ │
│ └───────┬────────┘ │ │
│ │ │ │
│ ┌─────────────────────┘ │ │
│ │ │ │
│┌─────────────┐ │ Schedules job ┌────────────────┐ ┌────────────┐ │ │
││ LAYNE │◀─┘ ─────────────────▶│ REDIS │───▶│ TRUFFLEHOG │──┐ │ │
││ SERVER │ │ (BULLMQ) │ │ └────────────┘ │ │ │
│└─────────────┘ └────────────────┘ │ ┌────────────┐ │ │ │
│ │─▶│ SEMGREP │──┤ │ │
│ │ └────────────┘ │ │ │
│ │ ┌────────────┐ │ ┌──────────┐│
│ ├─▶│ CLAUDE │──┼─▶│ REPORTER ││
│ │ └────────────┘ │ └──────────┘│
│ │ ┌────────────┐ │ │
│ ├─▶│ SPECTRE │──┤ │
│ │ └────────────┘ │ │
│ │ ┌────────────┐ │ │
│ └─▶│ DEP DOCTOR │──┘ │
│ └────────────┘ │
└──────────────────────────────────────────────────────────────────────────────────────────┘
عند فتح طلب سحب أو تحديثه - أو بعد تشغيل سير عمل أو مهمة، وفقًا للمشغّل الذي قمت بتهيئته - يرسل GitHub خطاف ويب إلى Layne. يضع الخادم مهمة فحص في قائمة الانتظار فورًا ويعيد 200 OK إلى GitHub. يستلم عاملٌ المهمة، ويستنسخ بالضبط الالتزام الذي أطلق الحدث، ويمرر الملفات المتغيرة إلى كل ماسح ضوئي تمت تهيئته (Semgrep وTrufflehog وClaude وSpectre وDep Doctor)، ويجمع النتائج التي عُثر عليها، وينشرها كتعليقات توضيحية مضمّنة في Check Run.
يتم تمرير الملفات المعدّلة فقط في طلب السحب إلى كل ماسح ضوئي. لا يتم الإبلاغ أبدًا عن النتائج في الملفات التي لم تلمسها.
تأتي Layne مع خمسة ماسحات ضوئية مدمجة. يمكنك تفعيل كلٍّ منها أو تعطيله أو تهيئته لكل مستودع في config/layne.json.
يمكنك أيضًا إضافة الماسحات الضوئية الخاصة بك. راجع توسيع Layne.
بمجرد تهيئة كل شيء بشكل صحيح، سيضيف Layne عملية تشغيل إلى طلب السحب ويشغّل أدوات الفحص المكوّنة. عند فشل الفحص، يبدو الأمر هكذا.

ستتم كتابة نتائج Layne في طلب السحب كتعليقات توضيحية مضمّنة، تشير إلى الأسطر المحددة التي عُثر فيها على المشكلات الأمنية.

يمكنك أيضًا رؤية نتائج Layne وملخصًا لها من خلال النقر على الفحص نفسه.

ويمكنك تهيئة Layne لإرسال إشعار عبر خطاف ويب إلى قناة Rocket.Chat - كما يمكنك تهيئة Slack، ومن السهل إضافة مُخطرات جديدة إذا كنت تستخدم منصة محادثة مختلفة.

شغّل موقع التوثيق محليًا:
npm run docs:dev
ثم افتح http://localhost:3000.
يغطي التوثيق الكامل النشر والتهيئة والماسحات الضوئية والمُخطرات وتعليقات طلبات السحب وإخفاء النتائج والمقاييس وبنية الأمان والمزيد.
Layne مرخّص بموجب رخصة Apache 2.0 (Apache-2.0). راجع LICENSE للنص الكامل.
حقوق النشر 2026 Rocket.Chat Technologies Corp.
| الماسح الضوئي | ما يكتشفه | ملاحظات |
|---|
| Semgrep | SAST - أخطاء برمجية، ثغرات، أنماط غير آمنة | يشغّل semgrep scan --config auto افتراضيًا؛ قابل للتهيئة بالكامل عبر extraArgs |
| Trufflehog | الأسرار ومفاتيح API وبيانات الاعتماد | يشغّل trufflehog filesystem؛ استخدم --only-verified لتقليل الضوضاء |
| Claude | النوايا الخبيثة والأبواب الخلفية والحمولات المُعمّاة وهجمات سلسلة التوريد | معطّل افتراضيًا؛ يتم الاشتراك فيه لكل مستودع؛ يتطلب ANTHROPIC_API_KEY |
| Spectre | النوايا الخبيثة عبر استدعاء LLM واحد لكل ملف | معطّل افتراضيًا؛ يتم الاشتراك فيه لكل مستودع؛ يدعم Anthropic وOpenAI وGoogle وMistral وBedrock |
| Dep Doctor | CVEs والاعتماديات المهجورة والمُهمَلة | معطّل افتراضيًا؛ يتم الاشتراك فيه لكل مستودع؛ يتطلب osv-scanner في PATH |