یکی از خطرناکترین اشتباهاتی که در پروژههای نرمافزاری رخ میدهد، نشت اطلاعات محرمانه Secrets داخل مخازن Git است. این اطلاعات میتوانند شامل رمز عبور، API Key، توکنها یا حتی connection stringهای دیتابیس باشند. مشکل اصلی اینجاست که حتی اگر این اطلاعات را در commit بعدی حذف کنید، همچنان در تاریخچه Git باقی میمانند و قابل بازیابی هستند.
ابزار GitLeaks دقیقاً برای حل این مشکل طراحی شده است. این ابزار به شما کمک میکند تا secrets را در کد، تاریخچه Git و حتی ورودیهای دیگر شناسایی کنید و قبل از اینکه به یک تهدید امنیتی تبدیل شوند، آنها را مدیریت کنید.
بر اساس مستندات رسمی، GitLeaks یک ابزار برای تشخیص secrets مانند password، API key و token در repository، فایلها و حتی stdin است GitHub1.
در این مقاله، تمام قابلیتها، دستورات، تنظیمات و نحوه استفاده از GitLeaks را دقیق و ساختاریافته بررسی میکنیم.
1.GitLeaks چیست؟
GitLeaks یک ابزار CLI متنباز است که برای پیدا کردن اطلاعات حساس در موارد زیر استفاده میشود:
مخازن Git
فایلها و دایرکتوریها
ورودیهای stream stdin
طبق مستندات رسمی:
GitLeaks میتواند secrets را در گذشته و حال کد شناسایی کند
نحوه کار GitLeaks طبق مستندات رسمی
GitLeaks با استفاده از:
تحلیل commitها
بررسی تغییرات patch
و استفاده از الگوهای تشخیص rulebased detection
اطلاعات حساس را پیدا میکند.
مثلاً:
bash
gitleaks git vنمونه خروجی واقعی:
Finding: "export BUNDLE...=cafebabe:deadbeef"
Secret: cafebabe:deadbeef
RuleID: sidekiqsecret
File: ...
Line: 23
Commit: ...این خروجی نشان میدهد:
secret دقیقاً چیست
در چه فایل و خطی است
مربوط به کدام commit است GitHub1
مفهوم خطر نشت Secrets در Git👇

2. دستورات اصلی GitLeaks
GitLeaks چند حالت اصلی اسکن دارد:
2.1 . اسکن مخزن Git
bash
gitleaks git path/to/repo📌 این حالت از git log p استفاده میکند برای بررسی commitها
2.2 . اسکن فایل یا دایرکتوری
bash
gitleaks dir path/to/code📌 برای زمانی که Git ندارید یا فقط فایل مهم است
2.3 . اسکن از طریق stdin
bash
cat file.txt | gitleaks stdin📌 مناسب pipelineها و پردازش داده
نصب GitLeaks روشهای رسمی
Homebrew
bash
brew install gitleaks
Docker
bash
docker run v ${path}:/path zricethezav/gitleaks:latest COMMAND
Build از سورس
bash
git clone https://github.com/gitleaks/gitleaks.git
cd gitleaks
make build📌 تمام این روشها در مستندات رسمی ذکر شدهاند .
ترمینال GitLeaks با تشخیص secrets👇

3. قابلیتهای پیشرفته GitLeaks
3.1. Baseline نادیده گرفتن نتایج قبلی
bash
gitleaks git reportpath report.json
gitleaks git baselinepath report.json📌 فقط secrets جدید گزارش میشوند GitHub1
3.2. فایل ignore
میتوانید secrets خاصی را نادیده بگیرید:
text
.gitleaksignore📌 هر secret یک Fingerprint دارد که قابل ignore است GitHub1
3.3. Allow کردن secret خاص
python
password = "123456" gitleaks:allow📌 برای تست یا موارد خاص
3.4 Decode کردن دادهها
bash
maxdecodedepth📌 برای کشف secrets encode شده GitHub1
3.5. اسکن آرشیوها
bash
maxarchivedepth📌 حتی داخل zip و tar هم جستجو میکند GitHub1
گزارشگیری Reporting
GitLeaks از فرمتهای مختلف پشتیبانی میکند:
JSON
CSV
JUnit
SARIF
مثال:
bash
gitleaks dir . reportpath report.json📌 همچنین میتوانید template سفارشی بسازید GitHub1
مثال عملی واقعی سناریوی واقعی
یک پروژه Node.js داری و اینو commit کردی:
js
const DB_PASSWORD = "supersecretpassword";اجرای GitLeaks:
bash
gitleaks git .نتیجه:
پیدا کردن password
نمایش commit
نمایش مسیر فایل
📌 دقیقاً قبل از اینکه به production برسد، جلوی leak گرفته میشود
استفاده در CI/CD
GitLeaks بهصورت رسمی به عنوان:
GitHub Action
Precommit hookقابل استفاده است GitHub1
مثال:
yaml
name: Run GitLeaks
uses: gitleaks/gitleaksaction@v2📌 باعث میشود:
commitهای خطرناک reject شوند
نکات حرفهای بر اساس مستندات
همیشه fetchdepth: 0 بزن برای اسکن کامل
از baseline برای پروژههای قدیمی استفاده کن
rules سفارشی بساز
ignore رو بیرویه استفاده نکن
اینفوگرافیک روشهای نصب👇

سوالات متداول & FAQ Schema
GitLeaks چه چیزی را اسکن میکند؟
مخازن Git، فایلها و حتی stdin را بررسی میکند.
آیا GitLeaks تاریخچه Git را هم بررسی میکند؟
بله، با استفاده از git log تمام commitها را اسکن میکند.
آیا میتوان secrets خاصی را نادیده گرفت؟
بله، با `.gitleaksignore` یا `gitleaks:allow`.
آیا GitLeaks از فایلهای فشرده پشتیبانی میکند؟
بله، با تنظیمات archive depth.
آیا خروجی قابل سفارشیسازی است؟
بله، با templateهای گزارش.
نتیجهگیری & Call To Action
GitLeaks یک ابزار ساده نیست
یک خط دفاعی حیاتی در برابر یکی از رایجترین آسیبپذیریهای امنیتی است.
اگر فقط یک کار باید امروز انجام بدهی، این است:
bash gitleaks git .
زمان شروع همین حالا است😉
یک Product بسازید، اولین اسکن را Import کنید و ببینید چگونه GitLeaks امنیت شما را از حالت واکنشی به یک فرآیند proactive، measurable و قابل رقابت تبدیل میکند.
