Dependency Check:一款针对应用程序依赖组件的安全检测工具

news2024/9/20 6:25:07

关于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/sh

 

DC_VERSION="latest"

DC_DIRECTORY=$HOME/OWASP-Dependency-Check

DC_PROJECT="dependency-check scan: $(pwd)"

DATA_DIRECTORY="$DC_DIRECTORY/data"

CACHE_DIRECTORY="$DC_DIRECTORY/data/cache"

 

if [ ! -d "$DATA_DIRECTORY" ]; then

    echo "Initially creating persistent directory: $DATA_DIRECTORY"

    mkdir -p "$DATA_DIRECTORY"

fi

if [ ! -d "$CACHE_DIRECTORY" ]; then

    echo "Initially creating persistent directory: $CACHE_DIRECTORY"

    mkdir -p "$CACHE_DIRECTORY"

fi

 

# Make sure we are using the latest version

docker pull owasp/dependency-check:$DC_VERSION

 

docker 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 off

 

set DC_VERSION="latest"

set DC_DIRECTORY=%USERPROFILE%\OWASP-Dependency-Check

SET 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 version

docker 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 /report

    rem 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

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

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

相关文章

Arthas thread(查看当前JVM的线程堆栈信息)

文章目录 二、命令列表2.1 jvm相关命令2.1.2 thread&#xff08;查看当前JVM的线程堆栈信息&#xff09;举例1&#xff1a;展示[数字]线程的运行堆栈&#xff0c;命令&#xff1a;thread 线程ID举例2&#xff1a;找出当前阻塞其他线程的线程 二、命令列表 2.1 jvm相关命令 2.…

展锐平台的手机camera 系统开发过程

展锐公司有自己的isp 图像处理引擎&#xff0c;从2012 年底就开始在智能手机上部署应用。最初的时候就几个人做一款isp的从hal 到kernel 驱动的完整软件系统&#xff0c;分工不是很明确&#xff0c;基本是谁擅长哪些就搞哪些&#xff0c;除了架构和编码实现之外&#xff0c;另外…

Flask项目入门和视图

1、第一个项目的结构 以示例代码中的入口文件app.py为例子 &#xff08;1&#xff09;引入Flask以及创建Flask对象 from flask import Flask app Flask(__name__)&#xff08;2&#xff09; 路由route 视图函数 app.route(/index/) def hello_world():# 响应&#xff1a;…

超详细PS2019安装教程与安装步骤图文解析!保姆级教程!(附赠PS下载地址)

步骤1&#xff1a;下载Adobe Photoshop PS CC 2023下载链接&#xff1a;https://pan.quark.cn/s/f997e116f327 下载完成后&#xff0c;解压文件到当前文件夹&#xff08;随便用什么解压软件都行&#xff0c;现在解压软件都是免费的&#xff0c;没有的到360官网下载360压缩&am…

开源RK3588 AI Module7,并与Jetson Nano生态兼容的低功耗AI模块

RK3588 AI Module7 搭载瑞芯微 RK3588&#xff0c;提供强大的 64 位八核处理器&#xff0c;最高时钟速度为 2.4 GHz&#xff0c;6 TOPS NPU&#xff0c;并支持高达 32 GB 的内存。它与 Nvidia 的 Jetson Nano 接口兼容&#xff0c;具有升级和改进的 PCIe 连接。由于该模块的多功…

Photoshop 2020安装教程

软件介绍 Adobe Photoshop&#xff0c;简称“PS”&#xff0c;是美国Adobe公司旗下最为出名的图像处理软件系列之一。ps 2021新增一键换天空&#xff0c;AI只能滤镜&#xff0c;新增内置的画笔工具极为丰富&#xff0c;成千上万的精致像素、动态和矢量画笔可以满足你的各种绘图…

【Qt | QAction】Qt 的 QAction 类介绍

&#x1f601;博客主页&#x1f601;&#xff1a;&#x1f680;https://blog.csdn.net/wkd_007&#x1f680; &#x1f911;博客内容&#x1f911;&#xff1a;&#x1f36d;嵌入式开发、Linux、C语言、C、数据结构、音视频&#x1f36d; &#x1f923;本文内容&#x1f923;&a…

基于深度学习的手势识别算法(论文复现)

基于深度学习的手势识别算法&#xff08;论文复现&#xff09; 本文所涉及所有资源均在传知代码平台可获取 文章目录 基于深度学习的手势识别算法&#xff08;论文复现&#xff09;概述算法原理核心逻辑效果演示使用方式 概述 本文基于论文 Simple Baselines for Human Pose Es…

在WPF中自定义控件时如何选择基类

在WPF中需要自定义控件&#xff0c;首要要选择需要继承的基类 FrameworkElement 这是常用的最低级的基类。通常&#xff0c;只有当希望重写OnRender()方法并使用DrawingContext从头绘制内容时&#xff0c;才会继承该类。 Control 当从头开始创建控件时&#xff0c;这是最常用…

茴香豆:企业级知识问答工具实践闯关任务

基础任务 在 InternStudio 中利用 Internlm2-7b 搭建标准版茴香豆知识助手&#xff0c;并使用 Gradio 界面完成 2 轮问答&#xff08;问题不可与教程重复&#xff0c;作业截图需包括 gradio 界面问题和茴香豆回答&#xff09;。知识库可根据根据自己工作、学习或感兴趣的内容调…

pytorch学习笔记一:作用、安装和基本使用方法、自动求导机制、自制线性回归模型、常见tensor格式、hub模块介绍

文章目录 一、安装二、基本使用方法①创建一个矩阵②获得随机值③初始化全零矩阵④直接传入数据⑤构建矩阵&#xff0c;然后随机元素值⑥展示矩阵大小⑦矩阵计算8、取索引9、view操作&#xff1a;改变矩阵维度10、与numpy的协同操作 三、自动求导机制1&#xff09;定义tensor成…

【error】The minimum required version for Powerlevel10k is 5.1

文章目录 一、背景二、原因三、解决1、安装 ZSH 最新版本2、效果3、下载了还是显示 ZSH 版本为 5.0.2 怎么办 一、背景 安装 ZSH 主题 Powerlevel10k 时报错&#xff1a; You are using ZSH version 5.0.2. The minimum required version for Powerlevel10k is 5.1. Type ‘ec…

ppt一键生成免费版软件有哪些?如何高效生成论文答辩?

答辩经验丰富的人都知道&#xff0c;制作论文答辩ppt是一项既繁琐又耗时的工作。 我们需要从数万字的论文中提炼关键点&#xff0c;梳理内容的逻辑关系&#xff0c;然后进行细致的排版和美化&#xff0c;最后还要进行反复的检查和试讲。整个过程不仅耗费时间&#xff0c;而且需…

MVP 最简可行产品

MVP&#xff08;最小可行产品&#xff09;是一种产品开发策略&#xff0c;其主要目的是用最少的时间和资源&#xff0c;开发一个包含最基本必要功能的产品。这样做的目的是能够以最小的成本进入市场&#xff0c;获取用户反馈&#xff0c;再根据反馈逐步优化产品。 MVP是什么 …

1网络安全的基本概念

文章目录 网络安全的基本概念可以总结为以下几个方面&#xff1a; 网络安全的需求&#xff1a; 信息安全的重要性&#xff1a;信息安全是计算机、通信、物理、数学等领域的交叉学科&#xff0c;对于社会的发展至关重要。信息安全的目标&#xff1a;主要包括保密性、完整性、可用…

C/S架构与B/S架构的适用场景分析

C/S架构&#xff08;客户端/服务器架构&#xff09;与B/S架构&#xff08;浏览器/服务器架构&#xff09;在适用场景上各有特点&#xff0c;主要取决于应用的具体需求、用户群体、系统维护成本、跨平台需求等因素。 一、C/S架构的适用场景 1、高性能与交互性要求高的应用&…

闯关leetcode——58. Length of Last Word

大纲 题目地址内容 解题代码地址 题目 地址 https://leetcode.com/problems/length-of-last-word/description/ 内容 Given a string s consisting of words and spaces, return the length of the last word in the string. A word is a maximal substring consisting of…

docker从容器提取镜像并上传至dockerhub

一、使用commit从容器中提取镜像 例如 //docker commit 容器名 想要创建的镜像名:版本号 docker commit epsilon_planner epsilon_planner:latest导出完成后镜像如图所示 二、登陆dockerhub并创建仓库 登陆dockerhub&#xff0c;点击Create repository创建仓库&#xff0c…

小程序体验版无法正常请求接口,开启 调试可以正常请求

在本地开发工具可以正常访问小程序&#xff0c;上传代码后打开体验版&#xff0c;界面无法请求接口&#xff0c;手机小程序打开调试模式可以正常访问。这可以查看下小程序后台是否设置了服务器域名以及业务域名 然后查看小程序开发工具 - 详情 - 项目配置 重新上传代码&#xf…

北斗盒子TD20——水上作业的安全防线,落水报警守护生命

在广阔的水域上&#xff0c;水上作业人员面临着多变的环境和潜在的风险。近年来&#xff0c;随着海洋经济的快速发展&#xff0c;海上作业活动日益频繁&#xff0c;人员安全问题也日益凸显。传统的海上救援手段存在诸多不足&#xff0c;如救援响应时间长、定位不准确等。 水上…