33 подписчика
PVS-Studio
· Цена: ~5250 евро с возможностью получить бесплатно (и легально)
Бывает, что в рамках bug bounty для исследования предлагают исходный код продукта. Однако хороших инструментов для автоматизации такой работы очень мало. Вручную же искать баги среди миллионов строк кода — занятие весьма неблагодарное, тем более что кодовая база в активном проекте регулярно обновляется.
Исследователь устает, да и в принципе не способен выследить большинство косяков сам. Другое дело — софт! И тут нам помогли наши соотечественники, создав PVS-Studio. Это весьма годный коммерческий статический анализатор.
PVS-Studio умеет находить ошибки в коде на C, C++, C# и Java. Для использования его нужно скачать с сайта разработчика и установить. Есть версии для Windows (в виде расширения для Visual Studio), Linux (пакеты deb и rpm) и macOS.
Сканер уязвимостей требует регистрации — ввести ключ, полученный от разработчика. И тут я встретил самую быструю и дружелюбную реакцию среди всех производителей коммерческих сканеров.
Пользоваться PVS-Studio можно разработчикам открытых проектов, публичным специалистам в ИБ и обладателям статуса Microsoft MVP. Если вы тоже занимаетесь ИБ — попробуйте получить такую лицензию.
Если вы используеыр плагин для Visual Studio, то все найденные ошибки будут выведены в лог при компиляции или принудительной проверке.
Ниже — пример использования. Я решил проверить код из своей прошлой статьи, и обнаружилась ошибка.
В общем, сканер действительно хороший и быстрый, а пользоваться им при определенных обстоятельствах можно и бесплатно. Жаль, для остальных случаев цена кусается.
Gitleaks
· Цена: бесплатно
Как известно, чем крупнее продукт, тем больше для его разработки привлекается подрядчиков и тем больше рядовых сотрудников взаимодействуют с его кодом. И пока все действия выполняются на виртуальных машинах, не подключенных к сети, а всех входящих и выходящих проверяют на рентгеновском сканере, все выглядит хорошо. Но когда для разработки и тестирования приглашают подрядчиков, которые работают из дома, начинаются проблемы.
Часто в коде тестов QA-специалистов попадаются привилегированные ключи для доступа к инфраструктуре, а Security-инженеры забывают приватную информацию в своих публичных репозиториях для бэкапов. Если найти такой ключик, то взлом может закончиться, даже не начавшись, так что нельзя забывать про этот вектор атаки. Подобные данные можно найти по запросам вида company.ccompany.comompany.ccompany.comна 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] — анализировать
3 минуты
17 августа 2023