スキャンの実行
では、OWASP Dependency Checkを利用してアプリケーションのプロジェクトファイルをスキャンしてみましょう!
なお、本ツールを利用するためには、Java環境が必要となります。必要に応じてJava Runtime Environment(JRE)のインストールを実施してください。
以下のサイトよりOWASP Dependency Checkをダウンロードしましょう。
サイト右側のQuick Downloadの項目における「Command Line」のリンクをクリックすることで、CUI版のツール(ZIPファイル)をダウンロードできます。また後述する各種ビルドツールのプラグインに関するサイトへのリンクもこちらに掲載されています。
上記サイトよりダウンロードしたZIPファイルに含まれているシェルスクリプトファイルやバッチファイルに、以下のオプションを指定して実行することでスキャンが可能です。
$ ./bin/dependency-check.sh --project プロジェクト名 --scan スキャン対象のパス
> bin\dependency-check.bat --project プロジェクト名 --scan スキャン対象のパス
Mac環境ではHomebrewを利用してインストールが可能です。
$ brew update && brew install dependency-check $ dependency-check --project プロジェクト名 --scan スキャン対象のパス
スキャンを実行する際には、--projectオプションでプロジェクト名、--scanオプションでスキャン対象のパスを必ず引数として指定する必要があります。
他に、基本となるコマンドオプションには以下のようなものがあります。
コマンドラインオプション | 内容 |
---|---|
--advancedHelp | ヘルプに拡張オプションを表示 |
--cveValidForHours | 自動アップデートを実行するまでの時間間隔の指定 |
--exclude | スキャンから除外するパスパターンの指定 |
-f,--format <format> |
レポートフォーマットの指定 (XML, HTML, VULN, ALL) デフォルトではHTMLが選択、VULNは簡易的なCVE情報の一覧レポート |
-h,--help | ヘルプを表示 |
-l,--log |
指定したファイルに詳細ログを出力 |
-n,--noupdate | 指定すると自動アップデートを実施しない |
-o,--out |
レポートを出力するフォルダパスの指定 |
-P,--propertyfile |
読み込むプロパティファイルの指定 |
--project |
スキャンするプロジェクト名の指定 プロジェクト名はレポートに出力される |
-s,--scan |
スキャン対象のパスを指定 |
--suppression |
XMLファイルを指定することによって誤検出を診断結果より削除可能 |
--symLink |
シンボリックリンクをたどるネスト(入れ子)の深さを指定 デフォルトは0でシンボリックリンクはたどらない |
-v,--version | バージョン情報の表示 |
なお、基本オプション以外の拡張オプションも含め、オプションの詳細については以下サイトにまとまっているので、よろしければご参照ください。
さて、コマンドプロンプトで、解凍したOWASP Dependency Checkのディレクトリに移動し、以下のとおりコマンドを実行します。
> bin\dependency-check.bat --project sampletest --scan testapp
ここでは、「sampletest」というプロジェクト名で、同名のフォルダに配置している「testapp」ディレクトリ配下のファイルをスキャンし、結果をレポートに出力をすることを想定しています。ご自分で試される場合には--scanオプションにスキャンを実行したいプロジェクトファイルのパスをご指定ください。
コマンドを実行すると、以下のようにスキャン実行のステータスが出力されていきます。
「Analysis Complete」と表示されればスキャン完了です。なお、初回実行時にはNVDデータを丸ごとダウンロードするため、少し時間がかかります。
スキャン完了後にフォルダを確認すると「dependency-check-report.html」というファイルが生成されています。これが、スキャン結果レポートです。実は、コマンドオプションで出力先(-o)やレポート形式(-f )などの指定が可能です。レポート形式はHTML(検出したCVE情報一覧だけの簡易レポートも選択可能)のほか、XMLを選択可能です。