代码依赖包安全漏洞检测神器 —— Dependency Check

2021年11月23日 阅读数:4
这篇文章主要向大家介绍代码依赖包安全漏洞检测神器 —— Dependency Check,主要内容包括基础应用、实用技巧、原理机制等方面,希望对大家有所帮助。

目前各个企业对于应用的安全愈来愈重视,而解决应用漏洞的本质是从代码安全抓起。一般关于代码的安全问题有两类:代码自己的安全问题和代码依赖包存在的安全问题。对于代码自己的安全问题,咱们能够经过静态代码分析工具解决,能够参考文章:html

使用神器Spotbugs,轻松入门静态代码分析 - 简书node

而对于代码依赖包的安全问题是咱们这篇文章重点解决的事情,业界一般使用Dependency-Check来检查代码中是否存在任何已知的,公开披露的安全漏洞。他检查依赖项中是否存在漏洞的原理也跟咱们熟知的病毒查杀软件同样,预先定义好目前已知的安全漏洞库,检查依赖包时,发现这些漏洞就会报错,最后按期更新安全漏洞库便可!git

工具介绍:

Dependency-Check

Dependency-Check是OWASP(Open WebApplication Security Project)的一个实用开源程序,用于识别项目依赖项并检查是否存在任何已知的,公开披露的漏洞。目前,已支持Java、.NET、Ruby、Node.js、Python等语言编写的程序,并为C/C++构建系统(autoconf和cmake)提供了有限的支持。并且该工具仍是OWASP Top 10的解决方案的一部分。github

NVD

Dependency-Check依赖NVD漏洞数据库(美国国家通用漏洞数据库)进行依赖漏洞检查(全球信息安全领域著名的漏洞数据库包括中国国家信息安全漏洞库,美国国家信息安全漏洞库NVD,赛门铁克漏洞库等等)官网:https://nvd.nist.gov/数据库

NVD的更新频率是出现问题实时更新,具体连接: https://nvd.nist.gov/general/nvd-dashboardjson

CVSS

NVD评级依赖CVSS(CommonVulnerability Scoring System),即“通用漏洞评分系统”,是一个“行业公开标准,其被设计用来评测漏洞的严重程度,并帮助肯定所需反应的紧急度和重要度,具体评分标准以下:windows

 
 

目前主要参考cvss v3.0,具体级别的漏洞数目以下图所示:安全

 
 

使用方法

命令行方式

命令行方式建议测试人员使用,能够在没有源码的状况下进行代码安全检测。maven

Dependency-Check工具下载地址https://owasp.org/www-project-dependency-check/,在右侧选择command line,以下图:工具

 

 
 

默认方式

下载解压后进入bin文件夹,在windows系统下执行命令:

dependency-check.bat --disableRetireJS --disableNodeJS --project test -s D:\checkjar\-o D:\report\

其中:

-project表明工程名

–s表明检查的jar包文件夹,把须要检查的jar包放到该目录下便可

–o表明报表输出的路径

--disableRetireJS不检查js,

--disableNodeJS不检查nodejs

本地NVD库方式

咱们能够在本地搭建一个NVD库来提升更新效率,

具体能够参考https://jeremylong.github.io/DependencyCheck/data/mirrornvd.html

使用本地nvd库,具体命令以下:

dependency-check.bat

--cveUrlModified 本地nvd库的url/nvdcve-1.1-modified.json.gz 

--cveUrlBase本地nvd库的url/nvdcve-1.1-2020.json.gz

--project test -s D:\checkjar\ -oD:\report\

其中–cveUrlModified和–cveUrlModified指定本地NVD库

注意,若是执行命令失败,从新执行一次就OK!

报告分析

生成的报表文件以下图,通常只需关注HighestSeverity 列中的CRITICAL和HIGH级别漏洞,能够看到检测出2个jar包存在高危漏洞。

 

 
 

点击具体jar包,能够看到具体的修复方案,以下所示:

 
 

报告中的含义是jackson-xc-1.8.3jar是有安全问题的,这个问题在2.8.10和2.9.1版本以前是存在的,因此咱们只要把jar包升级到2.9.1版本以上便可修复这个问题!

配置Maven插件方式

该方式建议开发人员使用,经过maven方式检测依赖包中是否存在安全问题则须要修改较多pom中的内容。

https://search.maven.org/artifact/org.owasp/dependency-check-maven/5.3.2/maven-plugin

总结

通常来讲对于代码依赖包的安全问题是由开发本身测试的,若是咱们测试想要介入的话使用命令行方式便可,把须要检查的jar包放到指定的目录中,而后对全部jar包进行总体扫描。原创不易,若是文章帮到了你,欢迎转发点赞,让更多的朋友受益!