代碼依賴包安全漏洞檢測神器 —— Dependency Check


目前各個企業對於應用的安全越來越重視,而解決應用漏洞的本質是從代碼安全抓起。通常關於代碼的安全問題有兩類:代碼本身的安全問題和代碼依賴包存在的安全問題。對於代碼本身的安全問題,我們可以通過靜態代碼分析工具解決,可以參考文章:

使用神器Spotbugs,輕松入門靜態代碼分析 - 簡書

而對於代碼依賴包的安全問題是我們這篇文章重點解決的事情,業界通常使用Dependency-Check來檢查代碼中是否存在任何已知的,公開披露的安全漏洞。他檢查依賴項中是否存在漏洞的原理也跟我們熟知的病毒查殺軟件一樣,預先定義好目前已知的安全漏洞庫,檢查依賴包時,發現這些漏洞就會報錯,最后定期更新安全漏洞庫即可!

工具介紹:

Dependency-Check

Dependency-Check是OWASP(Open WebApplication Security Project)的一個實用開源程序,用於識別項目依賴項並檢查是否存在任何已知的,公開披露的漏洞。目前,已支持Java、.NET、Ruby、Node.js、Python等語言編寫的程序,並為C/C++構建系統(autoconf和cmake)提供了有限的支持。而且該工具還是OWASP Top 10的解決方案的一部分。

NVD

Dependency-Check依賴NVD漏洞數據庫(美國國家通用漏洞數據庫)進行依賴漏洞檢查(全球信息安全領域著名的漏洞數據庫包括中國國家信息安全漏洞庫,美國國家信息安全漏洞庫NVD,賽門鐵克漏洞庫等等)官網:https://nvd.nist.gov/

NVD的更新頻率是出現問題實時更新,具體鏈接: https://nvd.nist.gov/general/nvd-dashboard

CVSS

NVD評級依賴CVSS(CommonVulnerability Scoring System),即“通用漏洞評分系統”,是一個“行業公開標准,其被設計用來評測漏洞的嚴重程度,並幫助確定所需反應的緊急度和重要度,具體評分標准如下:

 
 

目前主要參考cvss v3.0,具體級別的漏洞數目如下圖所示:

 
 

使用方法

命令行方式

命令行方式建議測試人員使用,可以在沒有源碼的情況下進行代碼安全檢測。

Dependency-Check工具下載地址https://owasp.org/www-project-dependency-check/,在右側選擇command line,如下圖:

 

 
 

默認方式

下載解壓后進入bin文件夾,在windows系統下執行命令:

dependency-check.bat --disableRetireJS --disableNodeJS --project test -s D:\checkjar\-o D:\report\

其中:

-project代表工程名

–s代表檢查的jar包文件夾,把需要檢查的jar包放到該目錄下即可

–o代表報表輸出的路徑

--disableRetireJS不檢查js,

--disableNodeJS不檢查nodejs

本地NVD庫方式

我們可以在本地搭建一個NVD庫來提高更新效率,

具體可以參考https://jeremylong.github.io/DependencyCheck/data/mirrornvd.html

使用本地nvd庫,具體命令如下:

dependency-check.bat

--cveUrlModified 本地nvd庫的url/nvdcve-1.1-modified.json.gz 

--cveUrlBase本地nvd庫的url/nvdcve-1.1-2020.json.gz

--project test -s D:\checkjar\ -oD:\report\

其中–cveUrlModified和–cveUrlModified指定本地NVD庫

注意,如果執行命令失敗,重新執行一次就OK!

報告分析

生成的報表文件如下圖,一般只需關注HighestSeverity 列中的CRITICAL和HIGH級別漏洞,可以看到檢測出2個jar包存在高危漏洞。

 

 
 

點擊具體jar包,可以看到具體的修復方案,如下所示:

 
 

報告中的含義是jackson-xc-1.8.3jar是有安全問題的,這個問題在2.8.10和2.9.1版本之前是存在的,所以我們只要把jar包升級到2.9.1版本以上即可修復這個問題!

配置Maven插件方式

該方式建議開發人員使用,通過maven方式檢測依賴包中是否存在安全問題則需要修改較多pom中的內容。

https://search.maven.org/artifact/org.owasp/dependency-check-maven/5.3.2/maven-plugin

總結

一般來說對於代碼依賴包的安全問題是由開發自己測試的,如果我們測試想要介入的話使用命令行方式即可,把需要檢查的jar包放到指定的目錄中,然后對所有jar包進行整體掃描。原創不易,如果文章幫到了你,歡迎轉發點贊,讓更多的朋友受益!

 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM