
Ferramenta de análise estática de código baseada em Elasticsearch

Bughound é uma ferramenta de análise estática de código open-source que analisa seu código e envia os resultados para Elasticsearch e Kibana para obter insights úteis sobre as potenciais vulnerabilidades no seu código.
Bughound possui sua própria imagem Docker do Elasticsearch e Kibana pré-configurada com dashboards para fornecer uma visualização robusta dos resultados.
Você pode detectar vários tipos de vulnerabilidades, como:
Bughound pode analisar código PHP e JAVA por enquanto, e contém um grupo de funções inseguras para essas linguagens.
Vou garantir que mais funções/cobertura de linguagens sejam adicionadas com o tempo, mas por enquanto o foco principal é na estabilidade do projeto em si.
Por favor, note que os resultados do Bughound não são 100% precisos; ele foi construído para ajudar a identificar potenciais fraquezas durante sua análise para investigação.
Primeiramente, o Bughound construirá uma lista de todos os arquivos dentro do seu projeto com base na extensão dos arquivos que você deseja auditar, então lerá cada arquivo e tentará encontrar quaisquer funções inseguras pré-definidas para a linguagem do seu projeto.
A fase de análise depende de regex pré-configurado e de alguma correspondência de texto personalizada para detectar as potenciais vulnerabilidades. Portanto, novamente, você precisa realizar a análise manual para verificar se essas descobertas são exploráveis.
Finalmente, ele enviará os resultados para a imagem Docker do Bughound, que possui Elasticsearch e Kibana pré-configurados contendo os dashboards personalizados para suas descobertas.
Os dashboards fornecerão detalhes sobre as descobertas, como:
Além disso, usando o Kibana, você poderá visualizar o trecho de código potencialmente vulnerável para iniciar sua análise e fase de rastreamento para verificar se é explorável ou não.
Claro, você pode usar seu próprio stack ELK se quiser, e o Bughound fará a configuração inicial para você, mas não terá os dashboards pré-configurados nesse caso.
Você pode instalar todos os requisitos para executar o código do Bughound usando o seguinte comando:
pip3 install -r requirements.txt
Isso garantirá que todos os requisitos estejam instalados para o código.
Além disso, você precisa instalar o Docker para executar a imagem do Bughound, mais sobre isso na próxima seção!
Se você quiser usar suas próprias instâncias Elasticsearch e Kibana, pule a etapa de instalação do Docker
Certifique-se de obter a versão mais recente do Bughound usando o seguinte comando:
git clone https://github.com/mhaskar/Bughound
E após instalar os requisitos na etapa anterior, você pode executar o Bughound usando o seguinte comando:
./bughound.py
Você verá a tela principal do 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]
└──╼ $
Para instalar a imagem Docker do Bughound, você pode simplesmente fazer o seguinte:
docker pull bughound/bughound
E isso baixará a versão mais recente da imagem e a salvará em sua máquina.
Depois de baixar a imagem, podemos executá-la usando o seguinte comando:
docker run --name bughound -p5601:5601 -p 9200:9200 bughound/bughound
Isso executará a imagem em um novo contêiner chamado bughound e exporá as portas necessárias para o Bughound comunicar Elasticsearch e Kibana ao seu host.
Você pode precisar aumentar a memória virtual máxima para usar a imagem, portanto, certifique-se de executar este comando:
sysctl -w vm.max_map_count=262144
Depois de realizar essas duas etapas, você está pronto para usar o Bughound!
Para iniciar o processo de análise do seu código, você deve usar o arquivo Bughound.py que possui algumas opções. Para ver essas opções através do banner de ajuda, use o seguinte comando:
┌─[✗]─[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]
└──╼ $
Por exemplo, para escanear um projeto PHP local, use o seguinte comando:
./bughound.py --path /opt/dummyproject --language php --extension .php --name dummyproject
Este comando criará um novo projeto chamado "dummyproject" no índice do Elasticsearch, e percorrerá todos os arquivos locais com a extensão ".php" no caminho local "/opt/dummyproject" e enviará os resultados para o Elasticsearch.
Além disso, você pode baixar um projeto remoto de um repositório git usando a opção --git da seguinte forma:
./bughound.py --git https://github.com/DummyCode/DummyProject --language php --extension .php --name dummyproject
O Bughound clonará o código para você e o salvará no diretório projects, depois o escaneará.
Se você decidir usar a imagem Docker oficial do Bughound, obterá alguns dashboards prontos para uso que ajudarão na sua análise.
Os seguintes dashboards estão disponíveis até agora:
Esses dashboards fornecerão estatísticas sobre as funções e trechos de código encontrados no código, para que você possa iniciar seu processo de análise.
Para mais informações sobre o Bughound, confira os seguintes artigos:
Este projeto está licenciado sob a Licença GPL-3.0 - consulte o arquivo LICENSE para obter detalhes.