
Strumento di analisi statica del codice basato su Elasticsearch

Bughound è uno strumento open-source di analisi statica del codice che analizza il tuo codice e invia i risultati a Elasticsearch e Kibana per ottenere utili informazioni sulle potenziali vulnerabilità presenti nel tuo codice.
Bughound ha una propria immagine Docker con Elasticsearch e Kibana preconfigurata con dashboard per fornire una visualizzazione efficace dei risultati.
Puoi rilevare vari tipi di vulnerabilità come:
Per ora Bughound è in grado di analizzare codice PHP e JAVA e contiene un insieme di funzioni non sicure per questi linguaggi.
Farò in modo di aggiungere sempre più funzioni/copertura di linguaggi col tempo, ma per ora l'attenzione principale è sulla stabilità del progetto stesso.
Tieni presente che i risultati di Bughound non sono accurati al 100%; è stato creato per aiutarti a identificare potenziali debolezze durante l'analisi da approfondire.
Innanzitutto, Bughound costruirà un elenco di tutti i file all'interno del tuo progetto in base all'estensione dei file che desideri analizzare, poi leggerà ogni file e cercherà di trovare eventuali funzioni non sicure predefinite per il linguaggio del tuo progetto.
La fase di analisi si basa su espressioni regolari preconfigurate e su alcune corrispondenze testuali personalizzate per rilevare le potenziali vulnerabilità; quindi, ancora una volta, è necessaria un'analisi manuale per verificare se questi risultati sono sfruttabili.
Infine, invierà i risultati all'immagine Docker di Bughound, che ha Elasticsearch e Kibana preconfigurati con dashboard personalizzate per i tuoi risultati.
Le dashboard forniranno dettagli sui risultati, come:
Inoltre, utilizzando Kibana, potrai visualizzare lo snippet di codice potenzialmente vulnerabile per iniziare la fase di analisi e tracciamento e verificare se è sfruttabile o meno.
Naturalmente, se preferisci, puoi utilizzare il tuo stack ELK; Bughound effettuerà la configurazione iniziale per te, ma in questo caso non avrai le dashboard preconfigurate.
Puoi installare tutti i requisiti per eseguire il codice di Bughound usando il seguente comando:
pip3 install -r requirements.txt
Questo garantirà che tutti i requisiti siano installati per il codice.
Inoltre, devi installare Docker per eseguire l'immagine di Bughound; maggiori dettagli nella prossima sezione!
Se desideri utilizzare le tue istanze di Elasticsearch e Kibana, salta il passaggio di installazione di Docker
Assicurati di ottenere l'ultima versione di Bughound usando il seguente comando:
git clone https://github.com/mhaskar/Bughound
Dopo aver installato i requisiti nel passaggio precedente, puoi eseguire Bughound con il comando:
./bughound.py
Verrà visualizzata la schermata principale di 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]
└──╼ $
Per installare l'immagine Docker di Bughound, puoi semplicemente eseguire:
docker pull bughound/bughound
Questo scaricherà l'ultima versione dell'immagine e la salverà sulla tua macchina.
Una volta scaricata l'immagine, possiamo eseguirla con il seguente comando:
docker run --name bughound -p5601:5601 -p 9200:9200 bughound/bughound
Questo eseguirà l'immagine in un nuovo contenitore chiamato bughound ed esporrà le porte necessarie per la comunicazione di Elasticsearch e Kibana con il tuo host.
Potrebbe essere necessario aumentare la memoria virtuale massima per utilizzare l'immagine; assicurati di eseguire questo comando:
sysctl -w vm.max_map_count=262144
Dopo aver completato questi due passaggi, sei pronto per usare Bughound!
Per avviare il processo di analisi del tuo codice, devi usare il file Bughound.py che ha alcune opzioni. Per visualizzare queste opzioni tramite il banner di aiuto, puoi usare il 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]
└──╼ $
Ad esempio, per analizzare un progetto PHP locale, puoi usare il seguente comando:
./bughound.py --path /opt/dummyproject --language php --extension .php --name dummyproject
Questo comando creerà un nuovo progetto chiamato "dummyproject" nell'indice Elasticsearch, analizzerà tutti i file locali con estensione ".php" nel percorso locale "/opt/dummyproject" e invierà i risultati a Elasticsearch.
Inoltre, puoi scaricare un progetto remoto da un repository Git usando l'opzione --git come segue:
./bughound.py --git https://github.com/DummyCode/DummyProject --language php --extension .php --name dummyproject
Bughound clonerà il codice per te e lo salverà nella directory projects, quindi lo analizzerà.
Se hai deciso di utilizzare l'immagine Docker ufficiale di Bughound, riceverai un paio di dashboard pronte all'uso che ti aiuteranno nell'analisi.
Finora sono disponibili le seguenti dashboard:
Queste dashboard ti forniranno statistiche sulle funzioni e gli snippet di codice trovati nel codice, in modo che tu possa iniziare il processo di analisi.
Per maggiori informazioni su Bughound, consulta i seguenti articoli:
Questo progetto è concesso in licenza sotto la licenza GPL-3.0 - consulta il file LICENSE per i dettagli.