如何在 CI 上缓存 OWASP 依赖性检查 NVD 数据库

Mig*_*iro 2 continuous-integration caching owasp devsecops

OWASP 依赖项检查是在我们的项目中自动发现漏洞的好方法,尽管将其作为每个项目 CI 管道的一部分运行时,仅下载 NVD 数据库就会增加 3-4 分钟的时间。

当在 CI 管道上使用 maven / gradle 运行该数据库时,我们如何缓存该数据库?

Mig*_*iro 5

经过一番研究,我找到了方法!

基本上,包含 NVM db 的文件被称为:nvdcve-1.1-[YYYY].json.gznvdcve-1.1-2022.json.gz稍后将其添加到 Lucene 索引中。

使用 Gradle 插件运行依赖项检查时,将在以下位置创建文件:

$GRADLE_USER_HOME/.gradle/dependency-check-data/7.0/nvdcache/

当使用 Maven 运行时,它们将在以下位置创建:

$MAVEN_HOME/.m2/repository/org/owasp/dependency-check-data/7.0/nvdcache/

因此,要将数据库缓存到 Gitlab CI 上,您只需将以下内容添加到您的.gitlab-ci.yaml(Gradle) 中:

before_script:
  - export GRADLE_USER_HOME=`pwd`/.gradle

cache:
  key: "$CI_PROJECT_NAME"
  paths:
    - .gradle/dependency-check-data
Run Code Online (Sandbox Code Playgroud)

第一个 CI 作业运行将创建缓存,连续的作业(来自相同或不同的管道)将获取它!