

Bughoundは、オープンソースの静的コード解析ツールです。コードを解析し、その結果をElasticsearchとKibanaに送信することで、コード内の潜在的な脆弱性に関する有用な洞察を得ることができます。
Bughoundには、事前設定済みのダッシュボードを備えた独自のElasticsearchおよびKibana Dockerイメージが用意されており、検出結果を強力に可視化できます。
以下のようなさまざまな種類の脆弱性を検出できます。
現在、BughoundはPHPおよびJAVAコードを解析でき、これらの言語向けの安全でない関数群が含まれています。
今後、さらに多くの関数や言語を追加していく予定ですが、現時点ではプロジェクトの安定性自体に主眼を置いています。
Bughoundの結果は100%正確ではないことに注意してください。これは、分析中に潜在的な弱点を特定するための支援ツールとして構築されています。
まず、Bughoundは監査したいファイルの拡張子に基づいてプロジェクト内の全ファイルのリストを作成し、各ファイルを読み込んでプロジェクトの言語向けに事前定義された安全でない関数を探します。
解析フェーズでは、事前設定された正規表現とカスタムテキストマッチングを使用して潜在的な脆弱性を検出します。そのため、これらの検出結果が悪用可能かどうかを確認するには、手動による解析が必要です。
最後に、結果をBughoundのDockerイメージ(事前設定済みのElasticsearchとKibana、および検出結果用のカスタマイズされたダッシュボードを含む)に送信します。
ダッシュボードでは、検出結果に関する以下のような詳細情報が提供されます。
また、Kibanaを使用して、潜在的に脆弱なコードスニペットを表示し、解析とトレースを開始して悪用可能かどうかを確認できます。
もちろん、独自のELKスタックを使用することも可能で、その場合Bughoundが初期設定を行いますが、事前設定されたダッシュボードは利用できなくなります。
以下のコマンドを使用して、Bughoundコードの実行に必要な要件をすべてインストールできます。
pip3 install -r requirements.txt
これにより、コードに必要なすべての要件がインストールされます。
また、Bughoundイメージを実行するにはDockerのインストールが必要です。詳細は次のセクションで説明します。
独自の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]
└──╼ $
BughoundのDockerイメージをインストールするには、以下のように実行します。
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
この2つを完了すれば、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
このコマンドは、Elasticsearchインデックスに「dummyproject」という新しいプロジェクトを作成し、ローカルパス「/opt/dummyproject」内の拡張子「.php」の全ファイルをクロールし、結果をElasticsearchに送信します。
また、--gitスイッチを使用して、リモートプロジェクトをGitリポジトリからプルすることもできます。例:
./bughound.py --git https://github.com/DummyCode/DummyProject --language php --extension .php --name dummyproject
Bughoundはコードをクローンしてprojectsディレクトリに保存し、その後スキャンを実行します。
公式のBughound Dockerイメージを使用する場合、解析に役立ついくつかのすぐに使えるダッシュボードが提供されます。
現在利用可能なダッシュボードは以下の通りです。
これらのダッシュボードは、コード内で見つかった関数やコードスニペットに関する統計情報を提供し、解析プロセスを開始するのに役立ちます。
Bughoundの詳細については、以下の記事を参照してください。
このプロジェクトはGPL-3.0ライセンスの下でライセンスされています。詳細はLICENSEファイルを参照してください。