Карточка проекта — звёзды, техстек, ссылка на исходники — в каталоге REDDYX: gitleaks/gitleaks.
ПОЧЕМУ СЕКРЕТЫ УТЕКАЮТ ДАЖЕ У ОПЫТНЫХ
Типичный сценарий: ключ вписан в .env для быстрого локального теста, файл случайно не попал в .gitignore, коммит улетел в общий репозиторий. Или ключ захардкожен «временно» прямо в коде для отладки — и забыт там. GitHub индексируется ботами, которые ищут именно такие утечки в публичных репозиториях в течение минут после пуша.
ЧТО ДЕЛАЕТ GITLEAKS
Инструмент прогоняет содержимое файлов и всю историю коммитов через набор правил: сигнатуры конкретных провайдеров (AWS, Stripe, GitHub-токены и десятки других по характерному формату) и общий детектор высокой энтропии для нераспознанных, но похожих на секрет строк. Находит не только в текущем состоянии репозитория, но и в удалённых файлах прошлых коммитов — то, что git log -p вручную искать замучаешься.
УСТАНОВКА И ПЕРВЫЙ СКАН
# macOS
brew install gitleaks
# или через go
go install github.com/gitleaks/gitleaks/v8@latest
# скан текущего репозитория со всей историей
gitleaks detect --source . --verbose
# скан только незакоммиченных изменений (быстрая проверка перед коммитом)
gitleaks protect --staged
При находке Gitleaks выводит файл, строку, коммит и тип предполагаемого секрета — достаточно, чтобы сразу понять, что и где утекло.
ВСТРАИВАНИЕ В CI/CD
Правильная точка защиты — не «когда-нибудь проверим руками», а автоматический гейт перед мерджем. Минимальный GitHub Actions workflow:
# .github/workflows/gitleaks.yml
name: gitleaks
on: [pull_request]
jobs:
scan:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: gitleaks/gitleaks-action@v2
Дополнительно имеет смысл добавить pre-commit hook локально — тогда секрет отсекается ещё до пуша, а не после того, как PR уже открыт:
# .pre-commit-config.yaml
repos:
- repo: https://github.com/gitleaks/gitleaks
rev: v8.18.0
hooks:
- id: gitleaks
ЧТО ДЕЛАТЬ, ЕСЛИ КЛЮЧ УЖЕ УТЁК
- Немедленно ротировать ключ у провайдера — это первый и самый важный шаг, важнее любой чистки истории git.
- Проверить логи использования ключа на предмет подозрительной активности за период утечки.
- Только потом при необходимости переписать историю (
git filter-repoили BFG Repo-Cleaner) — но это не отменяет ротацию: копии репозитория с ключом могли уже быть склонированы или закешированы.
Частые вопросы
Ловит ли Gitleaks секреты в приватных репозиториях так же, как в публичных?
Да, сканирование не зависит от видимости репозитория — работает локально с содержимым, к которому есть доступ. Приватность репозитория не защищает от утечки при случайном форке или публикации.
Много ли ложных срабатываний?
Детектор энтропии иногда помечает случайные строки, похожие на секреты (хеши, UUID). Ложные срабатывания можно занести в allowlist конфигом, чтобы не шуметь при каждом скане.
Заменяет ли Gitleaks секретное хранилище (Vault, Secrets Manager)?
Нет, это разные уровни защиты. Gitleaks — сеть безопасности от случайной ошибки разработчика, а секреты в продакшене всё равно должны жить в специализированном хранилище, а не в переменных окружения или коде.
Разбираем свежие open-source инструменты каждый день — от дата-пайплайнов до security-сканеров. Если хотите первыми видеть, что реально работает в 2026 — подписывайтесь на Telegram-канал REDDYX AI — новые репозитории каждые 30-60 минут.
