You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何加速CI中OWASP Dependency-Check Maven插件的漏洞检测?

问题背景

在CI拉取请求的每次提交中,使用搭载OWASP插件的Maven项目进行漏洞检测,插件配置如下:

<plugin>
    <groupId>org.owasp</groupId>
    <artifactId>dependency-check-maven</artifactId>
    <version>${version.dependency-check-maven}</version>
    <executions>
        <execution>
            <goals>
                <goal>aggregate</goal>
            </goals>
            <phase>verify</phase>
        </execution>
    </executions>
    <configuration>
        <showSummary>true</showSummary>
        <!-- this will work only in the top-level maven module -->
        <suppressionFile>${user.dir}/owasp-suppressions.xml</suppressionFile>
        <format>ALL</format>
        <failBuildOnAnyVulnerability>true</failBuildOnAnyVulnerability>
        <!-- alternative: fail on level (High starts at 7, Critical at 9) -->
        <!-- <failBuildOnCVSS>4</failBuildOnCVSS> -->
        <assemblyAnalyzerEnabled>false</assemblyAnalyzerEnabled>
        <cveUrlModified>address of the NVD local mirror</cveUrlModified>
        <cveUrlBase>address of the NVD local mirror</cveUrlBase>
        <cveWaitTime>1</cveWaitTime> <!--value in milliseconds, default is 4000-->
    </configuration>
</plugin>

CI构建使用Prow,已配置NVD本地镜像,但从本地镜像下载CVE及数据库维护仍耗时约3分钟,日志显示大部分时间消耗在CVE下载处理和数据库维护环节:

[INFO] Download Started for NVD CVE - 2003
[INFO] Download Complete for NVD CVE - 2003  (5 ms)
[INFO] Processing Started for NVD CVE - 2003
[INFO] Processing Complete for NVD CVE - 2002  (4608 ms)
[INFO] Processing Complete for NVD CVE - 2003  (1131 ms)
...
[INFO] Begin database maintenance
[INFO] Updated the CPE ecosystem on 128773 NVD records
[INFO] Removed the CPE ecosystem on 3604 NVD records
[INFO] End database maintenance (13482 ms)
[INFO] Begin database defrag
[INFO] End database defrag (3765 ms)
[INFO] Check for updates complete (112132 ms)
加速OWASP漏洞检测的实用技巧

一、复用数据库缓存,避免重复更新

  • CI节点共享缓存目录:在Prow中为构建节点挂载持久化存储卷,将OWASP Dependency-Check的默认数据库目录(~/.m2/repository/org/owasp/dependency-check-data)映射到共享存储,让所有PR构建复用同一份已下载处理好的CVE数据库,无需每次重新拉取和解析。
  • 调整更新策略:
    • 添加<updateOnlyIfMissing>true</updateOnlyIfMissing>配置,仅当本地数据库完全缺失时才触发更新;
    • 配合<autoUpdate>false</autoUpdate>,在日常PR构建中禁用自动更新,仅通过每日定时构建任务执行全量更新,PR构建直接复用已维护好的缓存数据。

二、跳过不必要的数据库操作

  • 禁用常规维护任务:在PR构建的插件配置中添加<skipDbMaintenance>true</skipDbMaintenance>和<skipDefrag>true</skipDefrag>,跳过数据库维护与碎片整理环节(需确保定时构建任务中保留这些操作,保证数据库的完整性)。
  • 缩小CVE数据范围:
    • 设置<cveStartYear>2018</cveStartYear>,只下载指定年份后的CVE数据(可根据项目依赖的实际年代调整,比如只关注近5年的漏洞),减少需要处理的记录量;
    • 启用<enableExperimental>true</enableExperimental>后,通过<excludeVulnerabilityIds>配置排除已知不影响项目的CVE编号,进一步降低处理负载。

三、优化插件执行逻辑

  • 减少报告格式输出:将<format>ALL</format>改为只生成需要的格式(如<format>HTML</format>或<format>JSON</format>),避免生成冗余报告浪费时间。
  • 开启并行分析:添加<parallelAnalysis>true</parallelAnalysis>配置,利用CI节点的多核资源并行处理依赖,提升检测速度。
  • 跳过无依赖模块:对于多模块Maven项目,给无依赖的子模块添加<skip>true</skip>配置,跳过不必要的检测步骤。

四、优化本地NVD镜像

  • 使用压缩数据源:确保NVD本地镜像提供.gz压缩格式的CVE数据文件,OWASP插件会自动识别并下载压缩文件,大幅减少传输和解压耗时。
  • 调整镜像同步频率:将NVD镜像的同步频率设置为每日一次,在保证数据时效性的同时,避免频繁同步对镜像服务器和构建流程造成的负载。

内容的提问来源于stack exchange,提问作者user2105282

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 02:45:34