天天看點

開源漏洞掃描工具(OWASP-Dependency-Check)探索

背景

随着公司逐漸發展壯大,網絡資訊安全變得越來越重要。由此激發了我們成立興趣小組(凱京爆破小組)研究網絡資訊安全的欲望。然而資訊安全的防範,還得從底層編碼開始做起。這樣依賴性掃描工具(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

該插件具有執行依賴關系分析和建構後檢視檢查結果的功能。

執行依賴分析配置:

開源漏洞掃描工具(OWASP-Dependency-Check)探索

檢視檢查分析結果配置:

開源漏洞掃描工具(OWASP-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           

報告檢視

開源漏洞掃描工具(OWASP-Dependency-Check)探索
開源漏洞掃描工具(OWASP-Dependency-Check)探索

作者簡介

高小博,2017年4月加入凱京科技。凱京科技研發中心-QA部-(上海)測試團隊負責人,PMI-項目管理認證-PMP。目前團隊正在招賢納士,期待你的加入,希望凱京科技的未來由我們一起來開拓。你可發送個人履歷至郵箱: [email protected]