Dependency-Check 是一種軟體組合分析 (SCA) 工具,它嘗試偵測專案依賴項中包含的公開揭露的漏洞。它透過確定給定依賴項是否存在通用平台枚舉 (CPE) 標識符來實現此目的。如果找到,它將產生連結到相關 CVE 條目的報告。
文件和生產二進位版本的連結可以在 github 頁面上找到。此外,有關架構和擴展依賴性檢查的方法的更多資訊可以在 wiki 上找到。
本產品使用 NVD API,但未經 NVD 認可或認證。
現在需要 Java 11 才能執行依賴項檢查 11.0.0 或更高版本
H2資料庫升級
11.0.0 包含使用本地 H2 資料庫的重大變更。將進行 NVD 資料的完整下載。請注意,如果您使用共用資料目錄,則 h2 資料庫檔案與舊版本的依賴項檢查不相容。如果遇到問題,您可能需要執行清除:
./gradlew dependencyCheckPurge
mvn org.owasp:dependency-check-maven:9.0.0:purge
dependency-check.sh --purge
必須升級到 10.0.2 或更高版本
舊版本的依賴檢查會導致大量重複請求,最終導致處理失敗,從而導致 NVD API 上產生不必要的負載。相依性檢查 10.0.2 使用更新的User-Agent
標頭,該標頭將允許 NVD 阻止來自舊客戶端的呼叫。
依賴性檢查已從使用 NVD 資料饋送轉移到 NVD API。強烈鼓勵依賴性檢查的使用者取得 NVD API 金鑰;請參閱 https://nvd.nist.gov/developers/request-an-api-key 如果沒有 NVD API 金鑰依賴性檢查的更新將非常緩慢。請參閱 cli、maven、gradle 或 ant 整合的文檔,以了解如何設定 NVD API 密鑰。
NVD API 具有強制的速率限制。如果您使用單一 API KEY 並且發生多個構建,您可能會達到速率限制並收到 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 相依性檢查需要存取多個外部託管資源。有關詳細信息,請參閱需要 Internet 存取。
為了分析某些技術堆疊依賴性檢查可能需要安裝其他開發工具。下面列出的一些分析可能是實驗性的,需要啟用實驗分析器。
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
在 *nix 上
$ ./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 上註意 - 從 5.x 升級到 6.0.0 的 homebrew 用戶將需要運行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
在 *nix 上
$ 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 之前至少執行一次測試。 :)
為了能夠在 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
子專案執行測試運行。在程式碼中的任何位置設定的斷點都應該有效。
如果您想加快週轉週期,您也可以只測試一項功能或一項測試類別。
這可以透過將-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 傑里米·朗。版權所有。