使用 OWASP Dependency-Check 檢查元件漏洞
1. 概述
在應用程式開發過程中,我們通常需要在專案中添加一些第三方程式庫或框架。這些第三方函式庫減輕了我們的開發工作量。但由於其脆弱性,也可能帶來潛在的安全風險。
在本教程中,我們將介紹一個可以幫助我們識別應用程式中已知漏洞的插件。
2. 依賴性檢查
我們將要採用的插件是 OWASP Dependency-Check。該插件是一個軟體元件分析工具,它透過將應用程式依賴項與通用平台枚舉 ( CPE ) 標識符和通用漏洞暴露 (CVE) 條目關聯起來,來識別具有已知漏洞的應用程式依賴項。
CPE 是軟體或軟體包的結構化命名方案,而 CVE 則為已知的漏洞和暴露提供了公開的參考。
該外掛程式透過 NIST 提供的國家漏洞資料庫 (NVD)資料來源自動更新這些條目。除了Maven插件之外,它還提供其他整合插件,例如Gradle。
3. Maven 設定
在本教程中,讓我們研究 Maven 與我們的應用程式的整合。首先,我們需要在pom.xml
檔案的plugins
部分中包含Dependency-Check 插件:
<plugin>
<groupId>org.owasp</groupId>
<artifactId>dependency-check-maven</artifactId>
<version>11.1.1</version>
<configuration>
<failBuildOnCVSS>7</failBuildOnCVSS>
</configuration>
<executions>
<execution>
<goals>
<goal>check</goal>
</goals>
</execution>
</executions>
</plugin>
一旦我們包含了這個插件,我們透過呼叫verify
階段來呼叫它,因為它已經預設整合到其中:
$ mvn verify
或者,我們可以透過以下方式直接呼叫它:
$ mvn dependency-check:check
如果我們的應用程式中存在任何漏洞,我們將看到來自 Maven 的訊息,指示哪些套件在控制台中包含漏洞。我們來看一個例子:
[WARNING]
One or more dependencies were identified with known vulnerabilities in dependency-check:
logback-core-1.5.6.jar (pkg:maven/ch.qos.logback/[email protected], cpe:2.3:a:qos:logback:1.5.6:*:*:*:*:*:*:*) : CVE-2024-12798, CVE-2024-12801
此外,該外掛程式還會建立一份 HTML 報告,其中包含其發現的漏洞的詳細資訊。檔案名稱為dependency-check-report.html
,可以在 build 資料夾下找到:
4. CVSS 評分
讓我們進入報告並深入了解組件漏洞的細節。我們可以看到每個漏洞都與一個通用漏洞評分系統( CVSS )分數相關聯:
CVSS 是衡量漏洞嚴重程度的標準。分數範圍是 0 到 10,分數越高表示漏洞越嚴重。
Maven 插件有一個名為failBuildOnCVSS
的選項,可以配置為在任何元件的 CVSS 分數超過閾值時建置失敗。在我們的範例中,我們使用 7,以便它不會使目前的依賴項集失敗。分數等於或大於 7 通常被認為是高度嚴重性。
我們在先前的報告中看到的最高 CVSS 分數是 5.9。現在,讓我們將failBuildOnCVSS
選項更新到 5.0 並再次執行插件。 Maven 這次建置將會失敗:
[ERROR] Failed to execute goal org.owasp:dependency-check-maven:11.1.1:check (default-cli) on project dependency-check:
[ERROR]
[ERROR] One or more dependencies were identified with vulnerabilities that have a CVSS score greater than or equal to '5.0':
[ERROR]
[ERROR] logback-core-1.5.6.jar: CVE-2024-12798(5.900000095367432)
[ERROR]
[ERROR] See the dependency-check report for more details.
當 CVSS 分數超過給定閾值時,這對我們來說可能很重要,因為建置會失敗。這樣,我們就不會部署包含高嚴重程度漏洞的依賴項應用程式。
5. 結論
合併第三方函式庫可以加快應用程式開發速度,但可能會引入漏洞。 OWASP Dependency-Check 外掛程式可以幫助根據 CPE 和 CVE 資料識別易受攻擊的依賴項。
我們可以將其整合到 Maven 中,以自動找出易受攻擊的元件,如果存在任何具有嚴重 CVSS 分數的依賴項,甚至會導致建置失敗。
與往常一樣,完整的範例可以在 GitHub 上找到。