
كلب لطيف يساعدك في البحث عن المشكلات الأمنية في مستودعاتك.
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 webhook إلى Layne. يقوم الخادم فورًا بإدراج مهمة فحص في قائمة الانتظار ويعيد 200 OK إلى GitHub. يلتقط عامل المهمة، ويستنسخ بالضبط الـ commit الذي أطلق الحدث، ويسلّم الملفات المتغيرة إلى كل ماسح ضوئي مُكوَّن (Semgrep، Trufflehog، Claude، Spectre، Dep Doctor)، ويجمع نتائجها، وينشر النتائج كتعليقات توضيحية مضمّنة على Check Run.
يتم تمرير الملفات المعدّلة في طلب السحب فقط إلى كل ماسح ضوئي. لا يتم الإبلاغ أبدًا عن النتائج في الملفات التي لم تلمسها.
يأتي Layne بخمسة ماسحات ضوئية مدمجة. يمكنك تمكين أو تعطيل أو تكوين كل واحد منها لكل مستودع في config/layne.json.
| الماسح الضوئي | ما يكتشفه | ملاحظات |
|---|---|---|
| Semgrep | SAST - الأخطاء والثغرات والأنماط غير الآمنة | يشغّل semgrep scan --config auto افتراضيًا؛ قابل للتكوين بالكامل عبر extraArgs |
| Trufflehog | الأسرار ومفاتيح API وبيانات الاعتماد | يشغّل trufflehog filesystem؛ استخدم --only-verified لتقليل الضوضاء |
| Claude | النوايا الخبيثة والأبواب الخلفية والحمولات المُبهمة وهجمات سلسلة التوريد | معطّل افتراضيًا؛ يُفعّل لكل مستودع؛ يتطلب ANTHROPIC_API_KEY |
| Spectre | النوايا الخبيثة من فروقات طلبات السحب المكتوبة المحدودة | معطّل افتراضيًا؛ تحليل كامل لطلب السحب عندما يكون صغيرًا، وإلا تحليل أجزاء؛ يدعم Anthropic وOpenAI وGoogle وMistral وBedrock |
| Dep Doctor | ثغرات CVE والتبعيات المهجورة والمهملة | معطّل افتراضيًا؛ يُفعّل لكل مستودع؛ يتطلب osv-scanner في PATH |
يمكنك أيضًا إضافة ماسحات ضوئية خاصة بك. راجع توسيع Layne.
بمجرد تكوين كل شيء بشكل صحيح، سيضيف Layne تشغيلًا إلى طلب السحب ويشغّل أدوات الفحص المُكوَّنة. عندما يفشل الفحص، يبدو الأمر هكذا.

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

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

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

شغّل موقع التوثيق محليًا:
npm run docs:dev
ثم افتح http://localhost:3000.
يغطي التوثيق الكامل النشر والتكوين والماسحات الضوئية والمُخطرين وتعليقات طلبات السحب وقمع النتائج والمقاييس وبنية الأمان والمزيد.
Layne مرخّص بموجب Apache License 2.0 (Apache-2.0). راجع LICENSE للنص الكامل.
حقوق النشر 2026 Rocket.Chat Technologies Corp.