dependency-check は、プロジェクトの依存関係に含まれる公開された脆弱性の検出を試みるソフトウェア構成分析 (SCA) ツールです。これは、特定の依存関係に Common Platform Enumeration (CPE) 識別子があるかどうかを判断することによって行われます。見つかった場合は、関連する CVE エントリにリンクするレポートが生成されます。
ドキュメントと実稼働バイナリ リリースへのリンクは、github ページにあります。さらに、アーキテクチャと依存関係チェックを拡張する方法の詳細については、Wiki を参照してください。
この製品は NVD API を使用していますが、NVD によって承認または認定されていません。
Java 11 では、依存関係チェック 11.0.0 以降を実行する必要があります。
H2データベースのアップグレード
11.0.0 には、ローカル H2 データベースを使用する重大な変更が含まれています。 NVD データの完全なダウンロードが行われます。共有データ ディレクトリを使用している場合、h2 データベース ファイルは古いバージョンの dependency-check と互換性がないことに注意してください。問題が発生した場合は、パージを実行する必要がある場合があります。
./gradlew dependencyCheckPurge
mvn org.owasp:dependency-check-maven:9.0.0:purge
dependency-check.sh --purge
10.0.2 以降へのアップグレードが必須です
古いバージョンの依存関係チェックでは、処理エラーに終わる多数の重複リクエストが発生し、NVD API に不必要な負荷を引き起こしています。依存関係チェック 10.0.2 は、NVD が古いクライアントからの呼び出しをブロックできるようにする更新されたUser-Agent
ヘッダーを使用します。
依存関係チェックは、NVD データ フィードの使用から NVD API に移行しました。 dependency-check のユーザーは、NVD API キーを取得することを強くお勧めします。 https://nvd.nist.gov/developers/request-an-api-key を参照してください。NVD API キーの依存関係がないと、チェックの更新は非常に遅くなります。 NVD API キーの設定方法については、cli、maven、gradle、または ant 統合のドキュメントを参照してください。
NVD API にはレート制限が適用されます。単一の API キーを使用していて複数のビルドが発生すると、レート制限に達して 403 エラーが発生する可能性があります。 CI 環境では、キャッシュ戦略を使用する必要があります。
9.0.0 では、依存関係の解決によりNoSuchMethodError
例外が発生する問題が発生する可能性があります。この問題が発生した場合は、依存関係チェックの推移的な依存関係の一部を特定のバージョンに固定する必要があります。例えば:
/buildSrc/build.gradle
dependencies {
constraints {
// org.owasp.dependencycheck needs at least this version of jackson. Other plugins pull in older versions..
add( " implementation " , " com.fasterxml.jackson:jackson-bom:2.16.1 " )
// org.owasp.dependencycheck needs these versions. Other plugins pull in older versions..
add( " implementation " , " org.apache.commons:commons-lang3:3.14.0 " )
add( " implementation " , " org.apache.commons:commons-text:1.11.0 " )
}
}
最小 Java バージョン: Java 11
OWASP の依存関係チェックでは、外部でホストされているいくつかのリソースへのアクセスが必要です。詳細については、「インターネット アクセスが必要」を参照してください。
一部のテクノロジー スタックの依存関係を分析するには、他の開発ツールのインストールが必要になる場合があります。以下にリストされている分析の一部は実験的なものである場合があり、実験用アナライザーを有効にする必要があります。
go
インストールする必要があります。Elixir
プロジェクトの分析にはmix_audit
が必要です。npm
、 pnpm
、およびyarn
プロジェクトの分析には、 npm
、 pnpm
、またはyarn
がインストールされている必要があります。audit
機能が利用されます。bundle-audit
のラッパーであり、インストールする必要があります。 Jenkins プラグインの使用方法については、OWASP 依存関係チェック プラグインのページを参照してください。
より詳細な手順については、依存関係チェックの github ページを参照してください。最新の CLI は、github のリリース セクションからダウンロードできます。
最新リリースのダウンロード:
$ VERSION=$(curl -s https://jeremylong.github.io/DependencyCheck/current.txt)
$ curl -Ls "https://github.com/jeremylong/DependencyCheck/releases/download/v$VERSION/dependency-check-$VERSION-release.zip" --output dependency-check.zip
*ニックスについて
$ ./bin/dependency-check.sh -h
$ ./bin/dependency-check.sh --out . --scan [path to jar files to be scanned]
Windows の場合
> .bindependency-check.bat -h
> .bindependency-check.bat --out . --scan [path to jar files to be scanned]
Homebrew を使用する Mac の場合 注 - homebrew ユーザーが 5.x から 6.0.0 にアップグレードする場合は、 dependency-check.sh --purge
を実行する必要があります。
$ brew update && brew install dependency-check
$ dependency-check -h
$ dependency-check --out . --scan [path to jar files to be scanned]
より詳細な手順については、dependency-check-maven github ページを参照してください。デフォルトでは、プラグインはverify
フェーズ (つまりmvn verify
) に関連付けられています。あるいは、 mvn org.owasp:dependency-check-maven:check
を介してプラグインを直接呼び出すこともできます。
依存関係チェック プラグインは、次を使用して構成できます。
< project >
< build >
< plugins >
...
< plugin >
< groupId >org.owasp groupId >
< artifactId >dependency-check-maven artifactId >
< executions >
< execution >
< goals >
< goal >check goal >
goals >
execution >
executions >
plugin >
...
plugins >
...
build >
...
project >
Gradle プラグインの使用方法については、dependency-check-gradle github ページを参照してください。
Ant タスクの使用方法については、dependency-check-ant github ページを参照してください。
インストールを成功させるには、次のコンポーネントがインストールされている必要があります。
java -version
11.0mvn -version
3.5.0 以降テスト ケースには次のものが必要です。
go version
1.12 以降次の手順は、現在のスナップショットをコンパイルして使用する方法の概要を示しています。安定したスナップショットを維持することがあらゆる目的ですが、上記のリリース バージョンを使用することをお勧めします。
リポジトリには、テスト リソースのため、大きなファイルがいくつかあります。チームは可能な限り歴史を清算しようと努めてきた。ただし、時間を節約するために浅いクローンを実行することをお勧めします。
git clone --depth 1 https://github.com/jeremylong/DependencyCheck.git
*ニックスについて
$ mvn -s settings.xml install
$ ./cli/target/release/bin/dependency-check.sh -h
$ ./cli/target/release/bin/dependency-check.sh --out . --scan ./src/test/resources
Windows の場合
> mvn -s settings.xml install
> .clitargetreleasebindependency-check.bat -h
> .clitargetreleasebindependency-check.bat --out . --scan ./src/test/resources
次に、結果の「dependency-check-report.html」をお気に入りのブラウザにロードします。
ターンアラウンド サイクル タイムを短縮するために、毎回テストを実行せずにコンパイルすることもできます。
mvn -s settings.xml install -DskipTests=true
PR を開く前に、少なくとも 1 回はテストを実行することを忘れないでください。 :)
IntelliJ Idea でテストをデバッグできるようにするには、テストを実行し、ブレークポイントなどを使用したデバッグを有効にする Maven 構成を導入できます。
基本的には、https://www.jetbrains.com/help/idea/work-with-tests-in-maven.html#run_single_test で説明されている内容を実行し、 forkCount
0 に設定します。そうしないと、デバッグが機能しません。
段階的に:
Run -> Edit Configurations
+ (Add new configuration) -> Maven
Run tests
core
など) を選択しますcommand line
で、 -DforkCount=0 -f pom.xml -s ../settings.xml test
と入力します。OK
を押しますRun -> Debug
、新しく作成した実行構成を選択します。 IntelliJ は、デバッグを有効にしてcore
サブプロジェクトのテスト実行を実行します。コード内の任意の場所に設定されたブレークポイントは機能するはずです。
ターンアラウンド サイクル タイムを短縮したい場合は、1 つの関数または 1 つのテスト クラスだけをテストすることもできます。
これは、実行構成に-Dtest=MyTestClass
または-Dtest=MyTestClass#myTestFunction
を追加することで機能します。実行構成内の完全なコマンド ラインは次のようになります。
-Dtest=MyTestClass#myTestFunction -DforkCount=0 -f pom.xml -s ../settings.xml test
次の例では、チェック対象のソースが現在の作業ディレクトリにあり、レポートが$(pwd)/odc-reports
に書き込まれることを前提としています。永続データとキャッシュ ディレクトリが使用されるため、実行後にコンテナを破棄できます。
Linuxの場合:
#! /bin/sh
DC_VERSION= " latest "
DC_DIRECTORY= $HOME /OWASP-Dependency-Check
DC_PROJECT= " dependency-check scan: $( pwd ) "
DATA_DIRECTORY= " $DC_DIRECTORY /data "
CACHE_DIRECTORY= " $DC_DIRECTORY /data/cache "
if [ ! -d " $DATA_DIRECTORY " ] ; then
echo " Initially creating persistent directory: $DATA_DIRECTORY "
mkdir -p " $DATA_DIRECTORY "
fi
if [ ! -d " $CACHE_DIRECTORY " ] ; then
echo " Initially creating persistent directory: $CACHE_DIRECTORY "
mkdir -p " $CACHE_DIRECTORY "
fi
# Make sure we are using the latest version
docker pull owasp/dependency-check: $DC_VERSION
docker run --rm
-e user= $USER
-u $( id -u ${USER} ) : $( id -g ${USER} )
--volume $( pwd ) :/src:z
--volume " $DATA_DIRECTORY " :/usr/share/dependency-check/data:z
--volume $( pwd ) /odc-reports:/report:z
owasp/dependency-check: $DC_VERSION
--scan /src
--format " ALL "
--project " $DC_PROJECT "
--out /report
# Use suppression like this: (where /src == $pwd)
# --suppression "/src/security/dependency-check-suppression.xml"
Windowsの場合:
@ echo off
set DC_VERSION = " latest "
set DC_DIRECTORY = %USERPROFILE% OWASP-Dependency-Check
SET DC_PROJECT = " dependency-check scan: %CD% "
set DATA_DIRECTORY = " %DC_DIRECTORY% data "
set CACHE_DIRECTORY = " %DC_DIRECTORY% datacache "
IF NOT EXIST %DATA_DIRECTORY% (
echo Initially creating persistent directory: %DATA_DIRECTORY%
mkdir %DATA_DIRECTORY%
)
IF NOT EXIST %CACHE_DIRECTORY% (
echo Initially creating persistent directory: %CACHE_DIRECTORY%
mkdir %CACHE_DIRECTORY%
)
rem Make sure we are using the latest version
docker pull owasp/dependency-check: %DC_VERSION%
docker run --rm ^
--volume %CD% :/src ^
--volume %DATA_DIRECTORY% :/usr/share/dependency-check/data ^
--volume %CD% /odc-reports:/report ^
owasp/dependency-check: %DC_VERSION% ^
--scan /src ^
--format " ALL " ^
--project " %DC_PROJECT% " ^
--out /report
rem Use suppression like this: (where /src == %CD%)
rem --suppression "/src/security/dependency-check-suppression.xml"
依存関係チェックを構築するには (Java 11 を使用)、次のコマンドを実行します。
mvn -s settings.xml install
依存関係チェックは、テスト リソースとして以外に使用されることのない、いくつかの脆弱な依存関係を参照します。これらのオプションのテスト依存関係はすべてtest-dependencies
プロファイルに含まれています。それ自体に対して依存関係チェックを実行するには、単純にtest-dependencies
プロファイルを除外します。
mvn org.owasp:dependency-check-maven:aggregate -P-test-dependencies -DskipProvidedScope=true
github ページのドキュメントは、次のリポジトリから生成されます。
mvn -s settings.xml site site:staging
完了したら、ブラウザで./target/staging/index.html
を参照します。
依存関係チェックの Docker イメージを構築するには、次のコマンドを実行します。
mvn -s settings.xml install
./build-docker.sh
変更および再配布の許可は、Apache 2.0 ライセンスの条項に基づいて付与されます。完全なライセンスについては、LICENSE.txt ファイルを参照してください。
dependency-check は、他のいくつかのオープン ソース ライブラリを利用します。詳細については、NOTICE.txt ファイルを参照してください。
この製品は NVD API を使用していますが、NVD によって承認または認定されていません。
著作権 (c) 2012-2024 ジェレミー ロング。無断転載を禁じます。