Dependency-Check
操作手册
二〇二四年八月
Dependency-Check
操作手册
拟制:___________________ 日期:___________________
校对:___________________ 日期:___________________
审核:___________________ 日期:___________________
标审:___________________ 日期:___________________
批准:___________________ 日期:___________________
文件修改控制
序号 | 发布版本 | 修改原因 | 修改后内容 | 修改人/日期 | 审核人/日期 | 批准人/日期 |
1 | V0.1 | 新建 | 文档建立 | 李某 2024/8/2 | ||
2 | V0.2 | 修改 | 修改文档中部分内容 | 李某 2024/8/6 | ||
3 | V1.0 | 修改 | 修改文档中部分内容 | 李某 2024/8/12 | ||
1、文档概述
本手册适用于帮助初学者快速掌握Dependency-Check的安装、配置与使用方法。通过阅读本文档,您将能够了解如何搭建Dependency-Check环境、进行项目依赖库的安全扫描,并解读生成的报告。此外,本文档还涵盖了常见问题及解决方法,以便您在实际操作中遇到困难时能够及时找到解决方案。
2、相关内容概述
2.1、Dependency-Check概述
Dependency-Check是OWASP(Open WebApplication Security Project)的⼀个实⽤开源程序,⽤于识别项⽬依赖项并检查是否存在任何已知的,公开披露的漏洞。⽬前,已⽀持Java、.NET、Ruby、Node.js、Python等语⾔编写的程序,并为C/C++构建系统(autoconf和cmake)提供了有限的⽀持。⽽且该⼯具还是OWASP Top 10的解决⽅案的⼀部分。
2.2、NVD概述
Dependency-Check依赖NVD漏洞数据库(美国国家通用漏洞数据库)进行依赖漏洞检查(全球信息安全领域著名的漏洞数据库包括中国国家信息安全漏洞库,美国国家信息安全漏洞库NVD,赛门铁克漏洞库等等)官网:https://nvd.nist.gov/
NVD的更新频率是出现问题实时更新,具体链接:
https://nvd.nist.gov/general/nvd-dashboard
2.3、CVSS概述
NVD评级依赖CVSS(CommonVulnerability Scoring System),即“通用漏洞评分系统”,是一个“行业公开标准,其被设计用来评测漏洞的严重程度,并帮助确定所需反应的紧急度和重要度,具体评分标准如下:
目前主要参考cvss v3,具体级别的漏洞数目如下图所示:
3、环境要求
1、Java 8 或更高版本
2、至少2GB内存(建议更多)
3、有网络连接,或身边拥有互联网设备(用于下载漏洞数据库)
4、Dependency-Check安装与使用
4.1、测试试终端可连接互联网
4.1.1、下载与安装
4.1.1.1、下载
1、打开浏览器并访问https://owasp.org/www-project-dependency-check/页面。
2、点击【Command Line】下载最新版本的ZIP包,例如 dependency-check-<version>-release.zip。
4.1.1.2、安装
1、下载完成后将压缩包解压至非中文路径下,以下操作以解压至D盘为例。
2、进入解压后的D:\dependency-check-10.0.2-release\dependency-check\bin路径下。
3、使用命令行提示符打开。
4、执行命令dependency-check.bat --update下载最新缺陷库(首次下载时间较长,等待执行完成即可)
4.1.2、依赖项扫描
1、准备好待扫描的项目包放置在非中文目录下,例如E:\test\ems-jars。
2、打开命令提示符窗口并移动到dependency-check执行路径下。
3、执行命令dependency-check.bat --project test -s E:\test\ems-jars --format HTML -o E:\test\test.html --disableHostedSuppression对目标项目包进行扫描。
--project代表指定项目名称,这个名称将出现在生成的报告中,用于标识不同的扫描项目,扫描时将test替换成实际项目名;
-s代表检查的项目文件夹,扫描时将E:\test\ems-jars替换成实际项目包路径;
--format代表指定输出报告的格式,支持的格式包括HTML、XML、JSON等,扫描时按实际需求填写,推荐HTML;
-o代表指定输出报告的文件路径,若不填写则默认输出到D:\dependency-check-10.0.2-release\dependency-check\bin路径下,扫描时将test.html替换成实际报告名称
--disableHostedSuppression代表禁用Hosted Suppressions更新,若自动或手动更新过publishedSuppressions.xml文件即可添加此命令。
4.1.3、报告分析
1、打开扫描报告,查看报告中的报告概览
dependency-check version代表工具版本:10.0.2。
Report Generated On代表报告生成时间:2024/8/5 15:33:49
Dependencies Scanned代表依赖项扫描数:共扫描了118个依赖项,其中80个是唯一的。
Dependencies Scanned代表漏洞依赖项数:发现9个具有已知漏洞的依赖项。
Vulnerable Dependencies代表总计漏洞数:共发现22个漏洞。
Vulnerabilities Suppressed代表抑制的漏洞数:没有被抑制的漏洞。(抑制的漏洞指的是在扫描过程中,被工具识别并且被用户或配置文件明确忽略的漏洞数量。这些被“抑制”的漏洞不会出现在最终的报告中)
2、分析过报告概览后查看报告详细信息。
此处显示存在漏洞的依赖项:
Dependency代表存在漏洞的依赖项。
Vulnerability IDs代表对应NVD的漏洞ID。
Package代表依赖中的包。
Highest Severity代表漏洞的严重程度。
CVE Count代表与依赖包与漏洞关联的数量。
Confidence代表工具对漏洞检测结果的置信度。
Evidence Count代表支持该漏洞检测结果的证据数量。
3、根据报告详细信息去下方查看具体漏洞信息,并加以分析,下面以一个依赖项snakeyaml-1.30.jar举例说明。
从上方报告详细信息中可得知此依赖项snakeyaml-1.30.jar存在漏洞数量为7个,软件判定此依赖项的严重程度为CRITICAL非常严重,并且对漏洞的确认程度很高,下面点击依赖项名称去查看漏洞具体信息。
可查看到该条依赖项对应的七条漏洞,第一条漏洞的代号为CVE-2022-1471,对应的CVSS评分为9.8,证明此漏洞非常危险,结合dependency-check对此漏洞的评级为CRITICAL,说明此处漏洞是必须修改的,报告中还给出了该漏洞的详细情况与解决方法:SnakeYaml库的Constructor()类在反序列化过程中不限制可以实例化的类型,如果攻击者提供特定的yaml内容,可能会导致远程代码执行(RCE),建议使用SafeConstructor来解析不可信内容,以限制反序列化过程中的风险,建议升级到2.0或更高版本以解决该问题。
4.2、测试终端不可连接互联网
在不可连接互联网情况下进行扫描,扫描结果主要来自于验证NVD缺陷库,连接互联网情况下工具还会自动与Maven Central、OSS Index等开源软件库和三方库连接获取额外的漏洞数据,故离线扫描结果没有连接互联网扫描结果全面。
4.2.1、下载与安装
在完成4.1.1下载与安装章节得操作后将整个D:\dependency-check-10.0.2-release文件夹通过刻录等方式移动至不可连接互联网得终端中即可进行使用。
4.2.2、依赖项扫描
依赖项扫描步骤同4.1.2依赖项扫描相同,因测试终端不可连接互联网,所以此处扫描命令需进行更改。
执行命令dependency-check.bat --project test -s E:\test\ems-jars --format HTML -o E:\test\test.html --disableHostedSuppression --disableCentral --disableOssIndex对目标项目包进行扫描
--disableCentral 此选项用于禁用对 Maven Central Repository 的访问。Maven Central 是一个公共的 Maven 仓库,其中存储了许多开源和第三方库的信息。在分析过程中,Dependency-Check 会尝试从 Maven Central 获取相关依赖项的安全漏洞信息,因设备无法连接互联网所以要将该功能禁用。
--disableOssIndex 此选项用于禁用对 OSS Index 的访问。OSS Index 是一个专门用于扫描开源组件安全性的平台,它提供了有关开源库和其漏洞的信息。Dependency-Check 可以通过 OSS Index 来获取额外的漏洞数据,因设备无法连接互联网所以要将该功能禁用。
4.2.3、报告分析
同4.1.3报告分析章节。
5、漏洞严重等级具体划分
本文给出两种漏洞划分标准,分别为Dependency-Check报告中针对某一依赖项所包含漏洞的严重程度进行总体划分与CVSSv3针对依赖项存在的单个漏洞危险程度进行划分,两者结合作为漏洞是否应该整改的评判标准。一般来说,CVSS评分高于7.0的漏洞应被视为必须更改的高风险或严重风险漏洞。而中等风险和低风险的漏洞则可以根据具体情况和业务需求来决定处理优先级。
5.1、Dependency-Check报告漏洞划分标准
Dependency-check对漏洞严重程度判定有四档分别为:
1)CRITICAL:这些漏洞通常会导致非常严重的后果,如远程代码执行、大规模数据泄露等。应优先处理。
2)HIGH:高危漏洞可能导致严重的后果,但不一定能直接被利用。也应尽快修复。
3)MEDIUM:中等风险漏洞可能会导致较大的安全问题,但利用难度较大或影响范围有限。
4)LOW:低风险漏洞一般不会造成重大影响,但在有余力的情况下也应考虑修复。
5.2、CVSSv3漏洞划分标准
CVSSv3对漏洞严重程度判定有四档分别为:
1)CRITICAL(9.0 - 10.0):这些漏洞通常具有最高的严重性,可能导致远程代码执行、大规模数据泄露、系统完全被攻陷等影响。应立即修复或采取其他补救措施。
2)HIGH(7.0 - 8.9):这些漏洞可能会导致重大安全问题,如数据泄露、拒绝服务攻击等。应尽快修复。
3)MEDIUM(4.0 - 6.9):这些漏洞可能会导致中等程度的安全问题,但利用难度较大或者影响范围有限。虽然不需要紧急处理,但应在合理的时间内修复。
4)LOW(0.1 - 3.9):这些漏洞通常不会造成重大影响。可以在日常维护过程中进行修复。
5)NONE*(0):无问题。
6、常见问题
6.1、JDK版本过低导致更新失败
使用命令下载缺陷库时提示下列错误,说明JDK版本过低,请更新JDK版本至8.0以上。
6.2、RetureJS数据库更新失败
使用命令下载缺陷库时提示下列错误,说明NVD数据库的主要更新部分是成功的,但 RetireJS 数据库的更新失败了,手动访问https://github.com/RetireJS/retire.js/releases地址下载retire.js-5.1.2.zip文件(使用时下载最新的),将文件解压后找到其中的jsrepository.json、jsrepository-v2.json、jsrepository-v3.json文件放入 Dependency-Check 的数据目录D:\dependency-check-10.0.2-release\dependency-check\data\中(受网络环境影响,此地址在未配置网络代理情况下可能无法访问,若无法访问需在后续测试命令中添加--disableRetireJS)
6.3、Hosted Suppressions 文件更新失败
执行依赖项扫描时提示下列错误说明,Dependency-Check 尝试下载并更新 hosted suppressions 文件失败。这个文件包含一些已知的误报抑制规则,下载失败后,扫描结果中可能会包含已解决的误报,需前往https://jeremylong.github.io/DependencyCheck/suppressions/publishedSuppressions.xml此地址,将下载的publishedSuppressions.xml文件移动至D:\dependency-check-10.0.2-release\dependency-check\data路径下,再次运行扫描工具即可解决(若手动替换过publishedSuppressions.xml仍出现此问题需在后续测试命令中添加--disableHostedSuppression)。
6.4、TLS 连接重置错误
这个错误表明在尝试下载某些依赖数据文件时,TLS 连接被重置了。这通常与网络问题或服务器端配置有关,该问题可能会引起Hosted Suppressions文件更新失败错误,如已经更新或手动替换过publishedSuppressions.xml,则无需关注此问题,只需再次运行扫描工具进行扫描即可。
6.5、.NET Assembly Analyzer无法初始化
这个错误表明.NET Assembly Analyzer无法初始化,因为找不到dotnet可执行文件,这通常是因为系统环境变量PATH中没有包含.NET Core的路径。
需前往微软官网https://dotnet.microsoft.com/zh-cn/download为此计算机安装最新版本.NET Core SDK,安装完成后重新打开命令提示符再次运行扫描工具即可解决。
标签:操作手册,漏洞,--,扫描,Dependency,V1.0,dependency,内网,check From: https://blog.csdn.net/weixin_44362636/article/details/141549420