使用OWASP Dependency-Check進(jìn)行第三方依賴包安全掃描實(shí)踐

1荠诬、簡(jiǎn)介

OWASP是開源的凭豪、非盈利的全球性安全組織焙蹭,致力于應(yīng)用軟件的安全研究。OWASP的使命是使應(yīng)用軟件更加安全嫂伞,使企業(yè)和組織能夠?qū)?yīng)用安全風(fēng)險(xiǎn)作出更清晰的決策孔厉。OWASP的研究成果被美拯钻、歐、日等多個(gè)國家的32個(gè)政府與行業(yè)組織機(jī)構(gòu)引用成為近百項(xiàng)國際法規(guī)撰豺、標(biāo)準(zhǔn)粪般、指南和行業(yè)行為準(zhǔn)則。
Dependency-Check是OWASP(Open Web Application Security Project)的一個(gè)實(shí)用開源程序污桦,用于識(shí)別項(xiàng)目依賴項(xiàng)并檢查是否存在任何已知的亩歹,公開披露的漏洞。目前凡橱,已支持Java小作、.NET、Ruby稼钩、PHP顾稀、Node.js、Python等語言編寫的程序坝撑,并為C/C++構(gòu)建系統(tǒng)(autoconf和cmake)提供了有限的支持静秆。而且該工具還是OWASP Top 10的解決方案的一部分。

Dependency-Check支持面廣(支持多種語言)绍载、可集成性強(qiáng)诡宗,作為一款開源工具滔蝉,在多年來的發(fā)展中已經(jīng)支持和許多主流的軟件進(jìn)行集成击儡,比如:命令行、Ant蝠引、Maven阳谍、Gradle、Jenkins螃概、Sonar等矫夯;具備使用方便,落地簡(jiǎn)單等優(yōu)勢(shì)吊洼。

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训貌、實(shí)現(xiàn)原理

依賴性檢查可用于掃描應(yīng)用程序(及其依賴庫),執(zhí)行檢查時(shí)會(huì)將 Common Platform Enumeration (CPE)美帝國家漏洞數(shù)據(jù)庫及NPM Public Advisories庫下載到本地冒窍,再通過核心引擎中的一系列分析器檢查項(xiàng)目依賴性递沪,收集有關(guān)依賴項(xiàng)的信息,然后根據(jù)收集的依賴項(xiàng)信息與本地的CPE&NPM庫數(shù)據(jù)進(jìn)行對(duì)比综液,如果檢查發(fā)現(xiàn)掃描的組件存在已知的易受攻擊的漏洞則標(biāo)識(shí)款慨,最后生成報(bào)告進(jìn)行展示。

3谬莹、以Jenkins插件形式運(yùn)行

1)安裝OWASP Dependency-Check插件

image

2)全局工具配置下配置dependency插件路徑及版本(可單獨(dú)下載)

image

3)pipeline流水線中執(zhí)行dependency-check安全掃描

方法1:

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

//可增加參數(shù)具體參數(shù)參考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報(bào)告

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報(bào)告

結(jié)果查看:

image

4檩奠、以Sonarqube插件形式運(yùn)行

1)github上下載插件jar包桩了,地址:

https://github.com/dependency-check/dependency-check-sonar-plugin(注意插件版本與soanr版本的兼容關(guān)系)

2)上傳到%SONAR_HOME%/extensions/plugins目錄下

3)重啟sonar

4)驗(yàn)證查看

image

5)jenkins流水線中執(zhí)行sonar掃描

和本次內(nèi)容無關(guān),不做贅述

6)結(jié)果查看

image
image

5埠戳、搭建本地NVD Mirror庫

實(shí)際企業(yè)中內(nèi)網(wǎng)環(huán)境可能CI服務(wù)器不會(huì)開放對(duì)外網(wǎng)的訪問權(quán)限井誉,故需要搭建一個(gè)本地的NVDMirror

具體搭建步驟參考:

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

image

實(shí)際操作步驟如下:

主要需要變更兩個(gè)東西,一個(gè)是nvd庫整胃,還有一個(gè)是jsrepository.json

1送悔、搭建nvd庫:

官方提供了對(duì)應(yīng)jar包來作為mirror的服務(wù),具體github地址:

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

1)下載release jar包爪模,如需定制請(qǐng)自行改寫代碼

2)服務(wù)器上執(zhí)行java -jar nist-data-mirror.jar <mirror-directory>欠啤,改命令會(huì)把2002-最近一年的所有*.json.gz 和 *.meta 文件下載下來

3)搭建本地apache服務(wù)

使用官方docker鏡像直接啟動(dòng)即可,具體命令:

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

其中source為宿主機(jī)目錄

搭建成功后訪問:

image

4屋灌、定時(shí)任務(wù)更新jsreponsitory.json

5洁段、搭建成功后執(zhí)行dependency check命令行中添加參數(shù)應(yīng)用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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市共郭,隨后出現(xiàn)的幾起案子祠丝,更是在濱河造成了極大的恐慌,老刑警劉巖除嘹,帶你破解...
    沈念sama閱讀 222,183評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件写半,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡尉咕,警方通過查閱死者的電腦和手機(jī)叠蝇,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來年缎,“玉大人悔捶,你說我怎么就攤上這事〉ノ撸” “怎么了蜕该?”我有些...
    開封第一講書人閱讀 168,766評(píng)論 0 361
  • 文/不壞的土叔 我叫張陵,是天一觀的道長洲鸠。 經(jīng)常有香客問我堂淡,道長,這世上最難降的妖魔是什么扒腕? 我笑而不...
    開封第一講書人閱讀 59,854評(píng)論 1 299
  • 正文 為了忘掉前任绢淀,我火速辦了婚禮,結(jié)果婚禮上袜匿,老公的妹妹穿的比我還像新娘更啄。我一直安慰自己,他們只是感情好居灯,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,871評(píng)論 6 398
  • 文/花漫 我一把揭開白布祭务。 她就那樣靜靜地躺著内狗,像睡著了一般。 火紅的嫁衣襯著肌膚如雪义锥。 梳的紋絲不亂的頭發(fā)上柳沙,一...
    開封第一講書人閱讀 52,457評(píng)論 1 311
  • 那天,我揣著相機(jī)與錄音拌倍,去河邊找鬼赂鲤。 笑死,一個(gè)胖子當(dāng)著我的面吹牛柱恤,可吹牛的內(nèi)容都是我干的数初。 我是一名探鬼主播,決...
    沈念sama閱讀 40,999評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼梗顺,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼泡孩!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起寺谤,我...
    開封第一講書人閱讀 39,914評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤仑鸥,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后变屁,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,465評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡疮胖,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,543評(píng)論 3 342
  • 正文 我和宋清朗相戀三年誊役,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了获列。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片谷市。...
    茶點(diǎn)故事閱讀 40,675評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡蛔垢,死狀恐怖迫悠,靈堂內(nèi)的尸體忽然破棺而出鹏漆,到底是詐尸還是另有隱情创泄,我是刑警寧澤艺玲,帶...
    沈念sama閱讀 36,354評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站鞠抑,受9級(jí)特大地震影響饭聚,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜秒梳,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,029評(píng)論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望酪碘。 院中可真熱鬧,春花似錦兴垦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽阴汇。三九已至,卻和暖如春搀庶,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背哥倔。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評(píng)論 1 274
  • 我被黑心中介騙來泰國打工揍庄, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人蚂子。 一個(gè)月前我還...
    沈念sama閱讀 49,091評(píng)論 3 378
  • 正文 我出身青樓,卻偏偏與公主長得像食茎,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子别渔,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,685評(píng)論 2 360

推薦閱讀更多精彩內(nèi)容

  • 一. Linux服務(wù)器搭建sonar https://www.digitalocean.com/community...
    hehetc閱讀 2,078評(píng)論 4 3
  • # Awesome Python [![Awesome](https://cdn.rawgit.com/sindr...
    emily_007閱讀 2,214評(píng)論 0 3
  • 背景 根據(jù)一份報(bào)告顯示喇伯,大約80%的安全問題發(fā)生在應(yīng)用層,但是在應(yīng)用層的投入相對(duì)匱乏拨与。 造成上面的原因很多,其中比...
    魔鏡的技術(shù)心經(jīng)閱讀 1,567評(píng)論 0 11
  • 曾經(jīng)我覺得“城府”是個(gè)貶義詞捻悯,當(dāng)形容誰城府很深的時(shí)候,大抵也是在貶低他秋度,如今我卻覺得“城府”是個(gè)褒義詞,屬于成年人...
    不猜人心的職場(chǎng)鳥人閱讀 71評(píng)論 0 0
  • 近期我覺得我可能快要犯病了荚斯。找不到喜歡的人真的是一種折磨,被不喜歡的人喜歡亦是一種折磨事期。本來期末考都已經(jīng)夠煩夠壓抑...
    桃子啵閱讀 174評(píng)論 0 0