maven使用Dependency-Check来扫描安全漏洞

news2024/12/20 13:46:59

在现代软件开发中,使用开源库和第三方依赖项已成为常态。然而,这些依赖项可能包含已知的安全漏洞,给应用程序带来潜在的风险。为了解决这个问题,OWASP Dependency-Check 应运而生。本文将介绍 OWASP Dependency-Check 的功能、安装方法、使用步骤以及最佳实践。

1.什么是 OWASP Dependency-Check?

OWASP Dependency-Check 是一个开源工具,旨在帮助开发人员识别项目中使用的库和组件的已知漏洞。它通过扫描项目的依赖项,生成详细的报告,帮助团队及时发现并修复安全问题。该工具支持多种编程语言和构建工具,包括 Java、.NET、Node.js 等。

2.主要功能

  1. 漏洞检测:通过与国家漏洞数据库(NVD)和其他漏洞数据库对比,识别项目中使用的库的已知漏洞。
  2. 多种输出格式:支持生成多种格式的报告,包括 HTML、XML 和 JSON,方便团队进行审查和记录。
  3. 集成支持:可以与常见的构建工具(如 Maven、Gradle、Ant)和 CI/CD 工具(如 Jenkins)集成,实现自动化扫描。
  4. 定期更新:定期更新漏洞数据库,确保检测结果的准确性和时效性。

3.检测流程

  • 数据源准备: 在执行检查前,从 National Vulnerability Database (NVD) 和 OWASP Dependency-Check Data下载最新的漏洞数据,并将其存储在本地数据库中,以供后续的检查使用。
  • 依赖项分析: 分析应用程序的依赖性结构。这包括扫描项目的源代码、配置文件和构建文件,以识别所使用的开源库、框架和组件。
  • 漏洞检测: 通过一系列分析器遍历项目的依赖项列表,并与本地数据库中的漏洞信息进行比对。
  • 数据对比与标识: 当分析器在项目依赖项中发现与本地数据库匹配的已知漏洞时,标识相关的组件,并记录漏洞的详细信息,如 CVE 编号、受影响版本范围等。
  • 报告生成: 完成漏洞检测后,生成详细的漏洞报告。报告列出了受影响组件的清单,提供漏洞的描述、严重程度、CVE 编号以及可能的修复建议。

4.如何j结合maven使用 Dependency-Check?

在pom.xml配置文件中引入插件

<plugin>
    <groupId>org.owasp</groupId>
    <artifactId>dependency-check-maven</artifactId>
    <version>10.0.3</version>
    <executions>
        <execution>
            <goals>
                <goal>aggregate</goal>
            </goals>
        </execution>
    </executions>
</plugin>

在IDEA主界面的右边侧边栏上找到Maven模块,执行 Plugins 目录下 Depedancy-check 中的 aggregate 。

maven

介绍一下各个选项的作用:

  • aggregate 分析当前项目及其子项目并生成报告。
  • check 分析当前项目并生成报告。
  • update-only 更新本地漏洞数据库。
  • purge 清除本地漏洞数据副本。

第一次执行会下载漏洞库,数据量大概在20多万,视网络情况等待时间可能在10-20分钟左右。

One or more dependencies were identified with known vulnerabilities in Java-demo:

bcpkix-jdk15on-1.70.jar (pkg:maven/org.bouncycastle/bcpkix-jdk15on@1.70, cpe:2.3:a:bouncycastle:bouncy_castle_for_java:1.70:*:*:*:*:*:*:*) : CVE-2023-33202
bcprov-jdk15on-1.70.jar (pkg:maven/org.bouncycastle/bcprov-jdk15on@1.70, cpe:2.3:a:bouncycastle:bouncy-castle-crypto-package:1.70:*:*:*:*:*:*:*, cpe:2.3:a:bouncycastle:bouncy_castle_crypto_package:1.70:*:*:*:*:*:*:*, cpe:2.3:a:bouncycastle:bouncy_castle_for_java:1.70:*:*:*:*:*:*:*, cpe:2.3:a:bouncycastle:legion-of-the-bouncy-castle-java-crytography-api:1.70:*:*:*:*:*:*:*, cpe:2.3:a:bouncycastle:the_bouncy_castle_crypto_package_for_java:1.70:*:*:*:*:*:*:*) : CVE-2024-34447, CVE-2024-29857, CVE-2024-30171, CVE-2023-33202, CVE-2023-33201
bcutil-jdk15on-1.70.jar (pkg:maven/org.bouncycastle/bcutil-jdk15on@1.70, cpe:2.3:a:bouncycastle:bouncy_castle_for_java:1.70:*:*:*:*:*:*:*) : CVE-2023-33202
commons-compiler-3.0.8.jar (pkg:maven/org.codehaus.janino/commons-compiler@3.0.8, cpe:2.3:a:janino_project:janino:3.0.8:*:*:*:*:*:*:*) : CVE-2023-33546
commons-compress-1.21.jar (pkg:maven/org.apache.commons/commons-compress@1.21, cpe:2.3:a:apache:commons_compress:1.21:*:*:*:*:*:*:*) : CVE-2024-25710, CVE-2024-26308
commons-io-2.11.0.jar (pkg:maven/commons-io/commons-io@2.11.0, cpe:2.3:a:apache:commons_io:2.11.0:*:*:*:*:*:*:*) : CVE-2024-47554
janino-3.0.8.jar (pkg:maven/org.codehaus.janino/janino@3.0.8, cpe:2.3:a:janino_project:janino:3.0.8:*:*:*:*:*:*:*) : CVE-2023-33546
json-path-2.8.0.jar (pkg:maven/com.jayway.jsonpath/json-path@2.8.0, cpe:2.3:a:json-path:jayway_jsonpath:2.8.0:*:*:*:*:*:*:*) : CVE-2023-51074
logback-core-1.2.11.jar (pkg:maven/ch.qos.logback/logback-core@1.2.11, cpe:2.3:a:qos:logback:1.2.11:*:*:*:*:*:*:*) : CVE-2023-6378


See the dependency-check report for more details.

执行完成后,扫描报告会生成到target路径下的dependency-check-report.html

result

以上只是一些关键代码,所有代码请参见下面代码仓库

代码仓库

  • GitHub - Harries/Java-demo

5.结论

OWASP Dependency-Check 是一个强大的工具,可以帮助开发团队识别和管理项目中的安全风险。通过定期扫描和及时修复漏洞,团队可以显著提高软件的安全性,降低潜在的安全威胁。无论是个人开发者还是大型企业,使用 OWASP Dependency-Check 都是确保软件安全的重要一步。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2262741.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

#渗透测试#红队全栈 powshell基础使用

声明&#xff01; 学习视频来自B站up主 泷羽sec&#xff0c;任何违法事件与本人以及泷羽sec团队无关&#xff0c;切勿触碰法律底线&#xff0c;否则后果自负&#xff01;&#xff01;&#xff01;&#xff01; 目录标题 认识powsehll打开方式 使用方式美化自己的powershell简单…

Qt:QMetaObject::connectSlotsByName实现信号槽自动关联

简介 在Qt中&#xff0c;QMetaObject::connectSlotsByName 是一个便利的方法&#xff0c;它可以根据对象的对象名&#xff08;objectName&#xff09;自动将信号和槽连接起来。但是&#xff0c;要使用这个方法&#xff0c;必须确保&#xff1a; 1 控件&#xff08;如按钮&…

《算法ZUC》题目

判断题 ZUC算法LFSR部分产生的二元序列具有很低的线性复杂度。 A.正确 B.错误 正确答案A 单项选择题 ZUC算法驱动部分LFSR的抽头位置不包括&#xff08; &#xff09;。 A.s15 B.s10 C.s7 D.s0 正确答案C 单项选择题 ZUC算法比特重组BR层主要使用了软件实现友好的…

maven项目中对不同目录下的同包同名类的引用情况整理

说明 maven项目&#xff0c;允许在不同目录中出现相同包名和相同类名&#xff0c;不会出现冲突&#xff0c;包括&#xff1a; java目录test目录依赖中目录 这里就用Hutool.class类中的一个常量做测试&#xff0c;如图 好奇同包同名类同时存在时&#xff0c;会加载哪个类 Syst…

【UE5 C++课程系列笔记】10——动态单播/多播的基本使用

目录 概念 申明动态委托 一、DECLARE_DYNAMIC_DELEGATE 二、DECLARE_DYNAMIC_MULTICAST_DELEGATE 绑定动态委托 一、BindDynamic 二、AddDynamic 三、RemoveDynamic 执行动态委托 ​一、Execute 二、ExecuteIfBound 三、IsBound 四、Broadcast 动态单播使用示…

Redis篇-19--运维篇1-主从复制(主从复制,读写分离,配置实现,实战案例)

1、概述 Redis的主从复制&#xff08;Master-Slave Replication&#xff09;是一种数据冗余机制&#xff0c;它允许将一台Redis服务器的数据复制到其他Redis服务器。在主从复制中&#xff0c;有一台主服务器&#xff08;Master&#xff09;和一个或多个从服务器&#xff08;Sl…

【ORACLE】一个允许关键字作为别名所引起的语法歧义场景

前言 最近在看SQL语法解析器&#xff0c;发现了antlr4提供的PlSql语法树存在一个BUG&#xff0c;然后我顺着这个BUG&#xff0c;构造了一条SQL&#xff0c;在ORACLE执行&#xff0c;如下 然后神奇的事情出现了&#xff0c;这个查询竟然没有返回行&#xff01;t1表左关联t2&…

【前端】Jquery拍照,通过PHP将base64编码数据转换成PNG格式,并保存图像到本地

目录 一、需求 二、开发语言 三、效果 四、业务逻辑&#xff1a; 五、web端调用摄像头 六、示例代码 1、前端 2、后端 一、需求 web端使用jquery调用摄像头拍照&#xff0c;并使用PHP把base64编码转换成png格式图片&#xff0c;下载到本地。 由于js不能指定图片存储的…

本地摄像头视频流在html中打开

1.准备ffmpeg 和(rtsp-simple-server srs搭建流媒体服务器)视频服务器. 2.解压视频流服务器修改配置文件mediamtx.yml ,hlsAlwaysRemux: yes 3.双击运行服务器。 4&#xff0c;安装ffmpeg ,添加到环境变量。 5.查询本机设备列表 ffmpeg -list_devices true -f dshow -i d…

机器情绪及抑郁症识别算法(六)

✨✨ 欢迎大家来访Srlua的博文&#xff08;づ&#xffe3;3&#xffe3;&#xff09;づ╭❤&#xff5e;✨✨ &#x1f31f;&#x1f31f; 欢迎各位亲爱的读者&#xff0c;感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢&#xff0c;在这里我会分享我的知识和经验。&am…

34. Three.js案例-创建球体与模糊阴影

34. Three.js案例-创建球体与模糊阴影 实现效果 知识点 WebGLRenderer WebGLRenderer 是 Three.js 中用于渲染 3D 场景的核心类。它负责将场景中的对象绘制到画布上。 构造器 new THREE.WebGLRenderer(parameters)参数类型描述parametersObject可选参数对象&#xff0c;包…

服务器数据恢复—RAIDZ离线硬盘数超过热备盘数导致阵列崩溃的数据恢复案例

服务器存储数据恢复环境&#xff1a; ZFS Storage 7320存储阵列中有32块硬盘。32块硬盘分为4组&#xff0c;每组8块硬盘&#xff0c;共组建了3组RAIDZ&#xff0c;每组raid都配置了热备盘。 服务器存储故障&#xff1a; 服务器存储运行过程中突然崩溃&#xff0c;排除人为误操…

108. 将有序数组转换为二叉搜索树(java)

题目描述&#xff1a; 给你一个整数数组 nums &#xff0c;其中元素已经按 升序 排列&#xff0c;请你将其转换为一棵 平衡 二叉搜索树。 示例 1&#xff1a; 输入&#xff1a;nums [-10,-3,0,5,9] 输出&#xff1a;[0,-3,9,-10,null,5] 解释&#xff1a;[0,-10,5,null,-3,…

电子应用设计方案-60:智能床垫系统方案设计

智能床垫系统方案设计 一、引言 智能床垫作为智能家居的一部分&#xff0c;旨在为用户提供更舒适的睡眠体验和健康监测功能。本方案将详细描述智能床垫系统的设计理念、功能模块及技术实现。 二、系统概述 1. 系统目标 - 实时监测睡眠状态&#xff0c;包括心率、呼吸、体动等…

YOLOv8目标检测(六)_封装API接口

YOLOv8目标检测(一)_检测流程梳理&#xff1a;YOLOv8目标检测(一)_检测流程梳理_yolo检测流程-CSDN博客 YOLOv8目标检测(二)_准备数据集&#xff1a;YOLOv8目标检测(二)_准备数据集_yolov8 数据集准备-CSDN博客 YOLOv8目标检测(三)_训练模型&#xff1a;YOLOv8目标检测(三)_训…

CSDN数据大屏可视化【开源】

项目简介 本次基于版本3 开源 版本3开源地址&#xff1a;https://github.com/nangongchengfeng/CsdnBlogBoard.git 版本1开源地址&#xff1a;https://github.com/nangongchengfeng/CSDash.git 这是一个基于 Python 的 CSDN 博客数据可视化看板项目&#xff0c;通过爬虫采…

Moretl安全日志采集工具

永久免费: 至Gitee下载 使用教程: Moretl使用说明 使用咨询: 用途 定时全量或增量采集工控机,电脑文件或日志. 优势 开箱即用: 解压直接运行.不需额外下载.管理设备: 后台统一管理客户端.无人值守: 客户端自启动,自更新.稳定安全: 架构简单,兼容性好,通过授权控制访问. 架…

无人机航测系统技术特点!

一、无人机航测系统的设计逻辑 无人机航测系统的设计逻辑主要围绕实现高效、准确、安全的航空摄影测量展开。其设计目标是通过无人机搭载相机和传感器&#xff0c;利用先进的飞行控制系统和数据处理技术&#xff0c;实现对地表信息的全方位、高精度获取。 需求分析&#xff1…

Java学习笔记(13)——面向对象编程

面向对象基础 目录 面向对象基础 方法重载 练习&#xff1a; 继承 继承树 protected super 阻止继承 向上转型 向下转型 区分继承和组合 练习 小结&#xff1a; 方法重载 如果有一系列方法&#xff0c;功能类似&#xff0c;只是参数有所不同&#xff0c;就可以把…

Running CMake (运行 CMake)

Running CMake {运行 CMake} 1. CLion - Create a new CMake project2. Running CMake (运行 CMake)2.1. Building a project (构建项目)2.2. Picking a compiler (指定编译器)2.3. Verbose and partial builds (详细和部分的构建)2.4. Options (选项)2.4.1. Standard options …