TruffleHog — инструмент, который находит секретные ключи в Git-репозитории

TruffleHog способен найти сгенерированные секретные ключи, анализируя коммиты в истории вашего проекта.

Зачем это нужно?

Предположим, вы пишите веб-проект и используете какой-нибудь ключ для шифрования паролей. Вы создали изначальный коммит, не удалив секретный ключ из кода. Затем вы выкладываете свой проект на GitHub. В какой-то момент вы вспомнили о том, что просто так оставлять секретный ключ в коде — это плохая идея, и удаляете ключ из кода, сохраняя новый коммит. В итоговой версии кода секретного ключа не видно, но кто-то может покопаться в истории коммитов и найти ключ. А зная ключ, можно получить доступ, например, к панели администратора сайта. Так вот TruffleHog ищет такие коммиты и сообщает о них пользователю.

Как это работает?

Дилан Эйри (Dylan Ayrey), создатель TruffleHog, описал идею работы инструмента: секретным ключом считается любая строка длинной более 20 символов и с высокой энтропией. Энтропия — это мера неопределённости или непредсказуемости информации, неопределённость появления какого-либо символа первичного алфавита.

TruffleHog проходится по всей истории коммитов во всех ветках, оценивая энтропию Шенонна для каждого фрагмента текста, состоящего из шестнадцатеричных или base64 символов. Если строка больше 20 символов, то выводится эта строка и информация о ветке и коммите, где она встретилась.

TruffleHog в действии

TruffleHog доступен на GitHub. Для запуска потребуется библиотека GitPython.

Источник: The Register