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

在现代软件开发中,使用开源库和第三方依赖项已成为常态。然而,这些依赖项可能包含已知的安全漏洞,给应用程序带来潜在的风险。为了解决这个问题,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-6378See 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.mzph.cn/diannao/64460.shtml

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

相关文章

meta-llama/Llama-3.2-1B 微调记录

踩坑&#xff1a; 1.刚开始部署在自己的windows电脑上&#xff0c;semgrep不支持windows &#xff0c;然后就换了linux服务器 2.服务器没有梯子&#xff0c;huggingface无法访问&#xff0c;模型数据集无法下载 解决方法&#xff1a; 使用huggingface镜像网站下载模型&#xf…

双指针---有效三角形的个数

这里写自定义目录标题 题目链接 [有效三角形的个数](https://leetcode.cn/problems/valid-triangle-number/description/)问题分析代码解决执行用时 题目链接 有效三角形的个数 给定一个包含非负整数的数组 nums &#xff0c;返回其中可以组成三角形三条边的三元组个数。 示例…

《通信电子电路》入门手册

因为大学这门课好多同学理解不了这门课 于是考完试后花了两天时间整理了这份笔记&#xff0c;在这分享给完全没有学懂这门课的同学&#xff0c;也帮助“理解概念才能学得进去”的同学入门 笔记&#xff1a;通信电子电路 入门手册 —— flowus笔记 对应&#xff1a;《通信电子…

基于单片机的智能水表的设计

1总体设计 本次设计智能IC卡水表&#xff0c;在系统架构上设计如图2.1所示&#xff0c;由STM32F103单片机&#xff0c;YF-S401霍尔型传感器&#xff0c;RFID模块&#xff0c;OLED12864液晶,按键&#xff0c;继电器等构成&#xff0c;在功能上可以实现水流量的检测&#xff0c;…

LA2016逻辑分析仪使用笔记1:测量引脚、解析串口数据

今日尝试学习使用LA2016逻辑分析仪&#xff1a;测量引脚 解析串口数据&#xff1a; 目录 逻辑分析仪&#xff1a; 实验接线&#xff1a; 基础操作&#xff1a; 选择使用到的通道&#xff1a; 设置采样时间、采样频率&#xff1a; 设置电平标准&#xff1a; 解析串口数据、测量串…

[论文阅读]Universal and transferable adversarial attacks on aligned language models

Universal and transferable adversarial attacks on aligned language models http://arxiv.org/abs/2307.15043 图 1&#xff1a;Aligned LLMs 不是对抗性 Aligned。我们的攻击构建了一个单一的对抗性提示&#xff0c;该提示始终绕过最先进的商业模式&#xff08;包括 ChatG…

【C++】小乐乐求和题目分析n变量类型讨论

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 &#x1f4af;前言&#x1f4af;题目描述&#x1f4af;解题分析&#x1f4af;为什么 n 需要是 long long问题重点&#xff1a;中间计算水平上的数据类型不足的例子&#xff1a;正确解决&#xff1a;将 n 设…

计算机基础知识——数据结构与算法(一)(山东省大数据职称考试)

大数据分析应用-初级 第一部分 基础知识 一、大数据法律法规、政策文件、相关标准 二、计算机基础知识 三、信息化基础知识 四、密码学 五、大数据安全 六、数据库系统 七、数据仓库. 第二部分 专业知识 一、大数据技术与应用 二、大数据分析模型 三、数据科学 数据结构与算法…

WebView通过@JavascriptInterface 调用原生方法

1. 创建 WebView 和设置 WebView 设置 在 XML 布局中添加 WebView 在activity_main.xml里创建一个WebView控件 <?xml version"1.0" encoding"utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android"http://schem…

基于AI对话生成剧情AVG游戏

游戏开发这个领域&#xff0c;一直有较高的学习门槛。作为一个非专业的游戏爱好者&#xff0c;如果想要开发游戏&#xff0c;往往受制于游戏引擎的专业程度&#xff0c;难以完成复杂的游戏项目。 AI IDE的诞生&#xff0c;提供了另外的一种思路&#xff0c;即通过AI 生成项目及…

ElasticSearch 数据聚合与运算

1、数据聚合 聚合&#xff08;aggregations&#xff09;可以让我们极其方便的实现数据的统计、分析和运算。实现这些统计功能的比数据库的 SQL 要方便的多&#xff0c;而且查询速度非常快&#xff0c;可以实现近实时搜索效果。 注意&#xff1a; 参加聚合的字段必须是 keywor…

F5中获取客户端ip地址(client ip)

当F5设备对其原始设置上的所有IP地址使用NAT时&#xff0c;连接到poo成员&#xff08;nodes、backend servers&#xff09;的出站连接将是NAT IP地址。 pool 成员&#xff08;nodes、backend servers&#xff09;将无法看到真实的客户端 ip地址&#xff0c;因为看到的是F5上的…

MATLAB引用矩阵元素的几种方法

引用矩阵元素可以通过索引&#xff0c;也可以通过逻辑值 索引 通过引用元素在矩阵中的位置来提取元素&#xff0c;例如&#xff1a; - 逻辑值 通过某种逻辑运算来使得要提取的值变为逻辑 1 1 1&#xff0c;用 A ( ) A() A()提取即可&#xff0c; A A A为原矩阵的名称。 例如&…

机器学习预处理-表格数据的空值处理

机器学习预处理-表格数据的空值处理 机器学习预处理-表格数据的分析与可视化中详细介绍了表格数据的python可视化&#xff0c;可视化能够帮助我们了解数据的构成和分布&#xff0c;是我们进行机器学习的必备步骤。上文中也提及&#xff0c;原始的数据存在部分的缺失&#xff0…

了解 SpringMVC 请求流程

文章目录 1. Spring 基础 - SpringMVC 请求流程1.1 引入1.2 什么是 MVC1.3 什么是 Spring MVC1.4 请求流程核心架构的具体流程步骤补充 1.5 案例**Maven 包引入****业务代码的编写**DaoServiceControllerwebapp 下的 web.xmlspringmvc.xmlJSP 视图 2. Spring 进阶 - Dispatcher…

Springboot3.x配置类(Configuration)和单元测试

配置类在Spring Boot框架中扮演着关键角色&#xff0c;它使开发者能够利用Java代码定义Bean、设定属性及调整其他Spring相关设置&#xff0c;取代了早期版本中依赖的XML配置文件。 集中化管理&#xff1a;借助Configuration注解&#xff0c;Spring Boot让用户能在一个或几个配…

鸿道Intewell-C纯实时构型,适合有功能安全认证需求的工业操作系统

鸿道Intewell-C纯实时构型&#xff0c;适合有功能安全认证需求的工业操作系统 鸿道Intewell-C是一款工业实时微内核操作系统&#xff0c;由科东软件自主研发&#xff0c;具有超低延迟和最小抖动&#xff0c;保障工业设备可以高效处理时间敏感的现场业务&#xff0c;支持多种工…

Stream– ESP8266物联网应用,(客户端向服务器发送数据信息 客户端向服务器请求数据信息)

Stream– ESP8266物联网应用 Stream对于ESP8266-Arduino语言来说指的是数据序列。请留意&#xff1a;在C编程中Stream常被翻译作“流”。我们认为将Stream称为数据序列更加直观。因为数据序列这一概念有两个很关键特点。 第一个特点是“序”&#xff0c;即数据序列不能是杂乱…

芯品荟|SWM221系列芯片之TFTLCD彩屏显示及控制

“革新未来&#xff0c;智驭控制新纪元”&#xff0c;由广东华芯微特集成电路有限公司市场总监张琢&#xff0c;对SWM221系列的强大功能表现进行了整体介绍。 确实&#xff0c;华芯微特在TFTLCD显示及控制有十多年应用基础和积累的团队&#xff0c;仍勇于挑战&#xff0c;自我…

MIT S6081 2024 Lab 1 | Operating System | Notes

目录 安装与下载 实验1 开始我们的实验 sleep&#xff08;简单&#xff09; pingpong&#xff08;简单&#xff09; primes (中等)/(困难) find&#xff08;中等&#xff09; xargs&#xff08;中等&#xff09; finally Reference I. Tools Debian 或 Ubuntu Arch…