Поиск секретов в скрытых Git-коммитах
Искать секреты в исходном коде мы уже умеем. Но в git-репозиториях остались интересные места, до которых стандартными способами не доберешься. Речь о скрытых коммитах - информации об измененных файлах в репозитории, которая была удалена и не отображается в истории проекта.
Когда разработчик вносит изменения (коммит) в репозиторий, а затем по какой-то причине хочет отменить эти изменения, он выполняет команды:
git reset --hard HEAD^ git push origin -f
Первая строка отменяет последний коммит и все последние изменения в файлах целевого репозитория, а вторая строка применяет все изменения в этом репозитории. То есть, данные команды удаляют последние внесенные изменения.
Тут появляется важная особенность, которую отметили исследователи: если коммит недоступен в истории изменений, то это не означает, что его нельзя восстановить. И тогда все коммиты, которые содержали секреты и затем были удалены разработчиком, можно восстановить и извлечь из них ценную информацию.
Исследователи опубликовали инструмент для извлечения скрытых коммитов публичного GitHub-репозитория и их анализа. Для репозиториев GitLab эта техника тоже работает, и также есть готовый инструмент. Security-чемпионы и специалисты по безопасности приложений берут этот подход в работу.