31
31

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

依存ライブラリの脆弱性チェック

Posted at

OWASP Depedency Check

OWASP Dependency Check

Dependency-Check is a utility that identifies project dependencies and checks if there are any known, publicly disclosed, vulnerabilities. Currently Java and .NET dependencies are supported; however, support for Node.JS, client side JavaScript libraries, etc. is planned.

とあるように、未知の脆弱性ではなく、既知の脆弱性を含むライブラリを検査してくれます。
このツールは、常にライブラリのバージョンを最新にしている開発チームでは必要がないと思う。けれども、なかなかライブラリのバージョンを上げようとはしない開発チーム(or上司)に対して、バージョンを上げる説得材料を提供してくれるます。

実行方法

Maven でも実行できるけれども、Ant の場合は以下のようなスクリプトです。このスクリプトは OWASP Dependency Check のダウンロードからタスクの定義、検査までを実行します。またレポートを HTML で出力しているけれども、Jenkins のプラグインと連携する場合は、 reportformat="XML" に変更してください。

build.xml
<project>
    <!-- OWASP Dependency Check のバージョン -->
    <property name="dependency.check.version" value="1.2.4" />
    <!-- OWASP Dependency Check のダウンロード先ディレクトリ -->
    <property name="dependency.check.lib.dir" location="target/vendor/dependency-check" />
    <!-- OWASP Dependency Check のファイル名 -->
    <property name="dependency.check.filename" value="dependency-check-ant-${dependency.check.version}.jar" />
    <!-- OWASP Dependency Check のダウンロード先ファイルパス -->
    <property name="dependency.check.jar" location="${dependency.check.lib.dir}/${dependency.check.filename}" />
    <!-- OWASP Dependency Check のダウンロード元URL -->
    <property name="dependency.check.url" value="http://dl.bintray.com/jeremy-long/owasp/${dependency.check.filename}" />

    <!-- 依存ライブラリを置いているディレクトリ -->
    <property name="dependency.check.target.dir" location="lib/runtime" />

    <target name="dependency-check.html"
            description="依存ライブラリの脆弱性を検査する"
            depends="-dependency-check.jar">
      <taskdef name="dependency-check"
               classname="org.owasp.dependencycheck.taskdefs.DependencyCheckTask">
        <classpath location="${dependency.check.jar}" />
      </taskdef>

      <dependency-check applicationname="Sample Application"
                        autoupdate="true"
                        reportoutputdirectory="${target.dir}"
                        reportformat="HTML">
        <fileset dir="${dependency.check.target.dir}">
          <include name="*.jar"/>
        </fileset>
      </dependency-check>
    </target>

    <!-- OWASP Dependency Check をダウンロードする -->
    <target name="-dependency-check.jar"
            depends="-downloaded.dependency-check.jar"
            unless="downloaded.dependency-check.jar">
      <delete dir="${dependency.check.lib.dir}">
        <include name="*.jar" />
      </delete>
      <mkdir  dir="${dependency.check.lib.dir}" />
      <get src="${dependency.check.url}" dest="${dependency.check.lib.dir}" />
    </target>

    <!-- OWASP Dependency Check をダウンロード済みかチェックする -->
    <target name="-downloaded.dependency-check.jar">
      <available property="downloaded.dependency-check.jar"
                 file="${dependency.check.jar}" />
    </target>
</project>

初回実行時は20〜30分くらいかかるので、コーヒーでも飲んで気長に待ってください。

31
31
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
31
31

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?