使用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外掛
2)全域性工具配置下配置dependency外掛路徑及版本(可單獨下載)
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 -o $PWD/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 -o $PWD/dependency-check-report.html’ //生成html報告
結果檢視:
4、以Sonarqube外掛形式執行
1)github上下載外掛jar包,地址:
https://github.com/dependency-check/dependency-check-sonar-plugin(注意外掛版本與soanr版本的相容關係)
2)上傳到%SONAR_HOME%/extensions/plugins目錄下
3)重啟sonar
4)驗證檢視
5)jenkins流水線中執行sonar掃描
和本次內容無關,不做贅述
6)結果檢視
5、搭建本地NVD Mirror庫
實際企業中內網環境可能CI伺服器不會開放對外網的訪問許可權,故需要搭建一個本地的NVDMirror
具體搭建步驟參考:
https://jeremylong.github.io/DependencyCheck/data/mirrornvd.html
實際操作步驟如下:
主要需要變更兩個東西,一個是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 ,改命令會把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為宿主機目錄
搭建成功後訪問:
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’
參考連結
https://bloodzer0.github.io/ossa/other-security-branch/devsecops/sdc/
https://yq.aliyun.com/articles/698621
相關文章
- 測試開發之安全篇-使用禪道ZTF執行OWASP安全掃描
- 使用索引掃描來進行排序索引排序
- 使用OWASP Dependency-Check對應用做個安檢
- 使用sqlmapapi.py批次化掃描實踐SQLAPI
- 京東掃描平臺EOS—JS掃描落地與實踐JS
- Maven最佳實踐:管理依賴Maven
- HTop依賴包
- 安全掃描工具
- 在Linux中,什麼是埠掃描?如何使用工具如nmap進行埠掃描?Linux
- 如何使用Maven將專案中的依賴打進jar包MavenJAR
- Godep包管理第三方依賴包的問題Go
- 安全科普:Waf實現掃描器識別 徹底抵擋駭客掃描
- win10怎麼關閉安全掃描 win10正在執行安全掃描如何關閉Win10
- 對上次的自動掃描進行改造
- mysql 依賴包問題MySql
- 一行命令更新所有 npm 依賴包NPM
- IPv6地址掃描實踐分享
- W13Scan 掃描器挖掘漏洞實踐
- 掃描行為分析
- WEB安全漏洞掃描與處理(上)——安全漏洞掃描工具AppScan的安裝使用WebAPP
- 使用OClint進行iOS專案的靜態程式碼掃描iOS
- [譯]使用Go Cloud的Wire進行編譯時依賴注入GoCloud編譯依賴注入
- 如何對 Android 庫進行依賴管理?Android
- 理解資料庫掃描方法-利用掃描方法對資料儲存進行優化資料庫優化
- 01揹包、有依賴的揹包
- vue-cli3.0打包時如何忽略某個第三方依賴包Vue
- 主機安全掃描工具-- vuls
- 在Linux中,如何進行安全漏洞掃描?Linux
- Go 專案依賴注入wire工具最佳實踐介紹與使用Go依賴注入
- Greenplum儲存過程使用分割槽表將進行全表掃描儲存過程
- 【webpack進階】使用babel避免webpack編譯執行時模組依賴WebBabel編譯
- iOS 使用CIDetector掃描相簿二維碼、原生掃描iOSIDE
- 使用CocoaPods來做iOS程式的包依賴管理iOS
- 使用yum快速安裝oracle11g依賴包Oracle
- 使用yum 安裝依賴關係較多的包
- 如此簡單遠端漏洞掃描實現雲安全
- 容器映象安全:安全漏洞掃描神器Trivy
- 如何使用ISqlSugarClient進行資料訪問,並實現了統一的批次依賴注入SqlSugarclient依賴注入