三方依赖库扫描系统

简介

Dependency-Check 是一款分析软件构成的工具,他会检测项目中依赖项的公开披露漏洞。Dependency-Check 常用于扫描java.NET程序,实验性的分析器有python、ruby、php以及nodejs,这些作为实验性研究是因为他们的高误报率。如果你公司主要使用c,java,这个系统作为作为上线前的扫描不乏是个好选择。

工作原理

  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 -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 只更新数据库

报告解读

不完整的报告截图:

  • Dependency - 被扫描的第三依赖库名字
  • CPE - 所有被识别出来的CPE.
  • GAV - Maven 组, Artifact, 版本 (GAV).
  • Highest Severity - 所有关联的cve的最高漏洞等级
  • CVE Count - 关联的cve个数
  • CPE Confidence - dependency-check正确识别cpe的程度
  • Evidence Count - 识别CPE的数据个数

使用场景

理解了上面depency-check的原理后,应业务的需求,需要把这个开源工具二进制版本封装成web界面,可供自己和业务方调用。笔者也实现了这个功能,github地址。在业务实际使用场景:

1、如果项目迭代很快,项目很多。可以考虑配合代码管理系统,每次新发布前,自动打包文件进行扫描(报告没有修复参考,一般是推荐官方最新版包)

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

笔者对项目封装后的项目地址:https://github.com/he1m4n6a/dcweb,可以很方便的提交三方依赖库的压缩包进行扫描即可。

原文地址:https://www.cnblogs.com/he1m4n6a/p/9230888.html

时间: 2024-10-13 21:25:14

三方依赖库扫描系统的相关文章

yum安装centos系统依赖库

安装centos系统依赖库,安装软件过程中,经常需要的一些库,可以在编译安装软件前执行如下命令: 首先更新系统(这步可以不执行) yum -y update 预安装 编译器及库文件 yum -y install make cmake gcc g++ gcc-c++ gcc-g77 libtool autoconf automake imake libxml2-devel expat-devel yum -y install ncurses ncurses-devel pcre pcre-deve

Linux系统裁减之,制作一个极度精简的Linux-用脚本实现自动拷贝命令和依赖库文件

第2章 用脚本实现自动拷贝命令和依赖库文件 这篇文章主要是对我上一篇博文http://blog.51cto.com/linuxprince/2045703加以完善的,前一篇文章中拷贝命令和依赖库文件的过程是完全手工方式的,显得特别LOW,这章把该过程完善一下,用脚本方式实现. 2.1命令具体实现方法 创建脚本文件bincp.sh输入一下内容: #!/bin/bash # DESPATH=/mnt/sysroot libcp() { LIBPATH=${1%/*} [ ! -d $LIBPATH

VS2012中使用CEGUI项目发布到XP平台的问题(核心方法就一句话。“你项目使用的所有外部依赖库都用/MT编译。”)

接着上一篇文章,详细说说如何把一个带CEGUI的项目发布到XP平台. 这个问题纠缠了我好几天.这里把详细解决思路记下来.有同样问题的朋友可以少走很多弯路. 核心方法就一句话.“你项目使用的所有外部依赖库都用/MT编译.” 1.准备. 首先你要具备如下工具:CEGUI源码:FreeType源码:Pcre源码:CMake工具.我会在下文说明原因. 各个开源库的版本号,请参考你的CEGUI引用的各自的头文件分别下载. FreeType开源库主页:http://sourceforge.net/proje

Qt程序发行Linux版,软件打包知识(patchelf 工具修改依赖库,确认 qmake -v 是自己使用的Qt版本,否则用export PATH进行修改)good

patchelf 工具可以修改已编译运行程序的依赖库位置和指定库链接器 patchelf --set-rpath patchelf --set-interpreter 通过这个工具 https://github.com/probonopd/linuxdeployqt 如果自己编译不了,也可以下载现成的 https://github.com/probonopd/linuxdeployqt/releases 运行 ./linuxdeployqt-2-x86_64.AppImage ShanbayDi

如何使用CocoaPods安装使用及配置私有库以及管理依赖库 【原创】

CocoaPods是什么 在iOS开发中势必会用到一些第三方依赖库,比如大家都熟悉的ASIHttpRequest.AFNetworking.JSONKit等.使用这些第三方类库能极大的方便项目的开发,但是,集成这些依赖库需要我们手动去配置,例如集成ASIHttpRequest库时除了加入源码以外还需要手动去添加一些系统框架,比如CFNetwork.MobileCoreServices等,如果这些第三方库发生了更新,还需要手动去更新项目.这就显得非常麻烦.有麻烦自然有解决办法,CocoaPods就

Win7 64位qt-windows-x86-msvc2015-5.6.0 DLL依赖库打包

今天开始系统的学习QT,第一个测试的问题就是在纯净的系统中如何正常运行,也就是找出QT生成的exe的依赖库问题 网上搜了下可以简单粗暴的用 D:\Qt\Qt5.6.0\5.6\msvc2015\bin\windeployqt.exe 这个自带的工具,然后在后面加个要打包的QT程序目录 如 D:\Qt\Qt5.6.0\5.6\msvc2015\bin\windeployqt.exe xxx\yyy\zzz\progName.exe 这样就会把一些QT相关DLL和目录打包到 xxx\yyy\zzz\

使用CocoaPods管理依赖库

这篇内容将介绍Mac和iOS开发中必备的一个依赖库管理工具CocoaPods. 在iOS开发中势必会用到一些第三方依赖库,比如大家都熟悉的ASIHttpRequest.AFNetworking.JSONKit等.使用这些第三方类库能极大的方便项目的开发,但是,集成这些依赖库需要我们手动去配置,例如集成ASIHttpRequest库时除了加入源码以外还需要手动去添加一些系统的framework,CFNetwork.MobileCoreServices等,如果这些第三方库发生了更新,还需要手动去更新

小黑的日常折腾-复制外部命令的可执行文件和依赖库文件到指定目录下的对应目录

清明三天假期基本都是在写脚本中度过了,今天又折腾了一个新的脚本,该脚本的作用是快速复制一个或多个命令的可执行文件和依赖库文件到一个模拟的根文件系统下的相应目录下,这个脚本平时运维估计用不到,只有自己制作一个小的Linux发行版时才有可能使用该脚本. 脚本具体的功能如下: 1)提示用户选择要从文本中读取要复制的命令名还是从当前终端中交互式输入命令名. 2)用户选择前者,会自动使用vim打开一个文件,用户根据格式说明填入要复制的命令的名称,可以是多个命令,保存退出后自动执行复制操作. 3)用户选择后

系列篇|编译可在Android上运行的依赖库(一):glib库

前言 这是系列文章,它们由<编译可在Android上运行的glib库>及其他4篇文章组成,这4篇文章在“编译依赖库”一节中列出.由于glib库依赖于其他第三方库,所以需要先将依赖的第三方库交叉编译到Android平台上才能成功的编译glib库,系列文章中除<编译可在Android上运行的glib库>外的其他交叉编译文章均是介绍如何对glib依赖库进行交叉编译.以上,所以叫系列文章,因为这些文章完整的介绍了如何编译可在Android上运行的glib库. 文章价值 这些文章的核心价值是