Secret Gate
دروازهی انتشاری که از رازهای واقعی شما آگاه است: تا وقتی چیزی پیدا نکند، چیزی منتشر نمیشود.
- Linux or macOS
- Python 3.9+
- Git hooks
- CI

کارکرد
سکرتگیت پیش از آنکه چیزی از دست شما خارج شود، به یک پرسش پاسخ میدهد؛ چه یک فایل فشرده نسخه انتشار باشد، چه نسخه مشتری، چه یک پوشاوپنسورس یا کامیت بعدی: آیا این فایل حاوی راز من است؟ این ابزار میداند رازهای شما کداماند، زیرا فایلهایی که در آنها ذخیره شدهاند را میخواند و هیچگاه آنها را نشان نمیدهد: هر یافته نام فایل، شماره خط و منبع مقدار را مشخص میکند.
- مقادیر دقیق شما. هر مقدار در فایلهای env، پیکربندیهای JSON و YAML، فایلهای
.netrcو کلیدها، هم به همان شکل نوشتهشده، هم بهصورت base64 و هم بهصورت URL-encoded جستجو میشود. یک رمز عبور که شبیه یک کلمه معمولی به نظر برسد، یا یک توکن داخلی بدون پیشوند شناختهشده، مانند سایر موارد شناسایی میشود. - رازهایی از ماشینهایی که روی آنها اجرا نمیشود. روی لپتاپ خود اثر انگشتها را بسازید؛ سرور بیلد آن مقادیر را بدون آنکه هرگز آنها را در اختیار داشته باشد، پیدا میکند.
- ماشینهای دیگر با رازهای خودشان مقایسه میکنند. فایلها از طریق SSH به هر ماشین فرستاده میشوند، در همانجا اسکن شده و سپس حذف میگردند. رازها هرگز جابهجا نمیشوند، و ماشینی که نتواند پاسخ دهد، انتشار را مسدود میکند.
- الگوها، نامها و نویزها نیز بررسی میشوند. 25 قالب توکن، نامها، میزبانها، دامنهها و شناسههای حساب شما، آدرسهای IP خصوصی، آدرسهای ایمیل شخصی، شماره تلفنها، شمارههای IBAN، مسیرهای پوشه خانگی و رشتههای تصادفی در کنار نامهای شبیه به راز.
- هر بار خودش را اثبات میکند. هر اسکن با کاشت قناریهایی از هر نوع آغاز میشود؛ اگر هر بررسی قناری خود را از دست بدهد، اسکن اجرا نمیشود.
- در همان محیطی که کار میکنید. پوشهها، آرشیوهای zip و tar، هوک pre-commit یا pre-push در git، کدهای خروجی برای CI، و یک گزارش JSON.
آزمودهشده بر روی آنچه ارائه میدهیم
- هر کیتی که میفروشیم: 8 آرشیو منتشرشده در برابر 133 مقدار راز روی ماشین بیلد ما و 16,259 اثر انگشت از لپتاپ ما اسکن شدند. همه با موفقیت گذشتند، در مجموع در 5.4 ثانیه.
- یک راز واقعی که در یک نسخه انتشار کاشته شده بود هم به شکل ساده و هم به شکل base64-encoded شناسایی شد و هر بار نام فایل مبدأ آن ذکر گردید. مقدار راز هیچجای خروجی یا گزارش ظاهر نشد.
- یک اسکن از راه دور روی SSH یک نسخه انتشار را در برابر 499 مقدار راز ماشین دوم در 1.4 ثانیه بررسی کرد و یک توکن کاشتهشده در کپیای که فقط روی همان ماشین وجود داشت را شناسایی کرد.
محتویات
دروازه
چهار بررسی، خودآزمایی، اسکن آرشیو و فایلهای stageشده در git، یک گزارش خوانا و یک گزارش JSON.
اثر انگشتها
اثر انگشتهای رازهای یک ماشین، برای اسکن روی ماشینی دیگر، بدون انتقال مقادیر.
اسکنهای از راه دور
همان فایلها روی تمام دستگاههایی که رازها را نگه میدارند بررسی میشوند، همراه با قوانین پروژه شما.
راهاندازی و CI
یک ابزار برای یافتن فایلهای راز شما، هوکهای git و یک workflow برای بایگانیهای انتشار در GitHub Actions.
پیشنیازها
- Linux یا macOS با Python 3.9 یا جدیدتر؛ بدون نیاز به نصب چیزی از pip.
- Git برای هوکها، SSH برای اسکنهای از راه دور.
خوب است بدانید
- فایلها را همانطور که الان هستند میخواند. رازی که از قبل در تاریخچه git شما وجود دارد، همانجا میماند: آن را تغییر دهید.
- بایگانیهای داخل یک پوشه اسکنشده باز نمیشوند؛ هر بایگانی را جداگانه اسکن کنید.
- فایلهای اثر انگشت را به همان اندازه رازها خصوصی نگه دارید: آنها 4 کاراکتر اول از هر مقدار 16 کاراکتری یا بیشتر را نگه میدارند.
پرسشها
این چه تفاوتی با gitleaks یا TruffleHog دارد؟
آنها به دنبال چیزی میگردند که رازها معمولاً شبیه آن هستند و در این کار خوباند. Secret Gate همچنین میداند رازهای شما واقعاً چه هستند: فایلهای راز خودتان را میخواند و به دنبال همان مقادیر دقیق میگردد، بنابراین یک رمز عبور پایگاه داده یا یک توکن داخلی بدون شکل قابل تشخیص نیز شناسایی میشود. این ابزار برای یک لحظه ساخته شده است، قبل از اینکه چیزی ارسال شود، و در صورت خطا بسته میماند (fail closed).
آیا رازهای من را به جایی ارسال میکند؟
خیر. مقادیر برای اسکن از فایلهای شما در حافظه خوانده میشوند و هرگز چاپ، نوشته یا ارسال نمیشوند؛ یک فایل اثر انگشت، اگر یکی بسازید، شامل یک هش و 4 کاراکتر اول از هر مقدار است. اسکنهای از راه دور فایلهایی که میخواهید ارسال کنید را به دستگاه خودتان میفرستند؛ رازهای آن دستگاه روی همان دستگاه میمانند.
درباره هشدارهای کاذب چه؟
یک یافته به معنای «به این نگاه کن» است. اگر مشکلی ندارد، برای آن نوع یافته در پیکربندی پروژه یک قانون مجاز (allow rule) محدود اضافه کنید، برای مثال آدرس پشتیبانی خودتان. هیچ کلیدی برای خاموش کردن یک بررسی وجود ندارد.
آیا میتواند تاریخچه git من را اسکن کند؟
خیر. آن چیزی را که میخواهید ارسال کنید بررسی میکند: یک پوشه، یک بایگانی، یا کامیت بعدی. برای رازی که از قبل در تاریخچه وجود دارد، راز را تغییر دهید.
بهروزرسانی شد: