本稿では、ウェブアプリケーションに組み込まれている脆弱性が存在するコンポーネントの洗い出しに有用な、OWASPコミュニティより公開されているツール「OWASP Dependency Check」の概要および利用方法について解説します。
はじめに
本連載の第1回では、ウェブアプリケーションにおける重要なインパクトのある10のセキュリティリスクについてまとめた「OWASP Top 10」について紹介しました。
この「OWASP Top 10」には「A9 既知の脆弱性を持つコンポーネントの使用」という脆弱性項目があるのをご存知でしょうか?
この脆弱性項目は、2013年からOWASP Top 10に新たに加わりました。この項目では、稼働しているアプリケーションにおいて脆弱性が報告されているコンポーネントを利用している場合には、既知の脆弱性を悪用され、攻撃を受けてしまう可能性があることについて解説しています。
存在する脆弱性の内容によって影響度は異なりますが、広く利用されているようなコンポーネントに脆弱性が存在した場合には、攻撃者に狙われる可能性があるでしょう。ここ数年で何度も話題となっているApache Strutsの脆弱性などはまさにその一例です。
このような脆弱性が悪用されるリスクを軽減するには、以下のような対策が必要です。
- 定期的なアップデートにより脆弱性が修正された最新バージョンのコンポーネントを利用
- 脆弱なコンポーネントを使わないこと、あるいは脆弱な機能の無効化など設定変更による脆弱性の回避
上記を徹底するためには、稼働しているアプリケーションにおける利用コンポーネントの種類の把握、バージョン情報の管理、そして定期的に脆弱性情報を収集する必要があります。しかし、実際に行うことはなかなか大変でしょう。対応したいが、時間や人的リソースが足りないので、正直そこまで手が回らないというようなケースも多いのではないでしょうか。中には、そもそもコンポーネントの使用有無さえ把握していないという場合もあるかもしれません。
そこで、本稿でご紹介するOWASP Dependency Checkを利用すれば、上記に該当するような脆弱性をある程度自動的に洗い出すことが可能です。OWASP Dependency Checkを利用して、アプリケーションが脆弱なコンポーネントを利用していないか、チェックをしてみましょう!
OWASP Dependency Checkとは
OWASP Dependency Checkは指定したウェブアプリケーションプロジェクトファイルの依存関係を解析し、アプリケーションが利用している既知の脆弱性が存在するコンポーネントについて報告してくれるツールです。オープンソースライセンスで公開されているため、無料で利用することができます。
2016年8月1日時点の最新バージョンは1.4.2であり、以下の言語で開発されたプロジェクトファイルへのスキャンに対応しています。
- Java、.NET
- Ruby、Node.js、Python、C/C++(CMakeもしくはautoconfを利用している場合のみ)は実験的にサポート
OWASP Dependency Checkには、CUIツールが提供されています。本稿では主にCUIでのスキャン実行について解説します。なお、後で少し触れますがCUI以外にもビルドツールなどと連携できるようなプラグインも公開されています。