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 杰里米·朗。版权所有。