组件漏洞测试工具---Dependency-Check

目录

文章综述

Dependency-Check简介

工作原理

常用命令

报告解读

使用场景

 缺点


文章综述

本文主要介绍Dependency-Check工具的工作原理和使用方法,并提供一个开源方案帮助企业建设SDL中的一环。

 

Dependency-Check简介

使用 "存在已知漏洞的组件" 已经成为OWASP TOP 10的漏洞之一了。所以,越来越有必要对上线前的项目做好三方依赖库的检测,寻找中已知的漏洞,降低上线后的安全风险。Dependency-Check 就是这样的一款工具。他会分析软件构成,检测项目中依赖项的公开披露漏洞。Dependency-Check 常用于扫描java.NET程序,另外还有些实验性的分析器,例如:python、ruby、php以及nodejs等,这些作为实验性研究是因为他们的高误报率。如果你公司主要使用c#,java开发程序,那这款工具作为项目上线前的漏洞扫描不乏是个好选择。

Dependency-Check 发行的版本主要有jenkins插件、命令行工具、maven插件等,详解介绍可查看https://github.com/jeremylong/DependencyCheck,以下是基于命令行工作模式的介绍。

 

工作原理

  1. Dependency-Check工作的方式是通过分析器对文件进行扫描搜集信息,搜集到的信息被叫做迹象。

  2. 这边共搜集3种迹象,分时是vendor(供应商),product(产品)和version(版本)。例如,jarAnalyzer将从jar文件包中的Mainfest、pom.xml和包名进行信息搜集,然后把各种搜集到的源放到一个或者多个迹象表里。

  3. 通过搜集到的迹象和CPE条目(NVD、CVE数据索引)进行匹配,分析器匹配到了就会给个标志发送到报告。

  4. Dependency-Check 目前不使用hash识别文件,因为第三方依赖从源码中的hash值构建通常不会匹配官方发布版本的hash。后续版本中可能会增加一些hash来匹配一些常用的第三方库,例如Spring, Struts等。

 

常用命令

详细参数可使用./dependency-check.sh -h查看,以下列出一些最常用的参数:

  • ./dependency-check.sh -n --project "test" --scan "WEB-INF/lib/" -o output.html

  • · -n 不更新漏洞库,默认4小时自动拉取

  • · --project 项目名字

  • · --scan 扫描的路径或文件(可以扫目录,也可以直接扫压缩文件,zip,war,tgz等)

     

  • /dependency-check.sh -n --project "test" --scan "strusts2.war" --log logfile

  • · 扫描压缩文件

  • · --log 日志记录

     

  • ./dependency-check.sh --updateonly

  • · --updateonly 只更新数据库,不做扫描

 

报告解读

部分报告截图:

图片1.png

图片2.png

 

 

关于扫描的准确性,笔者搜集测试了java三方依赖库。得到的结论是准确率高、误报率低、覆盖率高,适合在实际业务中使用该工具进行上线前的漏洞扫描(java三方依赖库)。

报告中一些重要字段的含义:

· Dependency - 被扫描的第三依赖库名字

· CPE - 所有被识别出来的CPE.

· GAV - Maven 组, Artifact, 版本 (GAV).

· Highest Severity - 所有关联的cve的最高漏洞等级

· CVE Count - 关联的cve个数

· CPE Confidence - dependency-check正确识别cpe的程度

· Evidence Count - 识别CPE的数据个数

 

使用场景

在企业中实际应用的场景:

1、项目很多,迭代很块:可以考虑结合代码管理系统,每次新发布前,自动提交进行扫描

2、项目迭代不快,或者只想监控重点项目:可让业务提单,安全人员进行扫描后提供结果和修复建议给到业务方。

(注意点:报告是英文报告,不过很直观,可以根据上面的介绍写个说明文档供业务参考;报告没有修复参考,一般的修复方案是推荐有漏洞的组件更新到最新版。)

根据实际业务场景的需求,笔者把这个Dependency-Check二进制版本封装成web接口,可供自己和业务方调用。项目地址:https://github.com/he1m4n6a/dcweb。项目中还有很多地方可以完善,后续根据需求会补充改造。

例如:

1、添加接口鉴权

2、解析报告并输出中文漏洞报告到邮件


 缺点

      报告的可读性还是有点差的,这个项目貌似开源的,如果能将呈现方式修改一下就好了,特别是将CVE也放到一览里面就更好了。。。

  • 1
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: dependency-check工具是一款用于检测应用程序中存在的已知漏洞的工具。它可以扫描应用程序的依赖关系,包括第三方库和框架,以查找已知漏洞,并生成报告。使用该工具可以帮助开发人员及时发现并修复应用程序中的漏洞,提高应用程序的安全性。 ### 回答2: Dependency-check工具是一种用于分析软件依赖关系及相关漏洞的安全工具。使用该工具能够帮助软件开发人员、测试人员及安全工程师在开发和测试过程中及时发现和解决漏洞问题,从而提高软件安全性。 使用dependency-check工具,需要先进行相关环境的配置。该工具支持Windows、Linux、macOS等不同操作系统,同时也支持各种编程语言,如Java、JavaScript、Python等。在安装好相应的依赖组件及配置好运行环境后,就可以将dependency-check工具加入到项目的构建过程中。 该工具能够检查项目中所使用的第三方库的漏洞情况,包括漏洞类型、CVSS评分等,并将检测结果统计分析后反馈给开发人员。该工具还支持高度定制化,能够根据具体的需求进行自定义配置,如排除指定的漏洞或库、指定输出格式等。除此之外,该工具还支持扫描多个项目,并能够将检测结果存储到数据库中以便于管理。 总之,dependency-check工具是一款极为实用的安全分析工具,能够提高软件开发者和测试人员的工作效率,发现并解决软件漏洞,保障软件的安全性。 ### 回答3: dependency-check 是一个用于安全审计和脆弱性管理的开源工具。它可以扫描您的应用程序及其依赖项,识别相关的脆弱性和漏洞,并生成报告以供您进一步处理。 使用 dependency-check 进行应用程序安全审计的步骤如下: 1. 安装 dependency-check 工具:您可以从官方网站下载最新的可执行文件,也可以使用 Maven 或 Gradle 等构建工具进行集成。 2. 配置 dependency-check 工具:您需要指定要扫描的应用程序和相关依赖项的路径,以及其他配置参数,如要扫描的包类型、CVE 数据库更新源等。 3. 运行依赖扫描:运行 dependency-check 扫描工具来扫描应用程序及其依赖项,首先要更新 CVE 数据库并下载需要扫描的包类型,然后扫描软件包与 CVE 数据库比对。 4. 处理扫描结果:dependency-check 会生成 HTML、XML 和 CSV 格式的扫描报告,您需要对报告进行进一步的处理和分析,包括查看漏洞详情、评估风险等,并采取相应的修复措施。 除此之外,还需要注意以下几点: 1. 定期更新 CVE 数据库:由于漏洞和脆弱性的不断出现和演变,CVE 数据库也需要定期更新,以确保使用最新的 CVE 数据库进行扫描。 2. 注意扫描配置:不同语言和应用程序类型的依赖关系不同,需要使用不同的扫描配置参数,以确保扫描结果的准确性和完整性。 3. 处理报告:扫描报告会生成大量信息,需要对其进行分类、过滤和整理,以便更好地处理和分析漏洞信息。 总之,dependency-check 是一个功能强大的开源安全审计和脆弱性管理工具,可以帮助您及时发现和解决应用程序中的漏洞问题,提高应用程序的安全性和稳定性。但需要注意扫描配置和处理报告等细节问题,以取得最好的扫描结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值