OWASP Dependency Checkの動作原理
以下の図は、OWASP Dependency Check実行時の処理を示したものです。調査対象のアプリケーションに対し、OWASP Dependency Checkがスキャンを実行し、特にコンポーネントなどへの依存関係について解析します。その収集情報と、NVDという脆弱性関連情報と比較し、レポートを出力するという流れです。
このNVD(National Vulnerability Database)とはNIST(米国国立標準技術研究所)が運営する脆弱性データベースです。OWASP Dependency CheckがダウンロードしているNVDのデータには製品情報であるCPE(※1)と脆弱性情報であるCVE(※2)が含まれています。
※1 CPE(Common Platform Enumeration):共通プラットフォーム一覧
CPE は情報システムを構成する、ハードウェア、ソフトウェアなどのプラットフォームを識別する共通の名称基準を目指し、米国政府の支援を受けた非営利団体の MITRE 社を中心に策定された仕様です。
以下のような形式で記述されるCPE名でプラットフォームを識別します。
cpe:/{種別}:{ベンダ名}:{製品名}:{バージョン}:{アップデート}:{エディション}:{言語}
※2 CVE(Common Vulnerabilities and Exposures)共通脆弱性識別子
CVEは個別製品中の脆弱性を対象として、MITRE社が採番している識別子です。プログラム上のセキュリティ問題を一意に識別するために、脆弱性に対して「CVE-西暦-連番」という構成の識別子が付与されています。
アプリケーションへのスキャン実行時にNVDデータのダウンロードを行うため、利用時にはインターネット接続できる環境が必要です。デフォルトでは、NVDデータのダウンロード時点から次回のスキャン実行時の期間が4時間以上経過している場合に自動アップデートを行います。なお、拡張オプションを利用することでProxyサーバを経由して脆弱性情報をダウンロードすることなども可能です。
NVDデータのダウンロード完了後、指定したプロジェクトファイルの依存関係について情報収集を行います。その後、収集した情報を元にダウンロードしたNVDのデータと照合を行い、依存ファイルのCPE名を特定します。最後に特定したCPE名と関連するCVE番号の脆弱性情報をレポートに情報を出力します。
上記のような流れで、ウェブアプリケーションにおける依存関係を解析し、最新の脆弱性情報と比較することで、脆弱性が報告されているコンポーネントがアプリケーションの中に含まれているかどうかについてのレポートを取得できるというわけです。