SonarQube の plugin に、OWASP Dependency-Check を実施して、Check 結果を収集する plugin がありました。
インストール、使用してみた結果を記載します。


前提

以下の環境で作業は実施しています。

  • OS

    % sw_vers 
    ProductName:    Mac OS X
    ProductVersion: 10.12.6
    BuildVersion:   16G29
    

  • SonarQubeのVersion
    SonarQube 6.5


Plugin 紹介ページと Github repository へのリンク

以下、Plugin紹介ページのリンクとGithub repository へのリンク になります。
* Plgin紹介ページ
OWASP Dependency-Check - SonarQube Plugins


OWASP Dependency-Check とは

OWASP Dependency-Check は、アプリケーションが脆弱性のあるライブラリを使用しているかどうかをチェックしてくれるツールになります。
このplugin を使うことでOWASP Dependency-Check の結果がSonarQube 上に収集されます。
以下、OWASP に関する文書へのリンクになります。

Owasp Project の説明へのリンク

OWASP Dependency Check 自体の説明

Cheat Sheet 文書 へのリンク


前提

SonarQube の OWASP Dependency-Check plugin を使う前提として、Dependency-Check Reports 自体を出力する必要があります。
私は、maven-plugin を使ってレポートxml を 出力しました。
maven plugin 自体の設定は、以下の記事を参考にしました。

pom.xml の抜粋

以下の設定で、targetディレクトリの直下に、dependency-check-report.xml が出力されるようになります。

<build>
    <plugins>
        <!-- dependency-check-maven -->
        <plugin>
            <groupId>org.owasp</groupId>
            <artifactId>dependency-check-maven</artifactId>
            <version>2.1.0</version>
            <configuration>
                <format>XML</format>
            </configuration>
            <executions>
                <execution>
                    <goals>
                        <goal>check</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>


インストール

目下 version 6.x 向けに対応中のようで、release jar が、version 5.x のものしか存在しなかったため、
git リポジトリを clone して jar を固めるところから実施しました。

  • リポジトリをcloneする

    git clone https://github.com/stevespringett/dependency-check-sonar-plugin.git
    

  • コンパイル

    cd dependency-check-sonar-plugin
    mvn clean package
    
    Junitテストでexception が出力されますが、BUILD SUCCESS します。

  • plugin jar ファイルをSonarQube の extention ディレクトリにコピー
    私が使用しているMacでは以下が、extention ディレクトリとなります。
    環境に応じて読み替えてください。

    cd target/
    cp sonar-dependency-check-plugin-1.1.0-SNAPSHOT.jar /usr/local/Cellar/sonarqube/6.5/libexec/extensions/plugins/
    
    コピー後は、SonarQubeを再起動する必要があります。


OWASP Dependency-Check の チェック結果の収集

コマンド実行

SonarQube 起動後に、解析対象プロジェクトで、以下のmvn コマンドを実行します。

mvn sonar:sonar -Dsonar.dependencyCheck.reportPath=target/dependency-check-report.xml
上記は、-Dオプションでreportのファイルパスを指定していますが、pom.xml 経由での設定、
sonar-project.properties での設定も可能です。
それぞれ以下のStack Overflow の記事が参考になるかと思います。

データ収集後の画面表示イメージ

Issues に、脆弱性として記録されます。
作成中のJavaアプリケーションのレポートを収集させたところ 70 ほど脆弱性が増加しました。。
Issues
上記、issue の1つをクリックした後の画面表示になります。
プロジェクトリソースとして警告対象のファイルを保持しているわけではないので、ファイルが削除されているような表示になります。
このへんは若干残念です。
File

以上、OWASP Dependency-Check plugin のインストール、使用方法となります。
ソースコードメトリクスデータの登録先となるSonarQube に OWASP の警告も取り込めるのは便利かもしれません。
OWASP 関連だと OWASP ZAP の警告を SonarQube に 取り込む plugin もありました。
stevespringett/zap-sonar-plugin: Integrates OWASP Zed Attack Proxy reports into SonarQube
そちらも機会があれば使ってみようかと思います。
以上です。

コメント