背景
随着公司逐漸發展壯大,網絡資訊安全變得越來越重要。由此激發了我們成立興趣小組(凱京爆破小組)研究網絡資訊安全的欲望。然而資訊安全的防範,還得從底層編碼開始做起。這樣依賴性掃描工具(OWASP-Dependency-Check)就進入了我們的視線,既符合我們目前的需求又使用友善簡單,自然而然的成為了我們探索的對象。
簡介
Dependency-Check是OWASP(Open Web Application Security Project)的一個實用開源程式,用于識别項目依賴項并檢查是否存在任何已知的,公開披露的漏洞。目前,已支援Java、.NET、Ruby、Node.js、Python等語言編寫的程式,并為C/C++建構系統(autoconf和cmake)提供了有限的支援。而且該工具還是OWASP Top 10的解決方案的一部分。
Dependency-Check支援面廣(支援多種語言)、可內建性強,作為一款開源工具,在多年來的發展中已經支援和許多主流的軟體進行內建,比如:指令行、Ant、Maven、Gradle、Jenkins、Sonar等;具備使用友善,落地簡單等優勢。
實作原理
依賴性檢查可用于掃描應用程式(及其依賴庫),執行檢查時會将 Common Platform Enumeration (CPE)國家漏洞資料庫及NPM Public Advisories庫下載下傳到本地,再通過核心引擎中的一系列分析器檢查項目依賴性,收集有關依賴項的資訊,然後根據收集的依賴項資訊與本地的CPE&NPM庫資料進行對比,如果檢查發現掃描的元件存在已知的易受攻擊的漏洞則辨別,最後生成報告進行展示。
內建
與maven內建
Dependency-check-maven非常易于使用,可以作為獨立插件使用,也可以作為maven site的一部分使用。該插件需要使用Maven 3.1或更高版本,第一次執行時,可能需要20分鐘或更長時間,因為它會從NIST托管的國家漏洞資料庫下載下傳漏洞資料到本地備份庫。第一次批量下載下傳後,隻要插件每七天至少執行一次,本地漏洞庫就會自動更新,更新隻需幾秒鐘。
內建很簡單,隻需要在項目的pom檔案中增加maven配置即可。
用法一 在target目錄中建立dependency-check-report.html
<plugin>
<groupId>org.owasp</groupId>
<artifactId>dependency-check-maven</artifactId>
<version>4.0.2</version>
<configuration>
<autoUpdate>true</autoUpdate>
</configuration>
<executions>
<execution>
<goals>
<goal>check</goal>
</goals>
</execution>
</executions>
</plugin>
用法二 在maven site中建立聚合性的報告
<plugin>
<groupId>org.owasp</groupId>
<artifactId>dependency-check-maven</artifactId>
<version>4.0.2</version>
<reportSets>
<reportSet>
<reports>
<report>aggregate</report>
</reports>
</reportSet>
</reportSets>
</plugin>
用法三 設定當風險指數(CVSS)大于等于8時(CVSS分數為0-10)則項目編譯失敗
<plugin>
<groupId>org.owasp</groupId>
<artifactId>dependency-check-maven</artifactId>
<version>4.0.2</version>
<configuration>
<failBuildOnCVSS>8</failBuildOnCVSS>
</configuration>
<executions>
<execution>
<goals>
<goal>check</goal>
</goals>
</execution>
</executions>
</plugin>
用法四 僅更新NVD(漏洞庫)資料,而不執行檢查
<plugin>
<groupId>org.owasp</groupId>
<artifactId>dependency-check-maven</artifactId>
<version>4.0.2</version>
<executions>
<execution>
<goals>
<goal>update-only</goal>
</goals>
</execution>
</executions>
</plugin>
更多配置資訊,可以根據實際情況在官網查找:
參考連結與Jenkins內建
Jenkins中需要安裝插件:Static Analysis Utilities和Dependency-Check
該插件具有執行依賴關系分析和建構後檢視檢查結果的功能。
執行依賴分析配置:
檢視檢查分析結果配置:
與代碼品質管理平台SonarQube 7.x以上的版本內建
将插件(jar檔案)複制到$SONAR_INSTALL_DIR/extensions/plugins并重新啟動SonarQube。
但需要添加以下配置:
sonar.dependencyCheck.reportPath = ${WORKSPACE}/dependency-check-report.xml
##以Jenkins為例報告.xml路徑
sonar.dependencyCheck.htmlReportPath = ${WORKSPACE}/dependency-check-report.html
##以Jenkins為例報告.html路徑
問題嚴重性分數設定:
sonar.dependencyCheck.severity.blocker = 9.0
sonar.dependencyCheck.severity.critical = 7.0
sonar.dependencyCheck.severity.major = 4.0
sonar.dependencyCheck.severity.minor = 0.0
報告檢視
作者簡介
高小博,2017年4月加入凱京科技。凱京科技研發中心-QA部-(上海)測試團隊負責人,PMI-項目管理認證-PMP。目前團隊正在招賢納士,期待你的加入,希望凱京科技的未來由我們一起來開拓。你可發送個人履歷至郵箱: [email protected]。