
Инструмент статического анализа кода на основе Elasticsearch

Bughound — это инструмент статического анализа кода с открытым исходным кодом, который анализирует ваш код и отправляет результаты в Elasticsearch и Kibana для получения полезных сведений о потенциальных уязвимостях в вашем коде.
Bughound имеет собственный Docker-образ Elasticsearch и Kibana, предварительно настроенный с дашбордами, обеспечивающими наглядную визуализацию результатов.
Вы можете обнаруживать различные типы уязвимостей, такие как:
На данный момент Bughound может анализировать код на PHP и JAVA и содержит набор небезопасных функций для этих языков.
Со временем я обязательно добавлю больше функций/языков, но сейчас основное внимание уделяется стабильности самого проекта.
Обратите внимание, что результаты Bughound не являются на 100% точными; он создан, чтобы помочь вам выявить потенциальные слабые места для дальнейшего анализа.
Прежде всего, Bughound составит список всех файлов в вашем проекте на основе расширения файлов, которые вы хотите проверить, затем прочитает каждый файл и попытается найти любые предопределённые небезопасные функции для языка вашего проекта.
Этап анализа основан на предварительно настроенных регулярных выражениях и некотором пользовательском сопоставлении текста для обнаружения потенциальных уязвимостей, поэтому, опять же, вам необходимо провести ручной анализ, чтобы проверить, можно ли использовать эти результаты.
Наконец, он отправит результаты в Docker-образ Bughound, который содержит предварительно настроенные Elasticsearch и Kibana с пользовательскими дашбордами для ваших результатов.
Дашборды предоставят вам подробную информацию о результатах, такую как:
Кроме того, с помощью Kibana вы сможете просмотреть потенциально уязвимый фрагмент кода, чтобы начать этап анализа и трассировки и проверить, является ли он эксплуатируемым.
Конечно, при желании вы можете использовать свой собственный стек ELK, и Bughound выполнит для вас начальную настройку, но в этом случае вы не получите предварительно настроенных дашбордов.
Вы можете установить все необходимые зависимости для запуска кода Bughound с помощью следующей команды:
pip3 install -r requirements.txt
Это гарантирует, что все зависимости для кода будут установлены.
Кроме того, вам необходимо установить Docker, чтобы запустить образ Bughound; подробнее об этом в следующем разделе!
Если вы хотите использовать собственные экземпляры Elasticsearch и Kibana, пропустите шаг установки Docker
Убедитесь, что у вас последняя версия Bughound, с помощью следующей команды:
git clone https://github.com/mhaskar/Bughound
И после установки зависимостей на предыдущем шаге вы можете запустить Bughound с помощью следующей команды:
./bughound.py
Вы увидите главный экран Bughound.
┌─[askar@hackbook]─[/opt/bughound]
└──╼ $./bughound.py
.______ __ __ _______ __ __ ______ __ __ .__ __. _______
| _ \ | | | | / _____|| | | | / __ \ | | | | | \ | | | \
| |_) | | | | | | | __ | |__| | | | | | | | | | | \| | | .--. |
| _ < | | | | | | |_ | | __ | | | | | | | | | | . ` | | | | |
| |_) | | `--' | | |__| | | | | | | `--' | | `--' | | |\ | | '--' |
|______/ \______/ \______| |__| |__| \______/ \______/ |__| \__| |_______/
\ /
oVo
\___XXX___/
__XXXXX__
/__XXXXX__\
/ XXX \
V V1.0 Beta
[+] Example: ./bughound3.py --path vulnerable_code/ --language php --extension .php --name testproject
usage: bughound.py [-h] [--path PATH] [--git GIT] --language LANGUAGE
--extension EXTENSION --name NAME [--verbose [VERBOSE]]
bughound.py: error: argument --language is required
┌─[✗]─[askar@hackbook]─[/opt/bughound]
└──╼ $
Чтобы установить Docker-образ Bughound, просто выполните следующее:
docker pull bughound/bughound
Это загрузит последнюю версию образа и сохранит её на вашем компьютере.
После загрузки образа мы можем запустить его с помощью следующей команды:
docker run --name bughound -p5601:5601 -p 9200:9200 bughound/bughound
Это запустит образ в новом контейнере с именем bughound и откроет порты, необходимые Bughound для связи Elasticsearch и Kibana с вашим хостом.
Возможно, вам потребуется увеличить максимальную виртуальную память для использования образа, поэтому обязательно выполните эту команду:
sysctl -w vm.max_map_count=262144
После выполнения этих двух действий вы готовы к использованию Bughound!
Чтобы начать процесс анализа вашего кода, используйте файл Bughound.py, у которого есть несколько опций. Чтобы увидеть эти опции через баннер справки, используйте следующую команду:
┌─[✗]─[askar@hackbook]─[/opt/bughound]
└──╼ $./bughound.py -h
.______ __ __ _______ __ __ ______ __ __ .__ __. _______
| _ \ | | | | / _____|| | | | / __ \ | | | | | \ | | | \
| |_) | | | | | | | __ | |__| | | | | | | | | | | \| | | .--. |
| _ < | | | | | | |_ | | __ | | | | | | | | | | . ` | | | | |
| |_) | | `--' | | |__| | | | | | | `--' | | `--' | | |\ | | '--' |
|______/ \______/ \______| |__| |__| \______/ \______/ |__| \__| |_______/
\ /
oVo
\___XXX___/
__XXXXX__
/__XXXXX__\
/ XXX \
V V1.0 Beta
[+] Example: ./bughound3.py --path vulnerable_code/ --language php --extension .php --name testproject
usage: bughound.py [-h] [--path PATH] [--git GIT] --language LANGUAGE
--extension EXTENSION --name NAME [--verbose [VERBOSE]]
optional arguments:
-h, --help show this help message and exit
--path PATH local path of the source code
--git GIT git repository URL
--language LANGUAGE the used programming language
--extension EXTENSION
extension to search for
--name NAME project name to use
--verbose [VERBOSE] show debugging messages
┌─[askar@hackbook]─[/opt/bughound]
└──╼ $
Например, чтобы отсканировать локальный PHP-проект, используйте следующую команду:
./bughound.py --path /opt/dummyproject --language php --extension .php --name dummyproject
Эта команда создаст новый проект с именем "dummyproject" в индексе Elasticsearch, просканирует все локальные файлы с расширением ".php" в локальном пути "/opt/dummyproject" и отправит результаты в Elasticsearch.
Кроме того, вы можете получить удаленный проект из git-репозитория, используя параметр --git, например:
./bughound.py --git https://github.com/DummyCode/DummyProject --language php --extension .php --name dummyproject
Bughound склонирует код за вас, сохранит его в каталог projects, а затем просканирует его.
Если вы решили использовать официальный Docker-образ Bughound, вы получите несколько готовых к использованию дашбордов, которые помогут вам в анализе.
На данный момент доступны следующие дашборды:
Эти дашборды предоставят вам статистику по функциям и фрагментам кода, найденным в коде, чтобы вы могли начать процесс анализа.
Для получения дополнительной информации о Bughound ознакомьтесь со следующими статьями:
Этот проект лицензирован по лицензии GPL-3.0 — подробности см. в файле LICENSE.