zoukankan      html  css  js  c++  java
  • 组件漏洞测试工具DependencyCheck

    目录

    文章综述

    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也放到一览里面就更好了。。。

  • 相关阅读:
    WCF Server Console
    Restart IIS With Powershell
    RestartService (recursively)
    Copy Files
    Stopping and Starting Dependent Services
    多线程同步控制 ManualResetEvent AutoResetEvent MSDN
    DTD 简介
    Using Powershell to Copy Files to Remote Computers
    Starting and Stopping Services (IIS 6.0)
    java中的NAN和INFINITY
  • 原文地址:https://www.cnblogs.com/exmyth/p/15542702.html
Copyright © 2011-2022 走看看