当下的软件开发大量使用开源软件,以便快速开发出产品,迅速占领市场。开源软件确实给软件开发带来了便利,但是随之而来的安全问题也越发凸显,开源软件报告的漏洞数量每年都在增长,企业对开源组件的安全管控已刻不容缓。
Dependency-Check是非营利组织OWASP开源的的一款软件组成分析(SCA, Software Composition Analysis)工具,它通过扫描项目软件包结构、依赖配置文件提取依赖组件的厂商、名称、版本信息,然后通过与美国NVD开放漏洞库数据进行匹配,如果匹配成功则认为存在漏洞。目前工具已支持的扫描应用类型有Java&.NET、Python、PHP(comoser)、Ruby、Node.js、CocoaPods、Swift Package Manager。
值得一提的是SCA领域最著名的软件是黑鸭Black Duck Software,我试着通过官网申请试用,得到的答复是不提供个人用户的试用,连用户文档都不愿意提供。
下载
访问链接[OWASP Dependency-Check Project | OWASP](https://owasp.org/www-project-dependency-check/),点击Common Line即可下载工具,另外,还提供其他使用方式,可以根据实际场景选择合适的方式,本文以命令行方式进行介绍。
下载解压后的目录如下
bin目录如下,windows系统下运行.bat脚本,linux系统运行同名的.sh脚本,建议将bin目录添加到系统环境变量,这样就可以在任意位置执行。
基本命令
执行扫描任务非常简单,下面是执行命令的示例,执行扫描任务前会首先从NVD数据库下载漏洞数据,如果之前已经执行过扫描则会增量进行同步。
dependency-check.sh --project DEMO --disableRetireJS --exclude */web/node_modules/** -s ./ -o /opt/data/report/dependency_check_report.html
命令参数说明:
--project 表示项目名称;
--disableRetireJS 表示忽略RetireJS,还支持其他类型,参加下面的链接详情;
--exclude 表示排除扫描的目录,模式"*/web/node_modules/**"表根目录下级子目录中
包含web/node_modules路径以及以下所有层级路径都不扫描,*表示一个层级任意目录,
**表示任意层级目录。支持多个排除项需要分别增加多个--exclude;
-s 表示扫描的目录,./表示在当前目录下执行扫描;
-o 表示输出报告的目录,默认输出html报告,也可以不指定具体的html报告名称而仅指定目录即可,自动创建报告默认名称为dependency_check_report.html;
-f 表述输出的格式,示例命令未使用该参数,如果要指定多个输出报告格式,
需要增加多个-f参数,如-f HTML -f JSON.
命令支持的参数详情请查看[dependency-check-cli – Command Line Arguments (jeremylong.github.io)](https://jeremylong.github.io/DependencyCheck/dependency-check-cli/arguments.html);
报告
执行完毕后就会在指定目录生成报告,html格式报告示例如下,各项内容含义已做了标注。
参考文献
[1]. OWASP Dependency-Check Project | OWASP
版权声明:内容来源于互联网和用户投稿 如有侵权请联系删除