目录

文章综述

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. yaml.load与yaml.dump的用法

    import yaml #向yaml文件中写 with open("E:\个人\ rename.yaml", 'w') as f: project = {'在远方':"1 ...

  2. Vue 路由的懒加载的作用

    不会一次性加载全部的路由 ,使用哪个页面 就会加载哪个路由 : 可以优化spa页面首次加载  :

  3. 云原生周刊:在 Kubernetes 集群中使用通配符证书 | 2024.2.19

    开源项目推荐 kube-fledged kube-fledged 是一个 Kubernetes Operator,用于直接在 Kubernetes 集群的工作节点上创建和管理容器映像的缓存.它允许用户 ...

  4. python多线程应用-批量下载拉勾网课程

    import concurrent import os import re import time from collections.abc import Iterable from Crypto.C ...

  5. Java跳出当前的多重嵌套循环的3种解决方法

    Java跳出当前的多重嵌套循环的3种解决方法(以双重嵌套为例) 方法一:使用一个布尔型的标记变量flag 1 public static void method1() { 2 boolean flag ...

  6. C++ mutable与常对象语义详解

    摘编自 <Effective C++> 条款三. "成员函数如果是const" 或者 "一个对象是const对象"到底意味什么?有两个流行概念:bi ...

  7. 云游戏平台陷入苦战,继青椒云,云更新,顺网云后,ToDesk正在布局云电竞市场

    在日新月异的科技浪潮中,云游戏正在逐步成为游戏产业的重要分支.根据中国信通院<2023年全球云游戏产业深度观察及趋势研判研究报告>,2022年中国云游戏市场收入达到63.5亿元,同比增长5 ...

  8. UniswapV2Pair细节

    UniswapV2Pair合约是Uniswap V2协议中的核心部分,用于管理流动性池.代币交换.流动性代币的铸造和销毁等操作.以下是对UniswapV2Pair合约中所有主要方法及其参数的详细讲解. ...

  9. 最新情报 2024免费开源 WAF

    WAF 是 Web Application Firewall 的缩写,也被称为 Web 应用防火墙.区别于传统防火墙,WAF 工作在应用层,对基于 HTTP/HTTPS 协议的 Web 系统有着更好的 ...

  10. RAG 系统高效检索提升秘籍:如何精准选择 BGE 智源、GTE 阿里与 Jina 等的嵌入与精排模型的完美搭配

    RAG 系统高效检索提升秘籍:如何精准选择 BGE 智源.GTE 阿里与 Jina 等的嵌入与精排模型的完美搭配 Text Embedding 榜单:MTEB.C-MTEB <MTEB: Mas ...