
Outil d'analyse statique de code basé sur Elasticsearch

Bughound est un outil open-source d'analyse statique de code qui analyse votre code et envoie les résultats vers Elasticsearch et Kibana pour obtenir des informations utiles sur les vulnérabilités potentielles de votre code.
Bughound possède sa propre image Docker Elasticsearch et Kibana préconfigurée avec des tableaux de bord pour vous offrir une visualisation robuste des résultats.
Vous pouvez détecter différents types de vulnérabilités, notamment :
Pour l'instant, Bughound peut analyser du code PHP et JAVA, et il contient un groupe de fonctions dangereuses pour ces langages.
Je veillerai à ajouter de plus en plus de fonctions/langages au fil du temps, mais pour l'instant, l'accent est mis sur la stabilité même du projet.
Veuillez noter que les résultats de Bughound ne sont pas précis à 100 % ; il a été conçu pour vous aider à identifier les faiblesses potentielles lors de votre analyse afin de les examiner.
Tout d'abord, Bughound va construire une liste de tous les fichiers de votre projet en fonction de l'extension des fichiers que vous souhaitez auditer, puis il lira chaque fichier et essaiera de trouver toutes les fonctions dangereuses prédéfinies pour le langage de votre projet.
La phase d'analyse repose sur des regex préconfigurées et une correspondance textuelle personnalisée pour détecter les vulnérabilités potentielles. Encore une fois, vous devez effectuer l'analyse manuelle pour vérifier si ces résultats sont exploitables.
Enfin, il enverra les résultats vers l'image Docker de Bughound qui contient une instance Elasticsearch et Kibana préconfigurée avec les tableaux de bord personnalisés pour vos résultats.
Les tableaux de bord vous donneront des détails sur les résultats, tels que :
Avec Kibana, vous pourrez également visualiser l'extrait de code potentiellement vulnérable pour commencer votre phase d'analyse et de traçage afin de vérifier s'il est exploitable ou non.
Bien sûr, vous pouvez utiliser votre propre stack ELK si vous le souhaitez, et Bughound effectuera la configuration initiale pour vous, mais vous n'aurez pas les tableaux de bord préconfigurés dans ce cas.
Vous pouvez installer tous les prérequis pour exécuter le code de Bughound en utilisant la commande suivante :
pip3 install -r requirements.txt
Cela garantira que tous les prérequis sont installés pour le code.
De plus, vous devez installer Docker afin d'exécuter l'image Bughound. Plus de détails à ce sujet dans la section suivante !
Si vous souhaitez utiliser vos propres instances Elasticsearch et Kibana, ignorez l'étape d'installation de Docker
Assurez-vous d'obtenir la dernière version de Bughound en utilisant la commande suivante :
git clone https://github.com/mhaskar/Bughound
Et après avoir installé les prérequis à l'étape précédente, vous pouvez exécuter Bughound avec la commande suivante :
./bughound.py
Vous obtiendrez l'écran principal de 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]
└──╼ $
Pour installer l'image Docker de Bughound, vous pouvez simplement faire ceci :
docker pull bughound/bughound
Cela téléchargera la dernière version de l'image et la sauvegardera sur votre machine.
Une fois l'image téléchargée, nous pouvons l'exécuter avec la commande suivante :
docker run --name bughound -p5601:5601 -p 9200:9200 bughound/bughound
Cela exécutera l'image dans un nouveau conteneur nommé bughound et exposera les ports nécessaires à Bughound pour communiquer avec Elasticsearch et Kibana sur votre hôte.
Vous devrez peut-être augmenter la mémoire virtuelle maximale pour utiliser l'image, alors veuillez exécuter cette commande :
sysctl -w vm.max_map_count=262144
Après avoir réalisé ces deux choses, vous êtes maintenant prêt à utiliser Bughound !
Pour lancer le processus d'analyse de votre code, vous devez utiliser le fichier Bughound.py qui propose plusieurs options. Pour voir ces options via le message d'aide, utilisez la commande suivante :
┌─[✗]─[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]
└──╼ $
Par exemple, pour analyser un projet PHP local, vous pouvez utiliser la commande suivante :
./bughound.py --path /opt/dummyproject --language php --extension .php --name dummyproject
Cette commande créera un nouveau projet appelé "dummyproject" dans l'index Elasticsearch, parcourra tous les fichiers locaux avec l'extension ".php" dans le chemin local "/opt/dummyproject" et enverra les résultats à Elasticsearch.
Vous pouvez également récupérer un projet distant depuis un dépôt git à l'aide du commutateur --git comme ceci :
./bughound.py --git https://github.com/DummyCode/DummyProject --language php --extension .php --name dummyproject
Bughound clonera le code pour vous et le sauvegardera dans le répertoire projects, puis l'analysera.
Si vous décidez d'utiliser l'image Docker officielle de Bughound, vous obtiendrez plusieurs tableaux de bord prêts à l'emploi pour vous aider dans votre analyse.
Les tableaux de bord suivants sont disponibles pour l'instant :
Ces tableaux de bord vous fourniront des statistiques sur les fonctions et les extraits de code trouvés dans le code, afin que vous puissiez entamer votre processus d'analyse.
Pour plus d'informations sur Bughound, consultez les articles suivants :
Ce projet est sous licence GPL-3.0 - voir le fichier LICENSE pour plus de détails.