
آه shhgit! ابحث عن الأسرار في كودك. كشف الأسرار لمستودعات GitHub وGitLab وBitbucket الخاصة بك.
تسريب الأسرار عن طريق الخطأ — أسماء المستخدمين وكلمات المرور، رموز API، أو المفاتيح الخاصة — في مستودع كود عام هو كابوس للمطورين وفرق الأمان. يقوم المحتالون بمسح مستودعات الكود العامة باستمرار بحثًا عن هذه الأسرار للحصول على موطئ قدم في الأنظمة. الكود أكثر اتصالاً من أي وقت مضى، لذا غالبًا ما توفر هذه الأسرار الوصول إلى بيانات خاصة وحساسة — البنى التحتية السحابية، خوادم قواعد البيانات، بوابات الدفع، وأنظمة تخزين الملفات على سبيل المثال لا الحصر.
يمكن لـ shhgit مسح مستودعات الكود الخاصة بك باستمرار للعثور على هذه الأسرار وتنبيهك بها.
لديك خياران. أوصي بالخيار الأول لأنه سيمنحك إمكانية الوصول إلى واجهة الويب المباشرة لـ shhgit. استخدم الخيار الثاني إذا كنت تريد فقط واجهة سطر الأوامر.
git clone https://github.com/eth0izzle/shhgit.gitdocker-compose buildconfig.yaml الخاص بك (أي إضافة رموز GitHub الخاصة بك)docker-compose upملاحظة: هذه الطريقة لا تتضمن واجهة الويب لـ shhgit
go get github.com/eth0izzle/shhgit سيقوم بتنزيل وبناء shhgit تلقائيًا. أو يمكنك استنساخ هذا المستودع وتشغيل go build -v -i.config.yaml الخاص بك وانظر الاستخدام أدناه.يمكن أن يعمل shhgit بطريقتين: استهلاك واجهات برمجة التطبيقات العامة لـ GitHub وGist وGitLab وBitBucket أو معالجة الملفات في دليل محلي.
افتراضيًا، سيعمل shhgit في 'الوضع العام' السابق. بالنسبة لـ GitHub وGist، ستحتاج إلى الحصول على رمز وصول وتقديمه (انظر هذا الدليل؛ لا يتطلب أي نطاقات أو أذونات. ثم ضعه تحت github_access_tokens في config.yaml). لا تتطلب GitLab وBitBucket أي رموز API.
يمكنك أيضًا التخلي عن التوقيعات واستخدام shhgit مع استعلام بحث مخصص خاص بك، على سبيل المثال للعثور على جميع مفاتيح AWS يمكنك استخدام shhgit --search-query AWS_ACCESS_KEY_ID=AKIA. وللتشغيل في الوضع المحلي (وربما التكامل مع خطوط CI الخاصة بك) يمكنك تمرير العلم --local (انظر الاستخدام أدناه).
--clone-repository-timeout
الحد الأقصى للوقت الذي يجب أن يستغرقه استنساخ مستودع بالثواني (الافتراضي 10)
--config-path
يبحث عن config.yaml من الدليل المحدد. إذا لم يتم تعيينه، يحاول العثور عليه من دليل shhgit الثنائي ومن الدليل الحالي
--csv-path
حدد مسارًا إذا كنت تريد كتابة الأسرار التي تم العثور عليها إلى CSV. اتركه فارغًا لتعطيل
--debug
طباعة معلومات التصحيح
--entropy-threshold
يجد سلاسل عالية الإنتروبيا في الملفات. عتبة أعلى = أسرار أكثر سرية، عتبة أقل = نتائج إيجابية خاطئة أكثر. اضبط على 0 لتعطيل فحوصات الإنتروبيا (الافتراضي 5.0)
--local
تحديد دليل محلي (المسار المطلق) لفحصه. يقوم بفحص الدليل المحدد فقط بشكل متكرر. لا حاجة لرموز GitHub للتشغيل المحلي.
--maximum-file-size
الحد الأقصى لحجم الملف للمعالجة بالكيلوبايت (الافتراضي 512)
--maximum-repository-size
الحد الأقصى لحجم المستودع للتحميل والمعالجة بالكيلوبايت (الافتراضي 5120)
--minimum-stars
استنساخ المستودعات التي تحتوي على هذا العدد من النجوم أو أكثر فقط. اضبط على 0 لتجاهل عدد النجوم (الافتراضي 0)
--path-checks
اضبط على false لتعطيل فحص توقيع اسم الملف/المسار، أي فقط مطابقة أنماط regex (الافتراضي true)
--process-gists
مراقبة ومعالجة Gists في الوقت الفعلي. اضبط على false لتعطيل (الافتراضي true)
--search-query
تحديد سلسلة بحث لتجاهل التوقيعات والتصفية على الملفات التي تحتوي على هذه السلسلة (متوافقة مع regex)
--silent
كتم جميع المخرجات باستثناء الأخطاء
--temp-directory
الدليل لتخزين المستودعات/المطابقات (الافتراضي "%temp%\shhgit")
--threads
عدد الخيوط المتزامنة للاستخدام (الافتراضي عدد وحدات المعالجة المنطقية)
ملف config.yaml يحتوي على 7 عناصر. يتم توفير إعداد افتراضي.
github_access_tokens: # provide at least one token
- 'token one'
- 'token two'
webhook: '' # URL to a POST webhook.
webhook_payload: '' # Payload to POST to the webhook URL
blacklisted_strings: [] # list of strings to ignore
blacklisted_extensions: [] # list of extensions to ignore
blacklisted_paths: [] # list of paths to ignore
blacklisted_entropy_extensions: [] # additional extensions to ignore for entropy checks
signatures: # list of signatures to check
- part: '' # either filename, extension, path or contents
match: '' # simple text comparison (if no regex element)
regex: '' # regex pattern (if no match element)
name: '' # name of the signature
يأتي shhgit مع 150 توقيعًا. يمكنك إزالة أو إضافة المزيد عن طريق تحرير ملف config.yaml.