この記事ではOWASP Dependency-Checkを用いてJavaで書かれたプロダクトが依存しているライブラリの脆弱性をスキャンするまでの方法を記述しています。自分がMacユーザーなのでMacユーザー対象に書いていますが、公式ドキュメント等読めば*nixやWindows向けの導入も書いてあるので参考にしてみてください。
OWASP Dependency-Checkとは
- wiki: https://www.owasp.org/index.php/OWASP_Dependency_Check
- github: https://github.com/jeremylong/DependencyCheck
- github.io: https://jeremylong.github.io/DependencyCheck/
OWASP Dependency-Checkはオープンソースの脆弱性スキャンツールです。特にこれはプロダクトが依存しているライブラリ(jar等)をスキャンしてバージョンを調べ、既存の脆弱性情報と照らし合わせて脆弱性が無いかを調べてくれます。具体的に言うと、Javaでは lib/
以下の .jar
ファイルを、Rubyでは .gemspec
をスキャンします。スキャンの結果はXMLやHTML、VULN形式で出力することが可能です。
このツールはCLIの他にJenkinsプラグイン形式、Mavenプラグイン形式などがあるので、用途に応じて必要なものを利用すると良いです。この記事ではCLI版を紹介します。
Dependency-Check CLIのインストール
Macの場合はHomebrewを利用していると非常にかんたんです。
% brew install dependency-check
% dependency-check --version
Dependency-Check Core version 1.4.5
*nixやWindowsは以下のページを参考にしてみてください。
http://jeremylong.github.io/DependencyCheck/dependency-check-cli/
Dependency-Check CLIを使ってスキャンする
今回は Jackson (https://github.com/codehaus/jackson) を使ってみることにします。
% git clone https://github.com/codehaus/jackson.git
% cd jackson
# --projectには識別出来る名前をつけます
# XMLで出力したい場合は `--format XML` オプションを付けます
% dependency-check --project "TestJackson-Dependency-Check" --scan lib/
# 初回だとここでNVDの長いダウンロードが始まります
# 略
[INFO] Analysis Complete (8 seconds)
% ls | grep dependency-check-report
dependency-check-report.html
dependency-check-report.html
が出力されていれば成功です。
出力結果を確認する
HTML形式の場合、Chromeなどのブラウザで開いて見てください。
すると以下のようなページを確認できます。
結果画面について、このツールを使おうと考えている人には細かく説明しなくても読めそうですし大変なので割愛させてください......
最後に
今回の記事ではOwasp Dependency-Checkのかんたんな説明と、CLIで基本的な動作をさせるところまで紹介しました。
今後はJenkinsでの導入方法やMavenに組み込む方法等、あまり日本語情報が無いものについて紹介したいと思っています。
[追記] 2017/04/28
dependency-check maven plugin版の記事を書きました
http://qiita.com/0x003f/items/c853ff6b71b8ef1d4524