目录

文章综述

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 只更新数据库,不做扫描

报告解读

部分报告截图:

关于扫描的准确性,笔者搜集测试了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也放到一览里面就更好了。。。

组件漏洞测试工具---Dependency-Check的更多相关文章

  1. [原创]K8 Struts2 Exp 20170310 S2-045(Struts2综合漏洞利用工具)

    工具: K8 Struts2 Exploit组织: K8搞基大队[K8team]作者: K8拉登哥哥博客: http://qqhack8.blog.163.com发布: 2014/7/31 10:24 ...

  2. WebLogic中WLS 组件漏洞(CVE-2017-10271)专项检测工具

    来源: 时间:2017-12-23 00:00:00 作者: 浏览:1929 次 近期安恒信息在应急响应过程中发现有恶意攻击者利用WebLogic漏洞对企业服务器发起大范围远程攻击,攻击成功后植入挖矿 ...

  3. webgoat白盒审计+漏洞测试

    前言 小白,记录,有问题可以交流 乖乖放上参考链接: https://www.freebuf.com/column/221947.html https://www.sec-un.org/java代码审 ...

  4. Python渗透测试工具合集

    摘自:http://www.freebuf.com/tools/94777.html 如果你热爱漏洞研究.逆向工程或者渗透测试,我强烈推荐你使用 Python 作为编程语言.它包含大量实用的库和工具, ...

  5. 常见Android测试工具简介

    在进行android设备测试过程中,在进行系统测试时候,往往需要关注到很多方面,导致一个崩溃或者运行一段时间自动重启或者停止的问题很多.最简单来看,影响因素就有:底层硬件设备.OS层.上层app层.另 ...

  6. 12个强大的Web服务测试工具

    在过去的几年中,web服务或API的普及和使用有所增加. web服务或API是程序或软件组件的集合,可以帮助应用程序进行交互或通过形成其他应用程序或服务器之间的连接执行一些进程/事务处理.基本上有两种 ...

  7. python渗透测试工具集合

    作者:一起学习Python 原文链接:https://zhuanlan.zhihu.com/p/21803985 著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 在进行漏洞研究. ...

  8. 【星云测试】开发者测试-采用精准测试工具对Spring Boot应用进行测试

    简介:本文主要介绍把现今主流的springboot框架项目和精准测试工具进行结合和应用,通过精准测试的数据穿透.数据采集.测试用例与代码的双向追溯.数据分析等一系列精准测试的特有功能,达到对项目质量的 ...

  9. 【星云测试】开发者测试(2)-采用精准测试工具对J2EE Guns开发框架进行测试

    配置测试Guns Guns简介 Guns是一个近几年来基于SpringBoot的开源便利且较新的JavaEE项目开发框架,它整合了springmvc + shiro + mybatis-plus + ...

  10. 【星云测试】开发者测试(3)-采用精准测试工具对springcloud微服务应用进行穿透测试

    1.微服务简介 微服务英文名称Microservice,Microservice架构模式就是将整个Web应用组织为一系列小的Web服务.这些小的Web服务可以独立地编译及部署,并通过各自暴露的API接 ...

随机推荐

  1. 配置 kali linux 的 apt (包管理工具) ,换成国内源

    1. 查看 apt 的源 输入命令: vim /etc/apt/sources.list 修改之后: 快捷键 A 进入编辑模式 : ESC 键 然后 输入 "  :wq  "  就 ...

  2. 40. diff 的新旧节点数组如何比较

    根据唯一标识符key值,把新旧的节点比较,不同就更新到新节点,相同就复用就节点,然后生成新的 Vnode :

  3. FHQ treap(再见splay------)

    但凡打过平衡树的应该都知道\(\huge{二逼平衡树}\)这道题,抄了两个小时的splay版题解,然后发现了\(\huge\color{maroon}FHQ treap\): $\large\colo ...

  4. 云原生周刊:Gateway API 1.0.0 发布 | 2023.11.6

    开源项目推荐 Kueue Kueue 是一套用于作业队列的 API 和控制器.它是作业级管理器,可决定何时允许作业启动(如创建 pod),何时停止作业(如删除活动 pod). Reloader 一个 ...

  5. 【241027-论文阅读】DGraph: A Large-Scale Financial Dataset for Graph Anomaly Detection

    DGraph: A Large-Scale Financial Dataset for Graph Anomaly Detection DGragh是一个用于图异常检测(gragh anomaly d ...

  6. 深度解读GaussDB逻辑解码技术原理

    本文分享自华为云社区<[GaussTech技术专栏]GaussDB逻辑解码技术原理>,作者:GaussDB 数据库. 1.背景 随着国内各大行业数字化改造步伐的加快,异构数据库数据同步的需 ...

  7. 【Azure Bot Service】部署Python ChatBot代码到App Service中

    问题描述 使用Python编写了ChatBot,在部署到App Service,却无法启动. 通过高级工具(Kudu站点:https://<your site name>.scm.chin ...

  8. SSIS连接Excel2007版本之后的数据源

    今天我发现了新大陆,兴奋得不得了,由于原文写得太过详细与专业,我就偷偷懒直接Copy过来了,怕自己以后没地儿找,哈哈哈 原文链接:https://www.cnblogs.com/biwork/p/34 ...

  9. 洛谷:P5707 【深基2.例12】上学迟到 (纯净的顺序结构)

    本文纯作者吃饱了没事干写的,仅供奇特思路参考和娱乐 最近尝试找一个体量精良的刷题平台重新提升一下自己的编程能力,所以选择了洛谷. 题目描述 学校和 yyy 的家之间的距离为 s 米,而 yyy 以 v ...

  10. 0.3 preface

    Preface 此书的目的是双重的: 1. 介绍多个领域的背景材料,让学生更好地理解和学习: 2. 详细讲解量子计算和量子信息领域的重要结论,既可以作为学生通识教育的一部分,又可以作为独立研究的前奏. ...