
اكتشاف الأسرار المكشوفة والبيانات الشخصية في GitLab
GitLab Watchman هو تطبيق يستخدم واجهة برمجة تطبيقات GitLab للكشف عن الأسرار والبيانات الشخصية المكشوفة. كما يقوم بإحصاء المعلومات المفيدة من مثيل GitLab.
يبحث في GitLab عن المشاريع المشتركة داخليًا وينظر إلى:
للبينات التالية:
يمكنك تشغيل GitLab Watchman للبحث عن النتائج التي تمتد إلى الوراء بقدر:
هذا يعني أنه بعد الفحص العميق الأول، يمكنك جدولة GitLab Watchman للتشغيل المنتظم وإرجاع النتائج فقط من الإطار الزمني المختار.
يمكن لـ GitLab Watchman إحصاء المعلومات المفيدة المحتملة من مثيل GitLab:
يستخدم GitLab Watchman توقيعات YAML مخصصة للكشف عن التطابقات في GitLab. يتم سحب هذه التوقيعات من المستودع المركزي Watchman Signatures. يقوم Slack Watchman بتحديث قاعدة توقيعه تلقائيًا أثناء التشغيل لضمان استخدام أحدث التوقيعات لكشف الأسرار.
يمكنك تحديد التوقيعات التي تريد تعطيلها عند تشغيل GitLab Watchman عن طريق إضافة معرفاتها إلى قسم disabled_signatures في ملف watchman.conf. على سبيل المثال:
gitlab_watchman:
disabled_signatures:
- tokens_generic_bearer_tokens
- tokens_generic_access_tokens
يمكنك العثور على معرف التوقيع في ملفات YAML الفردية في مستودع Watchman Signatures.
يوفر GitLab Watchman خيارات التسجيل التالية:
يستخدم GitLab Watchman افتراضيًا تسجيل stdout الصديق للطرفية في حالة عدم تقديم خيار. وهذا مصمم ليكون أسهل للقراءة البشرية.
كما يتوفر تسجيل JSON، وهو مثالي للإدخال إلى SIEM أو منصات تحليل السجلات الأخرى.
يمكن إعادة توجيه التسجيل بتنسيق JSON بسهولة إلى ملف كما يلي:
gitlab-watchman --timeframe a --all --output json >> gitlab_watchman_log.json
يستخدم GitLab Watchman واجهة برمجة التطبيقات v4، ويعمل مع إصدارات GitLab Enterprise Edition:
13.0 وما فوق - نعم
GitLab.com - نعم
12.0 - 12.10 - ربما، غير مختبر ولكن إذا كان يستخدم v4 من واجهة برمجة التطبيقات فقد يعمل
للبحث في النطاقات:
يجب أن يكون مثيل GitLab قد تم تكوين Elasticsearch فيه، وأن يكون يعمل بإصدار Enterprise Edition مع ترخيص GitLab Starter أو Bronze كحد أدنى.
لتشغيل GitLab Watchman، ستحتاج إلى رمز وصول شخصي لـ GitLab.
يمكنك إنشاء رمز وصول شخصي في واجهة GitLab عبر Settings -> Access Tokens -> Add a personal access token
يحتاج الرمز إلى صلاحية للنطاقات التالية:
api
ملاحظة: تعمل رموز الوصول الشخصية نيابة عن المستخدم الذي ينشئها، لذا أقترح إنشاء رمز باستخدام حساب خدمة، وإلا سيكون للتطبيق إمكانية الوصول إلى مستودعاتك الخاصة.
تحتاج أيضًا إلى تقديم رابط مثيل GitLab الخاص بك.
سيحصل GitLab Watchman على رمز GitLab والرابط من متغيرات البيئة GITLAB_WATCHMAN_TOKEN و GITLAB_WATCHMAN_URL.
يمكن تمرير خيارات التكوين في ملف يسمى watchman.conf والذي يجب تخزينه في دليل المستخدم الرئيسي. يجب أن يتبع الملف تنسيق YAML، ويبدو كما يلي:
gitlab_watchman:
disabled_signatures:
- tokens_generic_bearer_tokens
- tokens_generic_access_tokens
سيبحث GitLab Watchman عن هذا الملف أثناء التشغيل، ويستخدم خيارات التكوين منه.
يمكنك تثبيت أحدث إصدار ثابت عبر pip:
python3 -m pip install gitlab-watchman
أو البناء من المصدر بنفسك. قم بتنزيل ملفات المصدر للإصدار، ثم من المستودع العلوي قم بتشغيل:
python3 -m build
python3 -m pip install --force-reinstall dist/*.whl
يتوفر GitLab Watchman أيضًا من Docker hub كصورة Docker:
docker pull papermountain/gitlab-watchman:latest
يمكنك بعد ذلك تشغيل GitLab Watchman في حاوية، مع التأكد من تمرير متغيرات البيئة المطلوبة:
// help
docker run --rm papermountain/gitlab-watchman -h
// scan all
docker run --rm -e GITLAB_WATCHMAN_TOKEN=abc123 -e GITLAB_WATCHMAN_URL=https://example.gitlab.com papermountain/gitlab-watchman --timeframe a --all
docker run --rm --env-file .env papermountain/gitlab-watchman --timeframe a --all
سيتم تثبيت GitLab Watchman كأمر عالمي، استخدم كما يلي:
usage: gitlab-watchman [-h] --timeframe {d,w,m,a} [--output {json,stdout}] [--version] [--all] [--blobs] [--commits] [--wiki-blobs] [--issues]
[--merge-requests] [--milestones] [--notes] [--snippets] [--enumerate] [--debug] [--verbose]
Finding exposed secrets and personal data in GitLab
options:
-h, --help show this help message and exit
--output {json,stdout}, -o {json,stdout}
Where to send results
--version, -v show program's version number and exit
--all, -a Find everything
--blobs, -b Search code blobs
--commits, -c Search commits
--wiki-blobs, -w Search wiki blobs
--issues, -i Search issues
--merge-requests, -mr
Search merge requests
--milestones, -m Search milestones
--notes, -n Search notes
--snippets, -s Search snippets
--enumerate, -e Enumerate this GitLab instance for users, groups, projects.Output will be saved to CSV files
--debug, -d Turn on debug level logging
--verbose, -V Turn on more verbose output for JSON logging. This includes more fields, but is larger
required arguments:
--timeframe {d,w,m,a}
How far back to search: d = 24 hours w = 7 days, m = 30 days, a = all time
قد تكون مهتمًا بالتطبيقات الأخرى من عائلة Watchman:
تم إصدار الكود المصدري لهذا المشروع بموجب الرخصة العامة العامة GNU. هذا المشروع ليس مرتبطًا بـ GitLab.