公開:2022.05.16 10:00 | 更新: 2022.08.09 07:27
近年、Log4jなど開発プロジェクトに依存するライブラリでの脆弱性が大きな話題になりました。
弊社ブログでも過去にその話題を取り上げております。
【3分解説】危険すぎるLog4jの脆弱性(Log4Shell)
既に公開されているOSSライブラリを利用するプロジェクト開発が主流になっておりLog4jもその1つでした。
その後もSpring4Shellの脆弱性と続々と脆弱性の報告がでてきております。
脆弱性レポートの報告に気づければ迅速な対応ができますが、何らかの理由により報告に気づくことができなかった場合は脆弱性を含むサービス(ソフトウェア)を公開し続けるという危険な状態に陥ってしまいます。
その対策の1つとして「OWASP Dependency-Check」というOWASPが公開している依存関係チェックを紹介したいと思います。
「OWASP Dependency-Check」を簡単に説明しますと、プロジェクトに依存するライブラリ内に既知の脆弱性を使用していないか検査する分析ツールとなります。
現時点で「OWASP Dependency-Check」は次のコアエンジンで使用できるようです。
今回はMavenプラグインを利用し、「OWASP Dependency-Check」を使ってみたいと思います。
Mavenプロジェクトのpom.xmlに「OWASP Dependency-Check」のプラグインを追加します。
また、脆弱性のあった以下のライブラリを使用してみたいと思います。
「dependency-check:check」で依存関係チェックを実行します。
なお、初回の実行は、NIST(※1)がホストするNational Vulnerability Database(NVD)からデータをダウンロードしますのでチェック処理に数分かかりますが、2回目以降の依存関係チェックは、データ更新のみとなりますので初回より早くチェックが完了します。
実行後、RunコンソールにWARNINGとして3つのライブラリに脆弱性するメッセージが出力されました。
Log4jライブラリ、Springライブラリに対してチェックされているのが確認できます。
依存関係チェックでレポート「dependency-check-report.html」が作成され、検知したライブラリの脆弱性情報が出力されてます。
脆弱性の対応方法として、脆弱性に対応したライブラリに更新する、脆弱性に関連したライブラリの使用を行っていないか調査するなどがあります。
今回の例としては脆弱性に対応したライブラリに更新を行ってみたいと思います。
Log4jライブラリ(2.14.0→2.17.2)、Springライブラリ(5.2.4.RELEASE→5.3.19)のバージョンを更新し、再度依存関係チェックを実行します。
先ほどとは異なり、RunコンソールにWARNINGの出力がされませんでした。
レポート「dependency-check-report.html」も確認すると、脆弱性の検知数も0件となりました。
依存関係チェックとして「OWASP Dependency-Check」というOWASPが公開している依存関係チェックを紹介しました。
脆弱性チェックとして開発中ソース内はもちろんですが、使用(依存)しているライブラリ(そのライブラリ内で使用しているライブラリ)の脆弱性チェックも必要になります。
Mavenプロジェクトの場合、pom.xmlより脆弱性対象バージョンのライブラリを使用していないか調査することは可能ですが、ライブラリ内で使用しているライブラリに対する調査はpom.xmlからでは困難です。
「OWASP Dependency-Check」の導入はプラグインを追加するのみですので、お手軽に脆弱性チェックが可能になります。
開発プロジェクトで過去に脆弱性報告があったが気づけていない脆弱性が存在しないかの調査方法として、「OWASP Dependency-Check」を導入してみてはいかがでしょうか?
解説
※1 NIST:National Institute of Standards and Technology
National Vulnerability Database(NVD)
出典
OWASP:OWASP Dependency-Check
OWASP:OWASP Dependency-Check Mavenプラグイン
LOADING...