Найти в Дзене

Gitleaks

·   Цена: бесплатно
Как известно, чем крупнее продукт, тем больше для его разработки привлекается подрядчиков и тем больше рядовых сотрудников взаимодействуют с его кодом. И пока все действия выполняются на виртуальных машинах, не подключенных к сети, а всех входящих и выходящих проверяют на рентгеновском сканере, все выглядит хорошо. Но когда для разработки и тестирования приглашают подрядчиков, которые работают из дома, начинаются проблемы.
Часто в коде тестов QA-специалистов попадаются привилегированные ключи для доступа к инфраструктуре, а Security-инженеры забывают приватную информацию в своих публичных репозиториях для бэкапов. Если найти такой ключик, то взлом может закончиться, даже не начавшись, так что нельзя забывать про этот вектор атаки. Подобные данные можно найти по запросам вида compcompany.coms и compcompany.comvate на GitHub, а можно и с помощью автоматических скриптов.
Один из таких инструментов — это Gitleaks, который быстро и качественно найдет почти что угодно в любом открытом репозитории. Он умеет следующее:
·   проверять локальные изменения до коммита, чтобы избежать утечек данных еще на стадии разработки;
·   проверять любые репозитории GitHub/GitLab, в том числе приватные репозитории, если есть ключ доступа;
·   проверять все репозитории заданного пользователя или организации;
·   выдавать отчет в JSON, что удобно для последующего автоматического анализа;
·   интегрироваться с Git, чтобы предотвратить непреднамеренную утечку.
Установить его можно с помощью Docker.

docker pull zricethezav/gitleaks
docker run --rm --name=gitleaks zricethezav/gitleaks -v -r [REPO_URL]
Использование инструмента и все его ключи запуска описаны в справке к программе, но некоторые из них я продублирую здесь.
·   -v — детальный вывод сообщений;
·   —repo=[REPO] — ссылка на репозиторий для проверки;
·   —disk — клонировать репозиторий локально, чтобы не исчерпать всю память сразу;
·   —usename=[USER] и —password=[PASS] — указывает логин и пароль для доступа к приватному репозиторию;
·   —access-token=[TOKEN] — альтернатива авторизации по логину и паролю;
·   —commit=[COMMIT] — SHA коммита для анализа, если хочется проверить репозиторий в какой-то момент. По умолчанию проверяется текущее состояние;
·   —repo-path=[PATH] — анализировать локальный репозиторий по заданному пути;
·   —branch=[BRANCH] — анализировать только конкретный branch;
·   —depth=[NUM] — анализировать только [NUM] последних коммитов. Альтернатива — —commit-from=[COMMIT] и —commit-to=[COMMIT], проверяющие коммиты между заданными включительно;
·   —threads=[NUM] — сканировать в несколько потоков.
Чтобы выпотрошить все репозитории конкретной организации или пользователя, используйте следующие параметры:
·   —org=[ORG] — искать и анализировать все репозитории организации [ORG];
·   —user=[USER] — то же, но для пользователя;
·   —exclude-forks — исключить из анализа форки репозиториев. В них редко можно найти что-либо полезное, а вот сканирование эта опция ускорит значительно.
Для использования этой функции надо указать утилите, какой сервис мы хотим задействовать. Пока поддерживаются GitHub и GitLab. Задать сервис можно опцией —host=[SERVICE], где [SERVICE] — GitHub или GitLab.
В целом инструмент очень хороший и часто незаменимый. Рекомендую для использования в bug bounty и при пентестах.
2 минуты