代码依赖包安全漏洞检测神器 —— Dependency Check
目前各个企业对于应用的安全越来越重视,而解决应用漏洞的本质是从代码安全抓起。通常关于代码的安全问题有两类:代码本身的安全问题和代码依赖包存在的安全问题。对于代码本身的安全问题,我们可以通过静态代码分析工具解决,可以参考文章:
而对于代码依赖包的安全问题是我们这篇文章重点解决的事情,业界通常使用Dependency-Check来检查代码中是否存在任何已知的,公开披露的安全漏洞。他检查依赖项中是否存在漏洞的原理也跟我们熟知的病毒查杀软件一样,预先定义好目前已知的安全漏洞库,检查依赖包时,发现这些漏洞就会报错,最后定期更新安全漏洞库即可!
工具介绍:
Dependency-Check
Dependency-Check是OWASP(Open WebApplication Security Project)的一个实用开源程序,用于识别项目依赖项并检查是否存在任何已知的,公开披露的漏洞。目前,已支持Java、.NET、Ruby、Node.js、Python等语言编写的程序,并为C/C++构建系统(autoconf和cmake)提供了有限的支持。而且该工具还是OWASP Top 10的解决方案的一部分。
NVD
Dependency-Check依赖NVD漏洞数据库(美国国家通用漏洞数据库)进行依赖漏洞检查(全球信息安全领域著名的漏洞数据库包括中国国家信息安全漏洞库,美国国家信息安全漏洞库NVD,赛门铁克漏洞库等等)官网:https://nvd.nist.gov/
NVD的更新频率是出现问题实时更新,具体链接: https://nvd.nist.gov/general/nvd-dashboard
CVSS
NVD评级依赖CVSS(CommonVulnerability Scoring System),即“通用漏洞评分系统”,是一个“行业公开标准,其被设计用来评测漏洞的严重程度,并帮助确定所需反应的紧急度和重要度,具体评分标准如下:

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

使用方法
命令行方式
命令行方式建议测试人员使用,可以在没有源码的情况下进行代码安全检测。
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包进行整体扫描。原创不易,如果文章帮到了你,欢迎转发点赞,让更多的朋友受益!
代码依赖包安全漏洞检测神器 —— Dependency Check的更多相关文章
- Cisco IOS和IOS XE 新漏洞检测与修复
Cisco IOS/IOS XE 新漏洞检测与修复 CVE-2018-0150 Cisco IOS XE 存在默认弱口令 漏洞影响: 默认弱口令可以导致攻击者直远程登录控制Cisco设备.受影响版本, ...
- 如何处理pom文件中没有找到HUB检查到高危漏洞的依赖包
最近使用HUB工具检查到maven工程中存在高危险漏洞,虽然定位到具体的引用包了,但是在pom文件中却没有发现该依赖包.此时,我们就需要用到这条命令mvn dependency:tree,该命令会将m ...
- 使maven2在下载依赖包的同时下载其源代码包。
使maven2在下载依赖包的同时下载其源代码包的方法: 1. 使用maven命令:mvn dependency:sources 下载依赖包的源代码. 2. 使用参数: -DdownloadSource ...
- HTTP.sys远程执行代码漏洞检测
1.漏洞描述:HTTP 协议栈 (HTTP.sys) 中存在一个远程执行代码漏洞,这是 HTTP.sys 不正确地分析特制 HTTP 请求时导致的.成功利用此漏洞的攻击者可以在系统帐户的上下文中执行任 ...
- Jenkins高危代码执行漏洞检测/开源漏洞靶场
漏洞细节可以参看安全客的文章:https://bbs.ichunqiu.com/thread-22507-1-1.html Jenkins-CLI 反序列化代码执行(CVE-2017-1000353) ...
- IntelliJ Idea 依赖包下载成功,代码里无法import问题解决方法
今天clone一个github上的基于maven的项目IntelliJ Idea 依赖包下载成功,代码里无法import.解决方法:删掉原来的.iml,刷新. 如果不行,可尝试:File->In ...
- CenOS下载离线依赖包神器--yumdownloader
Blog:博客园 个人 本文只总结一些常用的用法,更详细的说明见man yumdownloader和 info yumdownloader. 概述 有时候所在服务器环境不能访问外网,yum安装会感到非 ...
- maven添加本地依赖包方法
1.某些情况下不方便上传本地依赖包到Maven repository,可以通过下面方法添加本地依赖包. 2.方法 1).pom.xml中添加以下代码块 <dependency> <g ...
- 一行命令更新所有 npm 依赖包
npm 包的更新速度很快,为了将项目或者全局依赖更新到最新版本.传统的做法是一个一个更新,比如更新 react 到最新版本,命令如下: # npm npm i --save react@latest ...
- Maven - 实例-2-使用本地仓库中的依赖包
Maven引入构建包的流程 执行mvn compile命令编译源代码,如果编译过程中需要用到其他的包, maven将会在pom.xml文件中查找是否引入该依赖包的坐标. 示例: <depende ...
随机推荐
- 2023年3月中国数据库行业分析报告正式发布,带你了解NL2SQL技术原理
为了帮助大家及时了解中国数据库行业发展现状.梳理当前数据库市场环境和产品生态等情况,从2022年4月起,墨天轮社区行业分析研究团队出品将持续每月为大家推出最新<中国数据库行业分析报告>,持 ...
- 【墨天轮专访第四期】华为云GaussDB苏光牛:发挥生态优势,培养应用型DBA
导读: 随着5G互联网时代的来临,各行各业对于数据库的依赖程度也在逐步提高.由于国内在数据库行业的发展起步较晚,数据库的市场份额长期被Oracle,微软等美国公司所控制.但是伴随着国内IT技术栈的不断 ...
- iOS上架App Store使用小结
1.安装iOS上架辅助软件Appuploader 2.申请iOS发布证书(p12) 3.申请iOS发布描述文件(mobileprovision) 4.打包ipa 5.上传ipa到iTunes Conn ...
- 我在大厂做 CR——为什么建议使用枚举来替换布尔值
使用枚举替换布尔值主要基于以下几个原因 ● 可读性 ● 可拓展性 ● 安全防控 可读性 我们会定义 boolean 类型(true 或 false)作为方法参数,虽然比较简洁,但有时候参数的含义往往不 ...
- R语言经典统计分析
经典统计分析包括了许多常用的统计方法和技术,用于数据的描述.推断和建模.本节将介绍经典统计分析方法(包括t检验.方差分析.卡方检验.线性回归)在R语言中的实现. 5.1.1 t检验 样本均值(sam ...
- Vue 实现 PDF 导出功能
旨在通过 html2canvas 和 jspdf,先将页面的 html 转成 canvas,再将 canvas 转成 pdf,同时解决了分页截断的问题. 安装依赖 yarn add html2canv ...
- 强化学习:如何计算被环境系统截断的terminated state的value值 —— (Bootstrap returns from value estimates if episode is terminated by timeout)
本文主题:如何计算强化学习中被环境系统截断的terminated state的value值 首先解释一下什么是强化学习中的terminated state的value值,强化学习就是一个智能体(age ...
- div跟随浏览器大小而改变
<head> <style> .main { position: absolute; left: 0px; right: 0px; top: 0px; bottom: 0px; ...
- Django3.0
Django3.0 简介 Django 最初被设计用于具有快速开发需求的新闻类站点,目的是要实现简单快捷的网站开发.以下内容简要介绍了如何使用 Django 实现一个数据库驱动的 Web 应用. Dj ...
- 玩转AI工作流:一步步搭建灵活的自动化流程
我们之前搭建了许多不同类型的智能体,其中最受欢迎的就是在智能体中搭建各种工作流--这也是我最喜欢探索和玩的领域.那么,究竟什么是工作流?如何在后端实现一个工作流呢?今天我们就先简单了解下. 什么是工作 ...