
أداة تعداد وهجوم خط أنابيب GitHub Actions
[!WARNING]
هذا المستودع مهمل ومؤرشف
تم استبدال Gato بـ Trajan، أداة Praetorian متعددة المنصات لاكتشاف ثغرات CI/CD وهجومها الآلي. يقوم Trajan بدمج قدرات هجوم GitHub Actions (Gato) و GitLab (Glato) CI/CD في مشروع واحد يتم صيانته بنشاط.
يرجى الترحيل إلى Trajan: https://github.com/praetorian-inc/trajan
لن يتم إجراء أي تحديثات أو إصلاحات للأخطاء أو تصحيحات أمنية إضافية لهذا المستودع.
Gato، أو مجموعة أدوات هجوم GitHub، هي أداة تعداد وهجوم تسمح لكل من فرق الدفاع الأزرق وممارسي الأمن الهجومي بتحديد واستغلال ثغرات خطوط الأنابيب (pipeline) ضمن المستودعات العامة والخاصة لمؤسسة على GitHub.
تمتلك الأداة ميزات ما بعد الاستغلال للاستفادة من رمز وصول شخصي مخترق، بالإضافة إلى ميزات تعداد لتحديد ثغرات تنفيذ خط الأنابيب المسمومة وأسرار القطع الأثرية (artifacts) لإجراءات GitHub ضد المستودعات العامة.
توصي GitHub باستخدام المُشغلات المستضافة ذاتيًا فقط للمستودعات الخاصة، إلا أن هناك آلاف المؤسسات التي تستخدم المُشغلات المستضافة ذاتيًا. غالبًا ما تكون التكوينات الافتراضية عرضة للخطر، ويستخدم Gato مزيجًا من تحليل ملفات سير العمل وتحليل سجلات التشغيل لتحديد المستودعات المعرضة للخطر على نطاق واسع.
يقدم الإصدار 1.7 من Gato ماسح أسرار القطع الأثرية لإجراءات GitHub Actions.
يقوم ماسح أسرار القطع الأثرية بإجراءات GitHub بتعداد القطع الأثرية لسير عمل إجراءات GitHub بحثًا عن الأسرار. استخدم باحثو Praetorian الماسح لتحديد ثغرات حرجة في العديد من المشاريع مفتوحة المصدر البارزة. سيتم نشر تفاصيل هذه الثغرات بمجرد اكتمال عمليات الإفصاح. كان هذا العمل مستوحى في البداية من بحث من Palo Alto Networks.
يقوم ماسح أسرار القطع الأثرية بإجراءات GitHub بالإجراءات التالية:
يجب تثبيت NoseyParker في متغير البيئة $PATH للنظام الذي يشغل ماسح أسرار القطع الأثرية.
يمكن أن تحتوي الأسرار في القطع الأثرية العامة لسير العمل على العديد من النتائج الإيجابية الخاطئة. افتراضيًا، يستبعد ماسح أسرار القطع الأثرية القواعد والنتائج المرتبطة بالنتائج الإيجابية الخاطئة الشائعة. لتضمين جميع نتائج مسح الأسرار، يمكنك استخدام العلامة --include_all_artifact_secrets.
فيما يلي مثال لأمر يقوم بتشغيل ماسح أسرار القطع الأثرية على قائمة من مؤسسات GitHub، ويعطل تعداد المُشغلات المستضافة ذاتيًا، ويضمن جميع نتائج أسرار القطع الأثرية، ويخرج إلى ملف JSON.
gato e --enum_wf_artifacts --include_all_artifact_secrets --skip_sh_runner_enum -O testorgs.txt -oJ testorgoutput.json
افتراضيًا، يفرض ماسح أسرار القطع الأثرية القيود التالية لتقليل الوقت المنفق على مستودع واحد:
تم تحسين هذه القيود بحيث يمكن لماسح أسرار القطع الأثرية مسح أفضل 200 مؤسسة على GitHub في غضون 48 ساعة. إذا كنت ترغب في تعديل هذه القيود، يمكنك تحديثها في دالة scan_wf_artifacts() في gato/enumerate/repository.py.
يدعم Gato أنظمة OS X و Linux مع Python 3.7 على الأقل.
لتثبيت الأداة، ما عليك سوى استنساخ المستودع واستخدام pip install. نوصي بتنفيذ ذلك ضمن بيئة افتراضية.
git clone https://github.com/praetorian-inc/gato
cd gato
python3 -m venv venv
source venv/bin/activate
pip install .
يتطلب Gato أيضًا تثبيت إصدار git 2.27 أو أعلى على مسار النظام (PATH). لتشغيل وحدة هجوم طلب السحب الفرعي (fork PR)، يجب أيضًا تثبيت sed على مسار النظام.
نحافظ على فرع تطويري يحتوي على ميزات Gato الأحدث التي لم تُضاف بعد إلى الفرع الرئيسي. هناك احتمالية متزايدة لمواجهة أخطاء؛ ومع ذلك، ما زلنا نشغل مجموعة اختبارات التكامل الخاصة بنا على فرع dev، لذا لا ينبغي أن تكون هناك أي أخطاء واضحة.
إذا كنت ترغب في استخدام فرع dev، فقط سحبه قبل تشغيل pip install - هذا كل شيء!
إذا واجهت أي أخطاء لحالة الاستخدام الخاصة بك، فلا تتردد في فتح مشكلة (issue)!
بعد تثبيت الأداة، يمكن تشغيلها عن طريق تنفيذ gato أو praetorian-gato.
نوصي بمشاهدة المعاملات الخاصة بالأداة الأساسية باستخدام gato -h، ومعاملات كل وحدة من وحدات الأداة عن طريق تشغيل الأوامر التالية:
gato search -hgato enum -hgato attack -hتتطلب الأداة رمز GitHub كلاسيكي أو رمز تثبيت تطبيق لتعمل. لإنشاء واحد، سجّل الدخول إلى GitHub واذهب إلى إعدادات المطورين واختر Generate New Token ثم Generate new token (classic).
بعد إنشاء هذا الرمز، قم بتعيين متغير البيئة GH_TOKEN داخل شاشتك عن طريق تشغيل export GH_TOKEN=<YOUR_CREATED_TOKEN>. بدلاً من ذلك، قم بتخزين الرمز في مدير كلمات مرور آمن وأدخله عندما يطلب منك التطبيق.
إذا كنت تقوم بإنشاء رمز تثبيت تطبيق GitHub، يجب أن يحتوي التطبيق على صلاحيات Actions:read و Contents:read على الأقل لتنفيذ وحدات التعداد.
للاستكشاف والأخطاء والتفاصيل الإضافية، مثل التثبيت في وضع المطور أو تشغيل اختبارات الوحدة، يرجى الاطلاع على الويكي.
يرجى الاطلاع على الويكي للحصول على توثيق مفصل، بالإضافة إلى اعتبارات الأمن العملياتي (OpSec) للوحدات المختلفة للأداة!
إذا كنت تعتقد أنك حددت خطأ في البرنامج، يرجى فتح مشكلة (issue) تحتوي على مخرجات الأداة، بالإضافة إلى الإجراءات التي كنت تحاول القيام بها.
إذا كنت غير متأكد مما إذا كان السلوك خطأ، استخدم قسم المناقشات بدلاً من ذلك!
المساهمات مرحب بها! يرجى مراجعة منهجية التصميم ومعايير الترميز لدينا قبل العمل على ميزة جديدة!
بالإضافة إلى ذلك، إذا كنت تقترح تغييرات كبيرة على الأداة، يرجى فتح مشكلة لبدء محادثة حول الدافع وراء التغييرات.
Gato مرخص بموجب رخصة Apache، الإصدار 2.0.
Copyright 2023 Praetorian Security, Inc
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.