Secret Gate
بوابة إصدار تعرف أسرار فعلية: لا يُنشر شيء حتى لا يجد شيئًا.
- Linux or macOS
- Python 3.9+
- Git hooks
- CI

ماذا تفعل
يجيب Secret Gate عن سؤال واحد قبل أن يخرج أي شيء من بين يديك، سواء كان ملف ضغط للإصدار، أو نسخة للعميل، أو دفعًا إلى مصدر مفتوح، أو الالتزام التالي: هل يحتوي هذا على سرٍّ من أسراري؟ إنه يعرف أسرارَك، لأنه يقرأ الملفات التي تعيش فيها، ولا يُظهر أيًّا منها أبدًا: تُسمّي النتيجة الملف، والسطر، ومصدر القيمة.
- قيمك الحرفية. كل قيمة في ملفات env، وإعدادات JSON وYAML، وملفات
.netrcوالمفاتيح، تُبحث كما هي مكتوبة، وبنظام base64، وبنظام ترميز URL. كلمة المرور التي تبدو ككلمة عادية، أو الرمز الداخلي الذي لا يحمل بادئة معروفة، يُلتقط مثل أي شيء آخر. - أسرار من أجهزة لا يعمل عليها. اصنع بصمات على حاسوبك المحمول؛ يجد خادم البناء تلك القيم دون أن يحملها أبدًا.
- أجهزة أخرى تفحص مقابل أسرارها الخاصة. تنتقل الملفات إلى كل جهاز عبر SSH، وتُفحص هناك ثم تُحذف. لا تنتقل الأسرار أبدًا، والجهاز الذي لا يستطيع الإجابة يحجب الإصدار.
- الأشكال والأسماء والضوضاء أيضًا. 25 صيغة للرموز، وأسماءك، ومضيفيك، ونطاقاتك، ومعرفات حساباتك، وعناوين IP الخاصة، وعناوين البريد الشخصي، وأرقام الهاتف، وأرقام IBAN، ومسارات مجلدات المنزل، والسلاسل العشوائية بجانب الأسماء المشابهة للأسرار.
- يثبت نفسه في كل مرة. يبدأ كل فحص بزراعة كناري من كل نوع؛ إذا فات أي فحص كناري الخاص به، فلا يُجرى الفحص.
- حيث تعمل بالفعل. المجلدات، وملفات الضغط zip وtar، وخطاف git قبل الالتزام أو قبل الدفع، ورموز الخروج لـ CI، وتقرير JSON.
مُختبَر على ما نطرحه
- كل حزمة نبيعها: أرشيفات الإصدارات الـ8 مفحوصة مقابل 133 قيمة سرية على جهاز البناء لدينا و16,259 بصمة من حاسوبنا المحمول. جميعها نجحت، خلال 5.4 ثانية إجمالًا.
- سر حقيقي مزروع في نسخة الإصدار لُقط صريحًا وبنظام base64، وسُمّي في كل مرة بالملف الذي جاء منه. لم تظهر القيمة في أي مكان في المخرجات أو التقرير.
- فحص عن بُعد عبر SSH تحقق من إصدار مقابل 499 قيمة سرية على جهاز ثانٍ في 1.4 ثانية، والتقط رمزًا مزروعًا في نسخة كانت موجودة على ذلك الجهاز فقط.
ما الذي تحتويه
البوابة
الفحوصات الأربعة، والاختبار الذاتي، وفحص الأرشيف وملفات git المرحّلة، وتقرير مقروء وآخر بصيغة JSON.
البصمات
بصمات أسرار جهاز واحد، لفحص على جهاز آخر، دون القيم.
الفحوصات عن بُعد
فحص الملفات نفسها على كل جهاز يحتوي على أسرار، مع إرسال قواعد مشروعك معه.
الإعداد و CI
أداة للبحث عن ملفات الأسرار، وخطافات git، وسير عمل GitHub Actions لأرشيفات الإصدارات.
المتطلبات
- Linux أو macOS مع Python 3.9 أو أحدث؛ لا حاجة لتثبيت أي شيء من pip.
- Git للخطافات، وSSH للفحوصات عن بُعد.
معلومات مفيدة
- تقرأ الملفات كما هي الآن. السر الموجود بالفعل في سجل git يبقى هناك: قم بتدويره.
- الأرشيفات داخل المجلد المفحوص لا تُفتح؛ افحص كل أرشيف على حدة.
- احفظ ملفات البصمات بخصوصية الأسرار نفسها: فهي تحتوي على أول 4 أحرف من كل قيمة من 16 حرفًا أو أكثر.
من ملاحظاتنا الميدانية
الخلل في ماسح الأسرار السرية الذي لم تستطع طيور الكناري اكتشافه
تزرع بوابة الإصدار لدينا طيور الكناري قبل كل عملية مسح، وكانت تنجح دائمًا. كان الخلل في خطوة أسبق: سرّ محاط بعلامات اقتباس يتبعه تعليق كان يُقرأ مع علامات الاقتباس. كيف اكتشفناه، ولماذا تفوّت طيور الكناري هذا النوع من الأخطاء، وما هي الاختبارات التي أضفناها الآن.
كود الشحن من أسطول يعمل دون تسريب أسراره
كل حزمة نبيعها تخضع لفحص الأسرار على ثلاث أجهزة قبل ضغطها. ما الذي نبحث عنه، والإنذارات الكاذبة التي علّمتنا الكثير.
الأسئلة
ما الفرق بينه وبين gitleaks أو TruffleHog؟
تبحث تلك الأدوات عن الشكل المعتاد للأسرار، وهي جيدة في ذلك. تعرف Secret Gate أيضًا ما هي أسرار فعلًا: تقرأ ملفات أسرار الخاصة بك وتبحث عن تلك القيم بالضبط، لذا يتم التقاط كلمة مرور قاعدة البيانات أو الرمز الداخلي الذي لا شكل مميز له أيضًا. وهي مصممة للحظة واحدة، قبل إطلاق شيء ما، وتفشل بشكل مغلق.
هل يرسل أسرار إلى أي مكان؟
لا. تُقرأ القيم من ملفات إلى الذاكرة للفحص ولا تُطبع أو تُكتب أو تُرسل أبدًا؛ ملف البصمة، إذا أنشأت واحدًا، يحتوي على تجزئة وأول 4 أحرف من كل قيمة. ترسل الفحوصات عن بُعد الملفات التي على وشك إطلاقها إلى جهازك الخاص؛ وتبقى أسرار ذلك الجهاز عليه.
ماذا عن الإنذارات الكاذبة؟
يعني الاكتشاف "انظر إلى هذا". إذا كان الأمر سليمًا، أضف قاعدة سماح ضيقة لهذا النوع من الاكتشافات في إعدادات المشروع، على سبيل المثال عنوان الدعم الخاص بك. لا يوجد مفتاح لإيقاف فحص ما.
هل يمكنه فحص سجل git الخاص بي؟
لا. يفحص ما على وشك إطلاقه: مجلد، أو أرشيف، أو الالتزام التالي. للسر الموجود بالفعل في السجل، قم بتدوير السر.
محدّث: