Skip to content

Dependency-Check

Dependency-Check 是一個軟體組成分析 (SCA) 工具,可識別專案依賴關係並檢查是否存在任何已知的、公開揭露的漏洞。本文件提供如何安裝和使用它的指南,以及如何處理誤報。

安裝

下載

您可以從 GitHub releases page 下載 Dependency-Check。

  • dependency-check-*-release.zip: 命令列介面 (CLI) 版本。
  • dependency-check-ant-*-release.zip: 用於 Apache Ant。

Java 版本

Dependency-Check v11.0.0 及更高版本需要 Java 11 或更高版本。如果您使用的是較舊版本的 Java,您將看到如下錯誤:

Exception in thread "main" java.lang.UnsupportedClassVersionError
...
this version of the Java Runtime only recognizes class file versions up to 52.0

要解決此問題,請安裝 OpenJDK 11 並相應地設定 JAVA_HOMEPATH 環境變數。您可以使用 java -version 驗證 Java 版本。

基本用法

Java 設定正確後,您可以從命令列執行 Dependency-Check:

.\bin\dependency-check.bat --scan <專案資料夾> --out <報告目錄>

您可以使用 -h 旗標查看所有可用選項。要產生 HTML 報告,請使用 --format HTML 旗標。

如果您有 NVD API 金鑰,您可以使用它來加速資料檢索:

--nvdApiKey <您的-api-金鑰>

或者,您可以設定 NVD_API_KEY 環境變數。

誤報與抑制

Dependency-Check 允許您使用抑制 XML 檔案來抑制誤報。

抑制 XML 格式

抑制檔案必須具有正確的命名空間。您可以透過點擊 HTML 報告中的「Complete XML Doc」連結來產生完整的 XML 文件。

每個 <suppress> 元素可以針對 CVE、CPE、artifact、CPE pattern 或 location。

抑制 CVE

<?xml version="1.0" encoding="UTF-8"?>
<suppressions xmlns="https://jeremylong.github.io/DependencyCheck/dependency-suppression.1.3.xsd">
  <suppress>
    <cve>CVE-2023-12345</cve>
    <notes> CVE 不影響我們的專案。</notes>
  </suppress>
</suppressions>

抑制 CPE

<suppressions xmlns="https://jeremylong.github.io/DependencyCheck/dependency-suppression.1.3.xsd">
  <suppress>
    <cpe>cpe:/a:vendor:product:version</cpe>
    <notes> CPE 是誤報,可以安全地忽略。</notes>
  </suppress>
</suppressions>

您也可以使用 <cpePattern> 來抑制整個供應商:

<suppress>
  <cpePattern>cpe:/a:vendor:.*</cpePattern>
</suppress>

使用抑制檔案

使用 --suppression 旗標指定抑制檔案:

--suppression dependency-check-suppression.xml

疑難排解

如果抑制不起作用,通常是因為 XML 檔案中缺少命名空間或根元素不正確。

確保您的 suppression.xml 檔案具有正確的標頭和 <suppressions> 根元素。您可以使用 HTML 報告來產生完整的範例。另外,請檢查抑制檔案的路徑,特別是對於有空格或編碼問題的情況。