رفتن به محتوا
IROSG.
اپلیکیشن‌های امنیتی

Gitleaks؛ کشف اسرار در کد و رسیدگی به نشت اعتبارنامه

راهنمای کاربرد Gitleaks برای بررسی تاریخچه و فایل، طراحی قواعد، مدیریت خط مبنا و مهار اعتبارنامه افشاشده با توجه به وضعیت نگهداری پروژه.

نشان رسمی Gitleaks
سازندهGitleaks maintainers
حوزهکشف اطلاعات محرمانه در کد
پلتفرم‌هاLinux · macOS · Windows
مجوز / مدلMIT
صفحهٔ رسمی ↗دانلود رسمی ↓

Gitleaks چه مسئله‌ای را حل می‌کند؟

Gitleaks ابزار خط فرمان برای پیدا کردن اطلاعات محرمانه در کد و فایل است. مسئله اصلی آن خطایی آشناست: توسعه‌دهنده برای آزمایش اتصال، یک توکن واقعی را داخل تنظیمات می‌گذارد و همان فایل وارد مخزن می‌شود. حذف خط در تغییر بعدی کافی نیست، چون تاریخچه همچنان مقدار قبلی را نگه می‌دارد. این برنامه می‌تواند تاریخچه گیت، محتوای پوشه و ورودی استاندارد را بررسی کند. خروجی آن سرنخ شروع رسیدگی است؛ تصمیم درباره لغو کلید، بررسی دسترسی‌های انجام‌شده و اطلاع دادن به مالک سرویس هنوز به فرایند پاسخ سازمان نیاز دارد.

در مخزن رسمی Gitleaks وضعیت نگهداری پروژه نیز باید دیده شود. نگهدارنده اعلام کرده که مجموعه قابلیت‌ها کامل شده، قابلیت تازه ادغام نمی‌کند و انتشارهای آینده به اصلاحات امنیتی اختصاص خواهند داشت؛ تمرکز توسعه به Betterleaks منتقل شده است. بنابراین انتخاب Gitleaks برای تیمی که قواعد موجود و رفتار پایدار می‌خواهد قابل بررسی است، اما نباید بر پایه انتظار افزودن مستمر آشکارسازهای تازه تصمیم گرفت. این نکته به معنای ناامن بودن نصب موجود نیست؛ موضوع، تناسب مسیر نگهداری ابزار با نیاز آینده تیم است.

سه ورودی و سه نوع پوشش

بررسی تاریخچه با بررسی پوشه یکسان نیست. در حالت تاریخچه، تغییرات ثبت‌شده دیده می‌شوند و می‌توان نشت مربوط به یک ثبت قدیمی را پیدا کرد. در حالت پوشه، فایل‌های حاضر در مسیر بررسی می‌شوند؛ این روش برای بسته تحویلی، خروجی ساخت یا نسخه استخراج‌شده از یک آرشیو مفید است. ورودی استاندارد نیز امکان اتصال ابزار به یک جریان متنی را فراهم می‌کند. پیش از انتخاب دستور، مشخص کنید سؤال شما درباره چه مجموعه‌ای است: آنچه امروز منتشر می‌شود، آنچه زمانی ثبت شده، یا داده‌ای که برنامه دیگری تولید می‌کند.

یک اشتباه رایج در خط ساخت، دریافت کم‌عمق مخزن و سپس تفسیر خروجی خالی به عنوان پاک بودن تمام تاریخچه است. اگر محیط اجرا فقط چند ثبت اخیر را دارد، ابزار نمی‌تواند ثبت‌هایی را ببیند که دریافت نشده‌اند. در گزارش اجرای اولیه باید دامنه شاخه‌ها، عمق دریافت و محدوده زمانی نوشته شود. برای اجرای روزمره می‌توان محدوده تغییرات را کوچک‌تر کرد، ولی بررسی اولیه سابقه و بررسی تغییر تازه دو کار مکمل هستند. معیار موفقیت هر کدام باید جداگانه تعریف شود تا سرعت به قیمت تصور نادرست از پوشش تمام نشود.

موتور تشخیص و معنای یافته

قواعد Gitleaks عمدتاً نشانه‌های متنی، عبارت‌های منظم و در موارد لازم ویژگی‌هایی مانند آنتروپی را کنار هم می‌گذارند. یک رشته طولانی تصادفی ممکن است کلید باشد و ممکن است شناسه آزمایش. برعکس، یک گذرواژه کوتاه و قابل حدس ممکن است از نظر ظاهری هیچ ویژگی متمایزی نداشته باشد. به همین دلیل خروجی منفی تضمین نمی‌کند که هیچ راز عملیاتی در مخزن وجود ندارد. ابزار برای یافتن الگوهای قابل شناسایی ارزشمند است و باید همراه بازبینی تنظیمات، مدیریت متمرکز اسرار و آموزش توسعه‌دهندگان استفاده شود.

برای هر یافته، مسیر فایل، محل، قاعده تشخیص و زمینه ثبت را نگه دارید. دانستن اینکه یک توکن در فایل نمونه دیده شده برای اولویت‌بندی کافی نیست؛ فایل نمونه ممکن است اشتباهاً حاوی مقدار واقعی باشد. نخست مالک سامانه را پیدا کنید و وضعیت اعتبار را از مسیر مجاز همان سازمان بررسی کنید. مقدار کامل توکن نباید در تیکت عمومی، کانال گروهی یا خروجی قابل دانلود خط ساخت کپی شود. یک گزارش محرمانه با شناسه پیگیری و بخشی پوشانده از مقدار معمولاً برای هماهنگی اولیه مناسب‌تر است.

نصب و اجرای آزمایشگاهی

برای نصب، به صفحه انتشار رسمی مراجعه کنید و نسخه انتخاب‌شده را در تنظیمات ابزار تیم ثابت نگه دارید. اجرای یک نسخه متفاوت روی لپ‌تاپ و سامانه ساخت ممکن است باعث اختلاف قواعد یا قالب گزارش شود. در آزمایش اولیه مخزنی کوچک با داده ساختگی بسازید: یک نمونه که باید تشخیص داده شود، یک رشته مشابه بی‌خطر و یک فایل خارج از دامنه مورد نظر. این آزمایش کوتاه نشان می‌دهد مسیر ورودی، تنظیمات و نحوه خواندن کد خروج واقعاً مطابق انتظار کار می‌کنند.

راهنمای دستورهای نسخه نصب‌شده را مرجع نحوه اجرا قرار دهید. مستندات کنونی میان دستورهای git، dir و stdin تفکیک می‌کنند؛ آموزش‌های قدیمی ممکن است از نام‌ها و پرچم‌های دیگر استفاده کرده باشند. بهتر است تیم یک دستور قابل تکرار همراه توضیح هدف آن ثبت کند. همچنین خروجی متنی مناسب انسان و گزارش ساختاریافته مناسب اتوماسیون را از هم جدا نگه دارد. تنظیم پوشاندن اطلاعات حساس در گزارش اهمیت عملی دارد؛ سامانه‌ای که نشت را پیدا می‌کند نباید همان راز را در مخزن گزارش‌ها با دسترسی گسترده‌تر دوباره منتشر کند.

طراحی کنترل پیش از ثبت و پیش از ادغام

قلاب محلی پیش از ثبت، بازخورد سریع می‌دهد و از ورود اتفاقی بعضی اسرار جلوگیری می‌کند. با این حال وجود آن روی دستگاه همه مشارکت‌کنندگان تضمین‌شده نیست و امکان دور زدن یا خرابی محلی وجود دارد. کنترل سمت سامانه ساخت باید مستقل اجرا شود. سیاست پیشنهادی این است که قلاب محلی نقش راهنمای فوری داشته باشد و بررسی درخواست ادغام نقش کنترل قابل مشاهده برای تیم. اگر هر دو از یک فایل قواعد و نسخه مشخص استفاده کنند، اختلاف رفتار کمتر می‌شود و توسعه‌دهنده زودتر علت توقف را می‌فهمد.

خط ساخت باید میان «یافته امنیتی» و «اجرا نشدن موفق ابزار» تفاوت بگذارد. شکست دریافت مخزن، نبود مجوز خواندن فایل یا تنظیمات نامعتبر نباید به نتیجه پاک تبدیل شود. در آغاز راه‌اندازی، یک خطای عمدی در تنظیمات آزمایش کنید و ببینید خط ساخت چه وضعیتی نشان می‌دهد. سپس یک نمونه ساختگی قابل تشخیص وارد کنید و مطمئن شوید همان مرحله متوقف می‌شود. این دو آزمون کوچک از بسیاری از نصب‌های ظاهراً فعال اما بی‌اثر جلوگیری می‌کنند. گزارش اجرای موفق نیز باید زمان، نسخه و دامنه بررسی را داشته باشد.

خط مبنا و بدهی قدیمی

مخزن قدیمی ممکن است صدها یافته داشته باشد و مسدود کردن همه تغییرها از روز نخست عملی نباشد. خط مبنا می‌تواند یافته‌های شناخته‌شده را از تغییرهای تازه جدا کند، اما فقط یک وسیله مدیریت کار است. قرار گرفتن یک کلید فعال در خط مبنا آن را کم‌خطر نمی‌کند. پیش از پذیرش خط مبنا، یافته‌های محتمل و پراثر را بررسی کنید و برای هر گروه مالک تعیین کنید. هدف باید جلوگیری از اضافه شدن بدهی تازه همراه کاهش تدریجی بدهی قبلی باشد، نه تولید گزارشی سبز با پنهان کردن تمام سابقه.

فایل خط مبنا نیز یک دارایی حساس است، چون ممکن است مسیرها، هویت‌ها و جزئیات ثبت را نگه دارد. محل نگهداری و مجوز خواندن آن را متناسب با محتوا انتخاب کنید. هنگام تغییر قالب گزارش یا نسخه ابزار، بازسازی بدون بازبینی خط مبنا خطرناک است؛ ممکن است یافته‌های تازه ناخواسته به مجموعه پذیرفته‌شده منتقل شوند. بهتر است تغییر خط مبنا در یک درخواست مستقل، با فهرست دلایل و تأیید مالک امنیت انجام شود. تعداد موارد بسته‌شده و مدت باز ماندن آنها شاخص‌های مفیدتری از اندازه فایل خط مبنا هستند.

قواعد اختصاصی و استثناهای محدود

اگر سازمان قالب داخلی مشخصی برای توکن دارد، قاعده اختصاصی می‌تواند پوشش واقعی را بهتر کند. نمونه‌های ساختگی مثبت و منفی را کنار قاعده نگه دارید: مقدار معتبر از نظر شکل، رشته ناقص، متن مستندات و شناسه‌ای که شباهت ظاهری دارد. قاعده‌ای که هر رشته طولانی را مشکوک بداند ممکن است تعداد هشدارها را زیاد کند و اعتماد تیم را از بین ببرد. قاعده‌ای که بیش از حد به یک نام متغیر وابسته باشد نیز با تغییر نام به‌سادگی پوشش خود را از دست می‌دهد.

استثنا باید کوچک، قابل توضیح و قابل بازبینی باشد. مستثنا کردن یک مقدار ساختگی شناخته‌شده با کنار گذاشتن کل پوشه تنظیمات تفاوت زیادی دارد. برای هر استثنا دلیل، مالک و زمان بازبینی پیشنهاد می‌شود. اگر یک پوشه تولیدشده بسیار بزرگ است، ابتدا بررسی کنید آیا در بسته نهایی منتشر می‌شود یا نه. فایل تولیدشده نیز می‌تواند راز داشته باشد؛ حذف آن از اسکن فقط به دلیل اینکه انسان آن را ننوشته توجیه کافی نیست. همچنین تغییر قواعد خود ابزار باید مانند تغییر کد امنیتی در بازبینی دیده شود.

از هشدار تا مهار نشت

پس از تأیید نشت، نخست اعتبار افشاشده را لغو یا جایگزین کنید و مصرف‌کنندگان مجاز را به مقدار جدید منتقل کنید. پاک کردن تاریخچه قبل از لغو اعتبار می‌تواند وقت ارزشمند را بگیرد، در حالی که کلید همچنان قابل استفاده است. سپس گزارش‌های سرویس مربوط را برای استفاده غیرمنتظره در بازه افشا بررسی کنید. این بررسی باید بر اساس سطح دسترسی کلید انجام شود؛ توکن فقط خواندنی یک مخزن با کلید مدیریت زیرساخت پیامد یکسانی ندارد. زمان تشخیص، زمان لغو و شواهد بررسی را ثبت کنید.

بازنویسی تاریخچه ممکن است بخشی از پاک‌سازی باشد، ولی نسخه‌های کپی‌شده، شاخه‌های دیگر و خروجی‌های ساخت را خودکار اصلاح نمی‌کند. تیم باید تصمیم بگیرد کدام مکان‌ها نیاز به حذف یا محدود کردن دسترسی دارند و چگونه مشارکت‌کنندگان نسخه محلی خود را هماهنگ کنند. در پایان رسیدگی، علت ورود راز را نیز اصلاح کنید: نبود فایل نمونه مناسب، پیچیدگی تزریق تنظیمات یا نیاز توسعه‌دهنده به دسترسی آزمایشی می‌تواند تکرار حادثه را توضیح دهد. افزودن یک هشدار دیگر بدون آسان‌تر کردن مسیر درست، معمولاً مشکل اصلی را حل نمی‌کند.

سنجش کیفیت و تصمیم استفاده

در یک دوره آزمایشی، سهم یافته‌های قابل اقدام، زمان رسیدن هشدار به مالک و مدت لازم برای اصلاح را اندازه بگیرید. تعداد زیاد یافته به تنهایی نشانه کیفیت نیست. اگر بیشتر موارد به فایل نمونه برمی‌گردند، نمونه‌ها را اصلاح کنید و قاعده را دقیق‌تر بسازید. اگر موارد واقعی پس از انتشار کشف می‌شوند، محل اجرای کنترل دیر است یا دامنه ورودی ناقص انتخاب شده است. بررسی چند مخزن با زبان‌ها و ساختارهای متفاوت تصویر بهتری از کارایی سازمانی می‌دهد تا اجرای موفق روی یک پروژه مرتب و کوچک.

Gitleaks برای تیمی مناسب است که یک کنترل متنی قابل استقرار در جریان توسعه می‌خواهد و مسئولیت رسیدگی را نیز تعریف کرده است. این ابزار جای مخزن اسرار، سیاست حداقل دسترسی یا گردش کلید را نمی‌گیرد. با توجه به وضعیت نگهداری اعلام‌شده، هنگام انتخاب جدید بهتر است نیاز به قواعد آینده و امکان مهاجرت نیز ثبت شود. ارزش نهایی نصب در این است که راز واقعی سریع‌تر پیدا و بی‌اعتبار شود و توسعه‌دهنده مسیر ساده‌تری برای نگهداری امن تنظیمات داشته باشد؛ سبز شدن یک نشان در صفحه مخزن فقط یکی از آثار جانبی این فرایند است.

TRACEABLE KNOWLEDGE

منابع و مطالعهٔ بیشتر

01
مخزن رسمی Gitleakshttps://github.com/gitleaks/gitleaks
02
منبع تصویر — نشان رسمی Gitleakshttps://github.com/gitleaks

آخرین بررسی تحریریه:

IROSG / EDITORIAL

خبرها و معرفی مشاهیر با نگارش مستقل و ذکر منبع تهیه شده‌اند. اعتبار و مجوز تصاویر در بخش منابع همین صفحه نگه‌داری می‌شود تا متن زیر عکس‌ها شلوغ نشود. داده‌های مرجع CVE با اعتباردهی به منابع اصلی ارائه می‌شوند.

سیاست تألیف و حقوق تصاویر ↗