
Ах shhgit! Находите секреты в вашем коде. Обнаружение секретов для ваших репозиториев на GitHub, GitLab и Bitbucket.
Случайная утечка секретов — имен пользователей и паролей, токенов API или закрытых ключей — в публичном репозитории кода является кошмаром для разработчиков и служб безопасности. Мошенники постоянно сканируют публичные репозитории в поисках этих секретов, чтобы получить доступ к системам. Код сейчас более связан, чем когда-либо, и часто такие секреты открывают доступ к приватным и конфиденциальным данным — облачной инфраструктуре, серверам баз данных, платёжным шлюзам и системам хранения файлов, и это лишь некоторые примеры.
shhgit может постоянно сканировать ваши репозитории кода, находить и уведомлять вас об этих секретах.
У вас есть два варианта. Я рекомендую первый, так как он даёт доступ к живому веб-интерфейсу shhgit. Второй вариант используйте, если вам нужен только интерфейс командной строки.
git clone https://github.com/eth0izzle/shhgit.gitdocker-compose buildconfig.yaml (например, добавьте свои токены GitHub)docker-compose upПримечание: этот метод не включает веб-интерфейс shhgit
go get github.com/eth0izzle/shhgit автоматически загрузит и соберёт shhgit. Или вы можете клонировать этот репозиторий и выполнить go build -v -i.config.yaml и смотрите раздел «Использование» ниже.shhgit может работать двумя способами: потреблять публичные API GitHub, Gist, GitLab и BitBucket или обрабатывать файлы в локальной директории.
По умолчанию shhgit работает в первом «публичном» режиме. Для GitHub и Gist вам нужно получить и предоставить токен доступа (см. это руководство; не требует никаких разрешений). Затем поместите его в github_access_tokens в config.yaml. GitLab и BitBucket не требуют токенов API.
Вы также можете отказаться от встроенных сигнатур и использовать shhgit с собственным поисковым запросом, например, чтобы найти все ключи AWS: shhgit --search-query AWS_ACCESS_KEY_ID=AKIA. А для работы в локальном режиме (и, возможно, интеграции в конвейеры CI) передайте флаг --local (см. использование ниже).
--clone-repository-timeout
Максимальное время на клонирование репозитория в секундах (по умолчанию 10)
--config-path
Поиск config.yaml в указанной директории. Если не задан, пытается найти его из директории бинарного файла shhgit и текущей директории
--csv-path
Укажите путь для записи найденных секретов в CSV. Оставьте пустым, чтобы отключить
--debug
Вывод отладочной информации
--entropy-threshold
Поиск строк с высокой энтропией в файлах. Выше порог = более секретные секреты, ниже порог = больше ложных срабатываний. Установите 0 для отключения проверки энтропии (по умолчанию 5.0)
--local
Укажите локальную директорию (абсолютный путь) для сканирования. Сканирует только указанную директорию рекурсивно. Токены GitHub не требуются.
--maximum-file-size
Максимальный размер файла для обработки в КБ (по умолчанию 512)
--maximum-repository-size
Максимальный размер репозитория для загрузки и обработки в КБ (по умолчанию 5120)
--minimum-stars
Клонировать только репозитории с таким количеством звезд или больше. Установите 0, чтобы игнорировать количество звезд (по умолчанию 0)
--path-checks
Установите false для отключения проверки сигнатур по имени/пути файла, т.е. только сопоставление regex-шаблонов (по умолчанию true)
--process-gists
Отслеживать и обрабатывать Gists в реальном времени. Установите false для отключения (по умолчанию true)
--search-query
Укажите строку поиска, чтобы игнорировать сигнатуры и фильтровать файлы, содержащие эту строку (совместимо с regex)
--silent
Подавить весь вывод, кроме ошибок
--temp-directory
Директория для хранения репозиториев/совпадений (по умолчанию "%temp%\shhgit")
--threads
Количество одновременных потоков (по умолчанию количество логических процессоров)
Файл config.yaml содержит 7 элементов. По умолчанию предоставлен.
github_access_tokens: # предоставьте хотя бы один токен
- 'token one'
- 'token two'
webhook: '' # URL для POST-вебхука.
webhook_payload: '' # Payload для отправки на URL вебхука
blacklisted_strings: [] # список строк для игнорирования
blacklisted_extensions: [] # список расширений для игнорирования
blacklisted_paths: [] # список путей для игнорирования
blacklisted_entropy_extensions: [] # дополнительные расширения для игнорирования при проверке энтропии
signatures: # список сигнатур для проверки
- part: '' # либо filename, extension, path или contents
match: '' # простое сравнение текста (если нет элемента regex)
regex: '' # regex-шаблон (если нет элемента match)
name: '' # имя сигнатуры
shhgit поставляется с 150 сигнатурами. Вы можете удалить или добавить больше, отредактировав файл config.yaml.