dependency-check/DependencyCheck

GitHub: dependency-check/DependencyCheck

OWASP 开源的软件成分分析工具,通过扫描项目依赖匹配 NVD 漏洞数据库,帮助开发者发现第三方组件中的已知安全漏洞。

Stars: 7447 | Forks: 1393

[![Maven Central](https://img.shields.io/maven-central/v/org.owasp/dependency-check-maven.svg)](https://mvnrepository.com/artifact/org.owasp/dependency-check-maven) [![Build and Deploy Snapshot](https://static.pigsec.cn/wp-content/uploads/repos/2026/02/42fe5fa342130710.svg)](https://github.com/dependency-check/DependencyCheck/actions/workflows/build.yml) [![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/843/badge)](https://bestpractices.coreinfrastructure.org/projects/843) [![Apache 2.0 License](https://img.shields.io/badge/license-Apache%202-blue.svg)](https://www.apache.org/licenses/LICENSE-2.0.txt) [![Black Hat Arsenal](https://static.pigsec.cn/wp-content/uploads/repos/2026/02/56d2e56226130711.svg)](https://www.blackhat.com/us-18/arsenal.html#jeremy-long) [![Black Hat Arsenal](https://static.pigsec.cn/wp-content/uploads/repos/2026/02/e1ee56d9d1130712.svg)](https://www.blackhat.com/us-15/arsenal.html#jeremy-long) [![Black Hat Arsenal](https://static.pigsec.cn/wp-content/uploads/repos/2026/02/a95988cebb130713.svg)](https://www.blackhat.com/us-14/arsenal.html#Long) [![Black Hat Arsenal](https://static.pigsec.cn/wp-content/uploads/repos/2026/02/5238fcb3d1130713.svg)](https://www.blackhat.com/us-13/arsenal.html#Long) # Dependency-Check Dependency-Check 是一款软件成分分析 (SCA) 工具,旨在检测项目依赖项中包含的已公开披露的漏洞。它通过确定给定的依赖项是否存在通用平台枚举 (CPE) 标识符来实现这一点。如果找到,它将生成一份链接到相关 CVE 条目的报告。 文档和正式二进制版本的链接可以在 [github pages](https://dependency-check.github.io/DependencyCheck) 上找到。此外,关于架构以及扩展 dependency-check 的方法的更多信息可以在 [wiki] 上找到。 ## 注意 本产品使用 NVD API,但未获得 NVD 的认可或认证。 ## 强制升级到 12.1.0+ 由于 NVD API 的兼容性变更,必须进行升级。有关更多信息,请参阅 [#7463](https://github.com/dependency-check/DependencyCheck/issues/7463)。 ## 11.0.0 版本中的破坏性变更 - 现在需要 Java 11 才能运行 dependency-check `11.0.0` 或更高版本 - H2 数据库升级 `11.0.0` 包含使用本地 H2 数据库的破坏性变更。将进行 NVD 数据的 完整下载。请注意,如果您使用的是共享数据目录, h2 数据库文件与旧版本的 dependency-check 不兼容。 如果遇到问题,您可能需要运行清除命令: - gradle: `./gradlew dependencyCheckPurge` - maven: `mvn org.owasp:dependency-check-maven:11.0.0:purge` - cli: `dependency-check.sh --purge` ## 其他注意事项 ### 强烈建议使用 NVD API 密钥 自 `9.0.0+`(2024 年 1 月)起,Dependency-check 已从使用 NVD 数据源转为使用 NVD API。 **强烈**鼓励 Dependency-check 的用户获取 NVD API 密钥;请参阅 https://nvd.nist.gov/developers/request-an-api-key 如果没有 NVD API 密钥,dependency-check 的更新将**极其缓慢**。 请参阅 cli、maven、gradle 或 ant 集成的文档,了解 如何设置 NVD API 密钥。 #### NVD API 密钥、CI 和速率限制 NVD API 强制执行速率限制。如果您使用单个 API 密钥并且 发生多次构建,您可能会达到速率限制并收到 403 错误。在 CI 环境中,必须使用缓存策略。 ### 现在使用 OSSIndex 需要 API 令牌 2025 年 9 月,Sonatype OSSIndex 开始强制要求使用 API 令牌。如果您 希望使用 Sonatype OSSIndex,则必须配置 Dependency-Check 以使用用户名和 API 令牌/密码;请参阅 https://ossindex.sonatype.org/doc/api-token。 如果没有 OSSIndex 凭据,Dependency Check 将**自动禁用 OSSIndex 分析器**。 请参阅 cli、maven、gradle 或 ant 集成的文档,了解 如何设置 OSSIndex 凭据。 ### Gradle 构建环境 对于 `9.0.0+` 版本,由于依赖解析问题,用户可能会遇到 `NoSuchMethodError` 异常。 如果遇到此问题,您需要将 dependency-check 的某些 传递依赖项固定到特定版本。例如: /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 版本:Java 11 ### 互联网访问 OWASP dependency-check 需要访问多个外部托管资源。 有关更多信息,请参阅 [Internet Access Required](https://dependency-check.github.io/DependencyCheck/data/index.html)。 ### 构建工具 为了分析某些技术栈,dependency-check 可能需要安装其他 开发工具。下面列出的一些分析可能是 实验性的,需要启用实验性分析器。 1. 要分析 .NET 程序集,必须安装 dotnet 8 运行时或 SDK。 - 可以分析针对其他运行时的程序集 - 但需要 8 来运行分析。 2. 如果分析 GoLang 项目,则必须安装 `go`。 3. `Elixir` 项目的分析需要 `mix_audit`。 4. `npm`、`pnpm` 和 `yarn` 项目的分析需要安装 `npm`、`pnpm` 或 `yarn`。 - 执行的分析利用各自的 `audit` 功能。 5. Ruby 的分析是对 `bundle-audit` 的封装,必须安装该工具。 ## 当前版本 ### Jenkins 插件 有关使用 Jenkins 插件的说明,请参阅 [OWASP Dependency-Check Plugin page](https://wiki.jenkins-ci.org/display/JENKINS/OWASP+Dependency-Check+Plugin)。 ### 命令行 更详细的说明可以在 [dependency-check github pages](https://dependency-check.github.io/DependencyCheck/dependency-check-cli/) 上找到。 最新的 CLI 可以从 github 的 [releases section](https://github.com/dependency-check/DependencyCheck/releases) 下载。 下载最新版本: ``` $ VERSION=$(curl -s https://dependency-check.github.io/DependencyCheck/current.txt) $ curl -Ls "https://github.com/dependency-check/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 上 ``` > .\bin\dependency-check.bat -h > .\bin\dependency-check.bat --out . --scan [path to jar files to be scanned] ``` 在 Mac 上使用 [Homebrew](http://brew.sh) 注意 - 从 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] ``` ### Maven 插件 更详细的说明可以在 [dependency-check-maven github pages](https://dependency-check.github.io/DependencyCheck/dependency-check-maven) 上找到。 默认情况下,该插件绑定到 `verify` 阶段(即 `mvn verify`)。或者, 可以直接通过 `mvn org.owasp:dependency-check-maven:check` 调用该插件。 可以使用以下配置 dependency-check 插件: ``` ... org.owasp dependency-check-maven check ... ... ... ``` ### Gradle 插件 有关使用 Gradle 插件的说明,请参阅 [dependency-check-gradle github page](https://dependency-check.github.io/DependencyCheck/dependency-check-gradle)。 ### Ant 任务 有关使用 Ant 任务的说明,请参阅 [dependency-check-ant github page](https://dependency-check.github.io/DependencyCheck/dependency-check-ant)。 ## 开发先决条件 为了通过安装,您必须安装以下组件: * Java: `java -version` 11.0 * Maven: `mvn -version` 3.6.3 及更高版本 测试用例需要: * dotnet core 版本 8.0 * Go: `go version` 1.12 及更高版本 * Ruby [bundler-audit](https://github.com/rubysec/bundler-audit#install) * [Yarn](https://classic.yarnpkg.com/en/docs/install/) * [pnpm](https://pnpm.io/installation) ## 开发用法 以下说明概述了如何编译和使用当前快照。虽然我们致力于维护稳定的快照,但建议 使用上面列出的发布版本。 由于测试资源的原因,该仓库包含一些大文件。团队已尽可能清理历史记录。 但是,建议您执行浅克隆以节省时间: ``` git clone --depth 1 https://github.com/dependency-check/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 > .\cli\target\release\bin\dependency-check.bat -h > .\cli\target\release\bin\dependency-check.bat --out . --scan ./src/test/resources ``` 然后将生成的 'dependency-check-report.html' 加载到您喜欢的浏览器中。 #### 构建而不运行测试 为了加快您的周转周期,您也可以在不每次运行测试的情况下进行编译: `mvn -s settings.xml install -DskipTests=true` 请记住在打开 PR 之前至少运行一次测试。 :) ### IntelliJ Idea 为了能够在 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` ### Docker 在以下示例中,假设要检查的源代码位于当前工作目录中,报告将写入 `$(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%\data\cache" 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" ``` ## 从源代码构建 要构建 dependency-check(使用 Java 11),请运行命令: ``` mvn -s settings.xml install ``` ## 在 dependency-check 上运行 dependency-check Dependency-check 引用了几个易受攻击的依赖项,除了作为测试资源外,这些依赖项从未被使用。所有这些可选的测试依赖项都包含在 `test-dependencies` 配置文件中。要针对自身运行 dependency-check,只需 排除 `test-dependencies` 配置文件: ``` mvn org.owasp:dependency-check-maven:aggregate -P-test-dependencies -DskipProvidedScope=true ``` ## 构建文档 [github pages](https://dependency-check.github.io/DependencyCheck/) 上的文档是从此仓库生成的: ``` mvn -s settings.xml site site:stage ``` 完成后,将浏览器指向 `./target/staging/index.html`。 ## 构建 Docker 镜像 要构建 dependency-check docker 镜像,请运行命令: ``` mvn -s settings.xml install ./build-docker.sh ``` ## 许可证 在 Apache 2.0 许可证的条款下,授予修改和重新分发的权限。有关完整许可证,请参阅 [LICENSE.txt](https://raw.githubusercontent.com/dependency-check/DependencyCheck/main/LICENSE.txt) 文件。 Dependency-Check 使用了其他几个开源库。请参阅 [NOTICE.txt][notices] 文件以获取更多信息。 本产品使用 NVD API,但未获得 NVD 的认可或认证。 版权所有 (c) 2012-2025 Jeremy Long。保留所有权利。
标签:Apache 2.0, Black Hat Arsenal, CLI, CPE, CVE, DevSecOps, Gradle, IPv6支持, Java, Jenkins, JS文件枚举, Maven, MITM代理, OWASP, pip安装, Rust语言, SCA, TXT输出, WiFi技术, 上游代理, 二进制文件分析, 云安全监控, 人体姿态估计, 供应链安全, 依赖检查, 动态调试, 后台面板检测, 域名枚举, 域名枚举, 域名枚举, 域名枚举, 多人体追踪, 安全审计, 实时处理, 密码管理, 带宽管理, 开源安全, 数字签名, 无摄像头检测, 日志审计, 智能健康, 漏洞检测, 漏洞测试, 漏洞验证, 请求拦截, 软件成分分析, 静态分析