DependencyCheck 是owasp開源的一個SCA工具,之前在群里交流,有幾家也在嘗試落地實踐了。
剛好Q3的時候在做代碼審計系統的,Q4增加了SCA的檢測功能,簡單的調研了幾個工具,如下:
Dependency Check ,OWASP開源,主要是檢測java也支持檢測其他的語言。
支持命令行方式,直接對jar包進行資產清點
支持maven的方式,直接使用mvn org.owasp:dependency-check-maven:check即可。
檢測原理:將Dcheck,讀取jar或maven包內的數據,將包內的數據轉換為CPE格式,
例如:
而CPE格式是NVD漏洞庫提供的cpe32格式:
可以參考,后門會專門單獨寫這塊:https://stackoverflow.com/questions/56680580/nvd-json-feeds-tags-meaning-and-their-purpose
例如在fastjson NVD這樣定義CPE:
私有化部署,需要鏡像NVD漏洞庫,track同理
初次啟動或間隔幾個小時沒有使用將會更新,官網有幾個參數,可以仔細留意一下。
mvn org.owasp:dependency-check-maven:check -Dformats=CSV -DcveUrlModified=http://127.0.0.1:8000/nvdcve-1.1-modified.json.gz -DcveUrlBase=http://127.0.0.1:8000/nvdcve-1.1-%d.json.gz -Danalyzer.retirejs.repo.js.url=http://127.0.0.1:8000/jsrepository.json -Dinherited=false
支持生成HTML默認,CSV,JSON等格式,私有化需要指定參數,如項目中存在多個子任務,可能生成報表時出現問題,inherited=false啟用聚合。
Dependency track,OWASP開源,支持的語言比較豐富。
檢測原理:使用插件對代碼項目生成bom.xml,類似pip request requirements,清點出使用的組件,Dependency track相當於一個漏洞庫和分析引擎
這個方法好處就是只需要在客戶端直接生成bom.xml,PUT track的REST接口即可。在測試過程中測試fastjson沒清點出來。
snyk是商業化的,某公司在最開始Dependency Check切換到這個,漏洞庫比較豐富。
2020年12月21日18:51:11 更新
最終還是自己重寫了一套,便於后期維護,解析CPE,錄入漏洞庫,根據手機項目組件信息,自動實時檢索組件相關漏洞。
查看漏洞: