使用OWASP Dependency-Check进行第三方依赖包安全扫描实践

1、简介

OWASP是开源的、非盈利的全球性安全组织,致力于应用软件的安全研究。OWASP的使命是使应用软件更加安全,使企业和组织能够对应用安全风险作出更清晰的决策。OWASP的研究成果被美、欧、日等多个国家的32个政府与行业组织机构引用成为近百项国际法规、标准、指南和行业行为准则。
Dependency-Check是OWASP(Open Web Application Security Project)的一个实用开源程序,用于识别项目依赖项并检查是否存在任何已知的,公开披露的漏洞。目前,已支持Java、.NET、Ruby、PHP、Node.js、Python等语言编写的程序,并为C/C++构建系统(autoconf和cmake)提供了有限的支持。而且该工具还是OWASP Top 10的解决方案的一部分。

Dependency-Check支持面广(支持多种语言)、可集成性强,作为一款开源工具,在多年来的发展中已经支持和许多主流的软件进行集成,比如:命令行、Ant、Maven、Gradle、Jenkins、Sonar等;具备使用方便,落地简单等优势。

OWASP dependency-check is an open source solution the OWASP Top 10 2013 entry: A9 - Using Components with Known Vulnerabilities. Dependency-check can currently be used to scan Java and .NET applications to identify the use of known vulnerable components. Experimental analyzers for Python, Ruby, PHP (composer), and Node.js applications; these are experimental due to the possible false positive and false negative rates. To use the experimental analyzers they must be specifically enabled via the appropriate experimentalconfiguration. In addition, dependency-check has experimental analyzers that can be used to scan some C/C++ source code, including OpenSSL source code and projects that use Autoconf or CMake.

2、实现原理

依赖性检查可用于扫描应用程序(及其依赖库),执行检查时会将 Common Platform Enumeration (CPE)美帝国家漏洞数据库及NPM Public Advisories库下载到本地,再通过核心引擎中的一系列分析器检查项目依赖性,收集有关依赖项的信息,然后根据收集的依赖项信息与本地的CPE&NPM库数据进行对比,如果检查发现扫描的组件存在已知的易受攻击的漏洞则标识,最后生成报告进行展示。

3、以Jenkins插件形式运行

1)安装OWASP Dependency-Check插件

image

2)全局工具配置下配置dependency插件路径及版本(可单独下载)

image

3)pipeline流水线中执行dependency-check安全扫描

方法1:

dependencyCheck additionalArguments: '', odcInstallation: 'dependency-check’

//可增加参数具体参数参考https://bloodzer0.github.io/ossa/other-security-branch/devsecops/sdc/

dependencyCheckPublisher pattern: 'dependency-check-report.xml'

方法2:

sh '/data/jenkins/tools/org.jenkinsci.plugins.DependencyCheck.tools.DependencyCheckInstallation/dependency-check/bin/dependency-check.sh -s PWD/ -f XML -oPWD/dependency-check-report.xml’ //生成xml报告

sh '/data/jenkins/tools/org.jenkinsci.plugins.DependencyCheck.tools.DependencyCheckInstallation/dependency-check/bin/dependency-check.sh -s PWD/ -f HTML -oPWD/dependency-check-report.html’ //生成html报告

结果查看:

image

4、以Sonarqube插件形式运行

1)github上下载插件jar包,地址:

https://github.com/dependency-check/dependency-check-sonar-plugin(注意插件版本与soanr版本的兼容关系)

2)上传到%SONAR_HOME%/extensions/plugins目录下

3)重启sonar

4)验证查看

image

5)jenkins流水线中执行sonar扫描

和本次内容无关,不做赘述

6)结果查看

image
image

5、搭建本地NVD Mirror库

实际企业中内网环境可能CI服务器不会开放对外网的访问权限,故需要搭建一个本地的NVDMirror

具体搭建步骤参考:

https://jeremylong.github.io/DependencyCheck/data/mirrornvd.html

image

实际操作步骤如下:

主要需要变更两个东西,一个是nvd库,还有一个是jsrepository.json

1、搭建nvd库:

官方提供了对应jar包来作为mirror的服务,具体github地址:

https://github.com/stevespringett/nist-data-mirror/

1)下载release jar包,如需定制请自行改写代码

2)服务器上执行java -jar nist-data-mirror.jar <mirror-directory>,改命令会把2002-最近一年的所有*.json.gz 和 *.meta 文件下载下来

3)搭建本地apache服务

使用官方docker镜像直接启动即可,具体命令:

docker run -dit --name mirror -p 30006:80 --mount type=bind,source=/data/mirror-repo,target=/usr/local/apache2/htdocs sspringett/nvdmirror:latest

其中source为宿主机目录

搭建成功后访问:

image

4、定时任务更新jsreponsitory.json

5、搭建成功后执行dependency check命令行中添加参数应用mirror地址即可

以pipeline为例:

dependencyCheck additionalArguments: '--cveUrlModified http://x.x.x.x:8080/nvdcve-1.1-2019.json.gz --cveUrlBase http://x.x.x.x:8080/nvdcve-1.1-2019.json.gz ', odcInstallation: 'dependency-check'

image

参考链接

https://bloodzer0.github.io/ossa/other-security-branch/devsecops/sdc/

https://yq.aliyun.com/articles/698621

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,904评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,581评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,527评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,463评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,546评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,572评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,582评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,330评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,776评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,087评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,257评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,923评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,571评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,192评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,436评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,145评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,127评论 2 352

推荐阅读更多精彩内容

  • 一. Linux服务器搭建sonar https://www.digitalocean.com/community...
    hehetc阅读 2,067评论 4 3
  • # Awesome Python [![Awesome](https://cdn.rawgit.com/sindr...
    emily_007阅读 2,208评论 0 3
  • 背景 根据一份报告显示,大约80%的安全问题发生在应用层,但是在应用层的投入相对匮乏。 造成上面的原因很多,其中比...
    魔镜的技术心经阅读 1,558评论 0 11
  • 曾经我觉得“城府”是个贬义词,当形容谁城府很深的时候,大抵也是在贬低他,如今我却觉得“城府”是个褒义词,属于成年人...
    不猜人心的职场鸟人阅读 69评论 0 0
  • 近期我觉得我可能快要犯病了。找不到喜欢的人真的是一种折磨,被不喜欢的人喜欢亦是一种折磨。本来期末考都已经够烦够压抑...
    桃子啵阅读 170评论 0 0