Jenkins整合Owasp DependencyCheck实现SCA

news/2024/8/26 17:34:59 标签: jenkins, 运维, SCA, AST

简介

Dependency-Check 是 OWASP(Open Web Application Security Project)的一个实用开源程序,用于识别项目依赖项并检查是否存在任何已知的,公开披露的漏洞。

目前,已支持Java、.NET、Ruby、Node.js、Python等语言编写的程序并为C/C++构建系统(autoconf和cmake)提供了有限的支持。

而且该工具还是OWASP Top 10的解决方案的一部分。

Dependency-Check 支持面广(支持多种语言)、可集成性强,作为一款开源工具,在多年来的发展中已经支持和许多主流的软件进行集成

比如:命令行、Ant、Maven、Gradle、Jenkins、Sonar等;具备使用方便,落地简单等优势。

DependencyCheck 实现原理

依赖性检查可用于扫描应用程序(及其依赖库),执行检查时会将 Common Platform Enumeration (CPE)国家漏洞数据库及NPM Public Advisories库下载到本地,再通过核心引擎中的一系列分析器检查项目依赖性,收集有关依赖项的信息。

然后根据收集的依赖项信息与本地的CPE&NPM库数据进行对比,如果检查发现扫描的组件存在已知的易受攻击的漏洞则标识,最后生成报告进行展示。

OWASP Dependency-Check | Jenkins plugin

Owasp DependencyCheck插件安装

● 只要在Jenkins中安装OWASP Dependency-Check Plugin即可

● 在build阶段maven/ant执行后,sonar执行前进行DependencyCheck

● 需要勾选在Advanced中勾选Generate optional HTML report以及Generate optional vulnerability report (HTML),否则sonarqube只有结果无具体报告

● 需要在sonar的配置中指定dependencyCheck的报告路径

OWASP Dependency-Check | OWASP Foundation

https://github.com/jeremylong/DependencyCheck/releases/download/v9.0.7/dependency-check-9.0.7-release.zip

Jenkins job集成Dependency-check

在Jenkins“全局工具管理”里面新增一个Dependency-check的实例:

job构建里面选择“invoke dependency-check”:

#sonar工程标识,随意输入不重复有代表意义即可
sonar.projectKey=${JOB_NAME} 

#sonar工程标识,随意输入不重复有代表意义即可
sonar.projectName=${JOB_NAME} 

#sonar工程版本号
sonar.projectVersion=1.0 

#源代码路径,依据需要可在$WORKSPACE后加入目标路径,缩小分析范围;
sonar.sources=$WORKSPACE

#class文件路径,依据需要可在$WORKSPACE后加入目标路径,缩小分析范围;
sonar.java.binaries=$WORKSPACE

sonar.exclusions=**/test/**,**/target/**

sonar.java.source=8 
sonar.java.target=8

# Encoding of the source code. Default is default system encoding 
sonar.sourceEncoding=UTF-8

sonar.dependencyCheck.reportPath=${WORKSPACE}/dependency-check-report.xml
sonar.dependencyCheck.htmlReportPath=${WORKSPACE}/dependency-check-report.html
sonar.dependencyCheck.summarize=true

注意执行顺序,先执行dependency-check,再执行sonarQube Scanner,因为sonar插件不会进行依赖扫描,需要通过dependency-check扫描完成后,读取配置文件,然后在页面展示的

点击Risk Gate Thresholds可以设定在整体缺陷个数或者新增缺陷个数是多少的情况下,把构建结果设置为Unstable或者Fail。比如:

对于issue总数来说,Critcal的达到2个,或者High的达到2个,就Unstable;Critical的达到10个,或者High的达到10个,就Fail;对于新增issue来说,Critical的达到1个,或者High的达到1个,就Unstable;Critical的达到5个,或者High的达到5个,就Fail。

保存后,点击立即构建。然后就是漫长的构建过程。构建完成之后,我们可以在jenkins的结果页查看其趋势:

点击某次具体构建之后可以查看此次构建的Dependency check结果详情

在sonarQube页面查看Dependency-Check报告


http://www.niftyadmin.cn/n/5558303.html

相关文章

Netty Bootstrap/ServerBootstrap

Netty中的Bootstrap和ServerBootstrap是Netty框架中的两个核心引导类,它们分别用于客户端和服务端的启动配置。以下是关于这两个类的详细解析: 一、基本概念 Bootstrap:客户端程序的启动引导类。主要用于配置Netty客户端的各种参数&#xf…

Nuxt.js头部魔法:轻松自定义页面元信息,提升用户体验

title: Nuxt.js头部魔法:轻松自定义页面元信息,提升用户体验 date: 2024/7/16 updated: 2024/7/16 author: cmdragon excerpt: 摘要:“Nuxt.js头部魔法:轻松自定义页面元信息,提升用户体验”介绍如何使用useHead函数…

小阿轩yx-zookeeper+kafka群集

小阿轩yx-zookeeperkafka群集 消息队列(Message Queue) 是分布式系统中重要的组件 通用的使用场景可以简单地描述为 当不需要立即获得结果,但是并发量又需要进行控制的时候,差不多就是需要使用消息队列的时候。 消息队列 什么是消息队列 消息(Mes…

【论文阅读】MCTformer+:弱监督语义分割的多类令牌转换器

【论文阅读】MCTformer:弱监督语义分割的多类令牌转换器 文章目录 【论文阅读】MCTformer:弱监督语义分割的多类令牌转换器一、介绍1.1 WSSS背景1.2 WSSS策略 二、联系工作2.1 弱监督语义分割2.2 transformers的可视化应用 三、MULTI-CLASS TOKEN TRANSFORMER3.1 Multi-class t…

实战:Spring Boot与Apache CXF构建企业级服务SOAP

在现代软件开发中,构建高性能、可扩展且易于维护的Web服务是企业级应用的核心需求。SpringBoot 和Apache CXF是两个强大的框架,能够帮助开发者快速、高效地构建和部署这些服务。本文将探讨SpringBoot和Apache CXF 的主要功能、应用场景,并提供…

主流大数据调度工具DolphinScheduler之数据ETL流程

今天给大家分享主流大数据调度工具DolphinScheduler,以及数据的ETL流程。 一:调度工具DS 主流大数据调度工具DolphinScheduler, 其定位:解决数据处理流程中错综复杂的依赖关系 任务支持类型:支持传统的shell任务&a…

【雷丰阳-谷粒商城 】【分布式高级篇-微服务架构篇】【26】【内网穿透】cpolar

持续学习&持续更新中… 守破离 【雷丰阳-谷粒商城 】【分布式高级篇-微服务架构篇】【27】【内网穿透】cpolar 内网穿透cpolar内网穿透联调配置练习—使用公网地址访问gulimall.com参考 内网穿透 正常的外网需要访问我们项目的流程是: 买服务器并且有公网固定…

opencv—常用函数学习_“干货“_9

目录 二五、霍夫变换 检测图像中的直线 (HoughLines) 检测图像中的直线段 (HoughLinesP) 检测图像中的圆 (HoughCircles) 解释 二六、傅里叶变化 获取最优的DFT大小 (getOptimalDFTSize) 执行离散傅里叶变换 (dft) 和 逆变换 (idft) 解释 实际应用 图像滤波示例 http…