Dependency Check:一款针对应用程序依赖组件的安全检测工具
关于Dependency Check
Dependency-Check 是一款软件组合分析 (SCA) 工具,可尝试检测项目依赖项中包含的公开披露的漏洞。它通过确定给定依赖项是否存在通用平台枚举 (CPE) 标识符来实现此目的。如果找到,它将生成一份链接到相关 CVE 条目的报告。
Dependency-check 有一个命令行界面、一个 Maven 插件、一个 Ant 任务和一个 Jenkins 插件。核心引擎包含一系列分析器,用于检查项目依赖项、收集有关依赖项的信息(在工具中称为证据)。然后使用证据来识别给定依赖项的通用平台枚举 (CPE) 。如果识别出 CPE,则会在报告中列出相关的通用漏洞和暴露 (CVE)条目列表。其他第三方服务和数据源(如 NPM Audit API、OSS Index、RetireJS 和 Bundler Audit)用于特定技术。
Dependency-check 使用 NIST 托管的 NVD 数据源自动更新自身。'''重要提示:''' 初始下载数据可能需要十分钟或更长时间。如果您每七天至少运行一次该工具,则只需下载一个小型 JSON 文件即可使数据的本地副本保持最新。
功能介绍
Dependency-check 的工作方式是收集有关其扫描的文件的信息(使用分析器)。收集的信息称为证据;收集的证据有三种类型:供应商、产品和版本。例如,JarAnalyzer 将从 Manifest、pom.xml 和扫描的 JAR 文件中的包名称中收集信息,并且它有启发式方法将来自各种来源的信息放入一个或多个证据桶中。
在 NVD CVE 数据中每个 CVE 条目都有一个易受攻击的软件列表:
<entry id="CVE-2012-5055">...<vuln:vulnerable-software-list><vuln:product>cpe:/a:vmware:springsource_spring_security:3.1.2</vuln:product><vuln:product>cpe:/a:vmware:springsource_spring_security:2.0.4</vuln:product><vuln:product>cpe:/a:vmware:springsource_spring_security:3.0.1</vuln:product></vuln:vulnerable-software-list>...</entry>
接下来,CPE 数据将被收集并存储在 Lucene 索引中。Dependency-check 然后使用收集到的证据并尝试匹配 Lucene CPE 索引中的条目。如果找到,CPEAnalyzer 将向依赖项添加标识符,然后添加到报告中。一旦识别出 CPE,相关的 CVE 条目就会添加到报告中。
工具配置
导入用于签署所有依赖检查版本的 GPG 密钥:
gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 259A55407DD6C00299E6607EFFDE55BE73A2D1ED
从GitHub Release下载依赖检查命令行工具和相关的 GPG 签名文件,验证下载的加密完整性:
gpg --verify dependency-check-10.0.4-release.zip.asc
将 zip 文件解压到计算机上的某个位置,并将“bin”目录放入路径环境变量中。
工具安装和使用
自制
$ brew install dependency-check
窗户
dependency-check.bat --project "My App Name" --scan "c:\java\application\lib"
*尼克斯
dependency-check.sh --project "My App Name" --scan "/java/application/lib"
Docker使用
Linux的
#!/bin/shDC_VERSION="latest"DC_DIRECTORY=$HOME/OWASP-Dependency-CheckDC_PROJECT="dependency-check scan: $(pwd)"DATA_DIRECTORY="$DC_DIRECTORY/data"CACHE_DIRECTORY="$DC_DIRECTORY/data/cache"if [ ! -d "$DATA_DIRECTORY" ]; thenecho "Initially creating persistent directory: $DATA_DIRECTORY"mkdir -p "$DATA_DIRECTORY"fiif [ ! -d "$CACHE_DIRECTORY" ]; thenecho "Initially creating persistent directory: $CACHE_DIRECTORY"mkdir -p "$CACHE_DIRECTORY"fi# Make sure we are using the latest versiondocker pull owasp/dependency-check:$DC_VERSIONdocker run --rm \-e user=$USER \-u $(id -u ${USER}):$(id -g ${USER}) \--volume $(pwd):/src:z \--volume "$DATA_DIRECTORY":/usr/share/dependency-check/data:z \--volume $(pwd)/odc-reports:/report:z \owasp/dependency-check:$DC_VERSION \--scan /src \--format "ALL" \--project "$DC_PROJECT" \--out /report# Use suppression like this: (where /src == $pwd)# --suppression "/src/security/dependency-check-suppression.xml"
窗户
@echo offset DC_VERSION="latest"set DC_DIRECTORY=%USERPROFILE%\OWASP-Dependency-CheckSET DC_PROJECT="dependency-check scan: %CD%"set DATA_DIRECTORY="%DC_DIRECTORY%\data"set CACHE_DIRECTORY="%DC_DIRECTORY%\data\cache"IF NOT EXIST %DATA_DIRECTORY% (echo Initially creating persistent directory: %DATA_DIRECTORY%mkdir %DATA_DIRECTORY%)IF NOT EXIST %CACHE_DIRECTORY% (echo Initially creating persistent directory: %CACHE_DIRECTORY%mkdir %CACHE_DIRECTORY%)rem Make sure we are using the latest versiondocker pull owasp/dependency-check:%DC_VERSION%docker run --rm ^--volume %CD%:/src ^--volume %DATA_DIRECTORY%:/usr/share/dependency-check/data ^--volume %CD%/odc-reports:/report ^owasp/dependency-check:%DC_VERSION% ^--scan /src ^--format "ALL" ^--project "%DC_PROJECT%" ^--out /reportrem Use suppression like this: (where /src == %CD%)rem --suppression "/src/security/dependency-check-suppression.xml"
许可证协议
本项目的开发与发布遵循Apache-2.0开源许可协议。
项目地址
Dependency Check:【传送门】
参考资料
GitHub - jeremylong/DependencyCheck: OWASP dependency-check is a software composition analysis utility that detects publicly disclosed vulnerabilities in application dependencies.
OWASP Dependency-Check | OWASP Foundation
相关文章:
Dependency Check:一款针对应用程序依赖组件的安全检测工具
关于Dependency Check Dependency-Check 是一款软件组合分析 (SCA) 工具,可尝试检测项目依赖项中包含的公开披露的漏洞。它通过确定给定依赖项是否存在通用平台枚举 (CPE) 标识符来实现此目的。如果找到,它…...
Python 从入门到实战28(文件的读操作)
我们的目标是:通过这一套资料学习下来,通过熟练掌握python基础,然后结合经典实例、实践相结合,使我们完全掌握python,并做到独立完成项目开发的能力。 上篇文章我们讨论了文件的打开、创建、关闭的相关知识。今天我们将…...
[leetcode刷题]面试经典150题之7同构字符串(简单)
这个题虽然是简单题,但是看了半天还是没啥好思路,最后看了解题学到了不少知识点 1.index() 函数查找序列中首次出现的元素索引 2.zip函数:用于将可迭代的对象(如列表、元组、字典等)作为参数,将对象中对应…...
【Keil5教程及技巧】耗时一周精心整理万字全网最全Keil5(MDK-ARM)功能详细介绍【建议收藏-细细品尝】
💌 所属专栏:【单片机开发软件技巧】 😀 作 者: 于晓超 🚀 个人简介:嵌入式工程师,专注嵌入式领域基础和实战分享 ,欢迎咨询! 💖 欢迎大家࿱…...
【rust】 基于rust编写wasm,实现markdown转换为html文本
文章目录 背景转换预览核心代码前置依赖rustup换源cargo换源中科大 wasm-pack安装 背景 尝试用rust编写一款markdown转html的插件,通过wasm给html使用,不得不说体积挺小,约200K, 比go的wasm起步2MB看着舒服点。 不过go的配置和换…...
Java中的反向代理与负载均衡:Nginx与Java服务的集成
Java中的反向代理与负载均衡:Nginx与Java服务的集成 大家好,我是微赚淘客返利系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!今天我们来探讨一下Java应用中的反向代理与负载均衡,以及如何通过Ngin…...
高级java每日一道面试题-2024年9月26日-运维篇[分布式篇]-如何保证每个服务器的时间都是同步的?
如果有遗漏,评论区告诉我进行补充 面试官: 如何保证每个服务器的时间都是同步的? 我回答: 确保服务器之间的时间同步对于维护分布式系统的一致性、日志记录的准确性以及安全认证的有效性非常重要。以下是几种常见的方法来保证服务器时间同步: 1. 使用NTP&#…...
探索MemGPT:AI界的新宠儿
文章目录 探索MemGPT:AI界的新宠儿1. 背景介绍2. MemGPT是什么?3. 如何安装MemGPT?4. 简单的库函数使用方法5. 场景应用场景一:创建持久聊天机器人场景二:文档分析场景三:多会话聊天互动 6. 常见Bug及解决方…...
处理RabbitMQ连接和认证问题
在使用RabbitMQ进行消息队列管理时,我们可能会遇到各种连接和认证问题。本文将介绍如何诊断和解决这些问题,并通过使用RabbitMQ的管理端进行登录验证来确保配置正确。 1. 问题概述 在最近的一次部署中,我们遇到了两个主要问题: …...
FFmpeg中结构释放小函数
用于FFmpeg一些结构内存释放问题 #pragma once #include <iostream>extern "C" { #include "libavformat/avformat.h" #include "libavcodec/avcodec.h" #include "libavutil/avutil.h" #include "libavutil/frame.h"…...
C语言中的一些小知识(三)
一、你了解printf()吗? 你知道下面代码的输出结果吗? int a123; printf("%2d \n",a); printf() 函数是 C 语言中用于格式化输出的标准函数,它允许你将数据以特定的格式输出到标准输出设备(通常是屏幕)。p…...
编译win2k3中tools目录下i386mk.inc文件的作用
编译win2k3中tools目录下i386mk.inc文件的作用 在Windows Driver Kit(WDK)的根安装目录下,这些文件存储在bin子目录中。 在这些文件中,有特定于该目标的优化规则或汇编指令。可能还需要额外的链接标志、资源编译器标志或C预处理器…...
IPSec隧道协议学习(一)
前情回顾 前面介绍的GRE隧道协议,可以字LAN之间通过Internet建立隧道,实现网络间资源共享,但是GRE隧道协议不能实现加密功能,传输的数据不受加密保护,为了实现在隧道间传输数据包收到加密保护,需要使用IPS…...
计网作业3
1.交换机是依据 MAC地址 来转发数据包的 2.数据链路层 负责将数据封装成帧,在相邻节点间进行传输 数据链路层负责以下任务: 封装数据 物理地址寻址:使用MAC地址进行寻址,确保数据能够在局域网中正确传输到目标节点 介质访问控…...
什么是注入攻击???
在 Java 中,注入攻击是一种利用程序中的安全漏洞来执行恶意代码或获取未经授权的数据的攻击方式。 相关面试题: #{} 和 ${} 的区别是什么? ${}是 Properties 文件中的变量占位符,它可以用于标签属性值和 sql 内部,属…...
牛客小白月赛101(A~E)
文章目录 写在前面A tb的区间问题思路code B tb的字符串问题思路code C tb的路径问题思路code D tb的平方问题思路code E tb的数数问题思路code 牛客小白月赛101 写在前面 最近几天没怎么刷题,昨天晚上打的这场牛客月赛打的很烂,隔几天不刷题感觉自己的…...
MFC设置特定控件字体大小和背景颜色
MFC设置特定控件字体大小和背景颜色 初始化函数里 m_editFont.CreatePointFont(580 , _T("宋体"));m_ctrlEdit.SetFont(&m_editFont);重写消息 HBRUSH CMFCTESTDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) {HBRUSH hbr CDialogEx::OnCtlColor(pDC,…...
专题八_链表_算法专题详细总结
目录 链表 1.常用技巧 1)画图!!! -> 直观 形象 便于我们理解 2)引入虚拟“头”节点 1.便于处理边界条件 2.方便我们对链表进行操作 3.不要吝啬空间,大胆定义变量 4.快慢双指针 1.判断链表是否…...
Vue3使用vue-quill富文本编辑器实现图片大小调整
安装uill-image-resize npm install quill-image-resize --save在项目中导入并注册插件 import { QuillEditor, Quill } from vueup/vue-quill; import ImageUploader from quill-image-uploader; import ImageResize from quill-image-resize; //导入插件 import vueup/vue-…...
感知笔记1:ROS 视觉- 跟随红球
- 目录 - 如何在 ROS 中可视化 RGB 相机。如何作为机器人切换主题。如何创建 blob 检测器。如何获取要跟踪的颜色的颜色编码。如何使用 blob 检测数据并移动 RGB 相机以跟踪 blob。 机器人技术中最常见的传感器是不起眼的 RGB 摄像头。它用于从基本颜色跟踪(blob 跟…...
变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析
一、变量声明设计:let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性,这种设计体现了语言的核心哲学。以下是深度解析: 1.1 设计理念剖析 安全优先原则:默认不可变强制开发者明确声明意图 let x 5; …...
[2025CVPR]DeepVideo-R1:基于难度感知回归GRPO的视频强化微调框架详解
突破视频大语言模型推理瓶颈,在多个视频基准上实现SOTA性能 一、核心问题与创新亮点 1.1 GRPO在视频任务中的两大挑战 安全措施依赖问题 GRPO使用min和clip函数限制策略更新幅度,导致: 梯度抑制:当新旧策略差异过大时梯度消失收敛困难:策略无法充分优化# 传统GRPO的梯…...
VB.net复制Ntag213卡写入UID
本示例使用的发卡器:https://item.taobao.com/item.htm?ftt&id615391857885 一、读取旧Ntag卡的UID和数据 Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click轻松读卡技术支持:网站:Dim i, j As IntegerDim cardidhex, …...
【快手拥抱开源】通过快手团队开源的 KwaiCoder-AutoThink-preview 解锁大语言模型的潜力
引言: 在人工智能快速发展的浪潮中,快手Kwaipilot团队推出的 KwaiCoder-AutoThink-preview 具有里程碑意义——这是首个公开的AutoThink大语言模型(LLM)。该模型代表着该领域的重大突破,通过独特方式融合思考与非思考…...
多模态商品数据接口:融合图像、语音与文字的下一代商品详情体验
一、多模态商品数据接口的技术架构 (一)多模态数据融合引擎 跨模态语义对齐 通过Transformer架构实现图像、语音、文字的语义关联。例如,当用户上传一张“蓝色连衣裙”的图片时,接口可自动提取图像中的颜色(RGB值&…...
视频字幕质量评估的大规模细粒度基准
大家读完觉得有帮助记得关注和点赞!!! 摘要 视频字幕在文本到视频生成任务中起着至关重要的作用,因为它们的质量直接影响所生成视频的语义连贯性和视觉保真度。尽管大型视觉-语言模型(VLMs)在字幕生成方面…...
前端开发面试题总结-JavaScript篇(一)
文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包(Closure)?闭包有什么应用场景和潜在问题?2.解释 JavaScript 的作用域链(Scope Chain) 二、原型与继承3.原型链是什么?如何实现继承&a…...
Rapidio门铃消息FIFO溢出机制
关于RapidIO门铃消息FIFO的溢出机制及其与中断抖动的关系,以下是深入解析: 门铃FIFO溢出的本质 在RapidIO系统中,门铃消息FIFO是硬件控制器内部的缓冲区,用于临时存储接收到的门铃消息(Doorbell Message)。…...
【JVM面试篇】高频八股汇总——类加载和类加载器
目录 1. 讲一下类加载过程? 2. Java创建对象的过程? 3. 对象的生命周期? 4. 类加载器有哪些? 5. 双亲委派模型的作用(好处)? 6. 讲一下类的加载和双亲委派原则? 7. 双亲委派模…...
力扣热题100 k个一组反转链表题解
题目: 代码: func reverseKGroup(head *ListNode, k int) *ListNode {cur : headfor i : 0; i < k; i {if cur nil {return head}cur cur.Next}newHead : reverse(head, cur)head.Next reverseKGroup(cur, k)return newHead }func reverse(start, end *ListNode) *ListN…...
