
Инструмент для захвата всех git-секретов с использованием нескольких инструментов поиска с открытым исходным кодом
git-all-secrets — это инструмент, который может:
Сканирование выполняется несколькими инструментами с открытым исходным кодом, такими как:
ПРИМЕЧАНИЕ — при необходимости в будущем можно добавить и другие подобные инструменты!
ПРИМЕЧАНИЕ — Сканирование может выполняться всеми инструментами или любым одним из них, указав флаг toolName.
Если для сканирования используются все инструменты, итоговый вывод объединяет результаты всех файлов от всех инструментов в один консолидированный файл.
Самый простой способ запустить git-all-secrets — через Docker, и я настоятельно рекомендую установить Docker, если у вас его ещё нет. После установки Docker:
docker run --rm -it abhartiya/tools_gitallsecrets --help, чтобы понять, какие различные флаги он может принимать.docker run -it abhartiya/tools_gitallsecrets -token=<> -org=<>. Вы также можете указать конкретный инструмент для сканирования, введя что-то вроде docker run -it abhartiya/tools_gitallsecrets -token=<> -org=<> -toolName=<>. Допустимые значения — thog и repo-supervisor.thogEntropy следующим образом: docker run -it abhartiya/tools_gitallsecrets -token=<> -org=<> -toolName=thog -thogEntropy.docker ps -a.docker cp <container-id>:/root/results.txt ..-token = Персональный токен доступа GitHub. Он нужен, потому что неаутентифицированные запросы к API GitHub быстро достигают ограничения по количеству запросов!
-org = Название организации для сканирования. Будет сканировать все публичные репозитории в организации + все репозитории и gists всех пользователей в организации. Если вы используете токен пользователя, являющегося частью этой организации, он также клонирует и сканирует все секретные gists этого пользователя, а также все приватные репозитории в организации, к которым у пользователя есть доступ. Однако он НЕ будет клонировать и сканировать любые приватные репозитории этого пользователя, принадлежащие этой организации. Для сканирования приватных репозиториев пользователей используйте флаг scanPrivateReposOnly вместе с флагом user и SSH-ключом, смонтированным в томе.
-user = Имя пользователя для сканирования. Будет сканировать все репозитории и gists этого пользователя. Если предоставленный токен является токеном этого пользователя, секретные gists также будут клонированы и отсканированы. Но будут клонированы и отсканированы только публичные репозитории. Для сканирования приватных репозиториев этого пользователя используйте флаг scanPrivateReposOnly вместе с флагом user и SSH-ключом, смонтированным в томе.
-repoURL = HTTPS URL репозитория для сканирования. Будет сканировать только этот репозиторий. Для публичных репозиториев достаточно указать https URL. Однако, если вы хотите сканировать приватный репозиторий, вам нужно указать ssh URL вместе с SSH-ключом, смонтированным в томе, и флагом scanPrivateReposOnly.
-gistURL = HTTPS URL gist для сканирования. Будет сканировать только этот gist. Нет понятия публичного или секретного gist, пока у вас есть URL. Даже если у вас есть секретный gist, если кто-то знает HTTPS URL вашего секретного gist, он также может получить к нему доступ.
-output = Имя файла, в который будут сохранены все результаты. По умолчанию — results.txt.
-cloneForks = Необязательный булевый флаг для клонирования форков репозиториев организации и пользователя. По умолчанию установлен в 0, т.е. форки не клонируются. Если форки нужно клонировать, значение должно быть 1. Или просто укажите -cloneForks вместе с другими флагами.
-orgOnly = Необязательный булевый флаг для пропуска клонирования репозиториев пользователей, принадлежащих организации. По умолчанию установлен в 0, т.е. обычное поведение. Если репозитории пользователей не нужно сканировать, а нужно сканировать только репозитории организации, значение должно быть 1. Или просто укажите -orgOnly вместе с другими флагами.
-toolName = Необязательный строковый флаг для указания, какой инструмент использовать для сканирования. По умолчанию установлен в all, т.е. будут использоваться и thog, и repo-supervisor. Допустимые значения: thog или repo-supervisor.
-teamName = Имя команды организации, которая имеет доступ к приватным репозиториям для сканирования. Этот флаг не до конца протестирован, поэтому я не могу гарантировать его работоспособность.
-scanPrivateReposOnly = Необязательный булевый флаг для указания, хотите ли вы сканировать только приватные репозитории пользователя. Его указание НЕ будет сканировать публичные репозитории пользователя. И вам нужно предоставить SSH-ключ, смонтировав том в контейнер. Кроме того, это работает только с флагами user, repoURL или org.
При использовании флага org вместе с флагом scanPrivateReposOnly и без флага orgOnly будет сканировать публичные И приватные репозитории этой организации, к которым имеет доступ пользователь (чей токен предоставлен). Затем он продолжит сканировать ТОЛЬКО приватные репозитории пользователя (чей токен предоставлен). Наконец, он продолжит сканировать все публичные и секретные gists этого пользователя (чей токен предоставлен). Вкратце, флаг scanPrivateReposOnly действительно влияет только на флаги user и repoURL.
-enterpriseURL = Необязательный флаг для указания URL Github Enterprise, если вы хотите сканировать корпоративные репозитории. Должно быть что-то вроде https://github.org.com/api/v3 вместе с SSH-ключом, смонтированным в контейнер. См. сканирование github enterprise ниже.
-threads = Значение по умолчанию 10. Это для ограничения количества потоков, если ваша система недостаточно мощная. В большинстве случаев значение 10 должно подходить.
-thogEntropy = Необязательный флаг, который указывает, хотите ли вы получать секреты на основе высокой энтропии от truffleHog или нет. Секреты с высокой энтропией от truffleHog создают МНОГО шума, поэтому, если вы не хотите весь этот шум и запускаете git-all-secrets на большой организации, я рекомендую не указывать этот флаг. По умолчанию установлен в False, то есть truffleHog будет выдавать результаты только на основе регулярных выражений из файла rules.json. Если вы сканируете относительно небольшую организацию с ограниченным набором репозиториев или пользователя с несколькими репозиториями, указание этого флага имеет больше смысла.