OWASP Dependency Check 導入指引

導入效應

效應 說明
CVE 漏洞掃描 自動掃描專案所有依賴套件的已知安全漏洞(CVE)
AI 依賴地獄防護 AI 極易引用老舊套件(如 log4j 2.14、jackson 2.8),Dependency Check 直接攔截
NVD 資料庫同步 與 NIST NVD 資料庫同步,保持最新漏洞資訊
CVSS 評分 提供漏洞嚴重程度評分(Critical / High / Medium / Low)
CI 門檻 設定 CVSS ≥ 7.0 時阻斷 Pipeline
合規報告 產生 XML/HTML/JSON 報告,適合稽核與合規需求

1. Maven 導入

<plugin>
    <groupId>org.owasp</groupId>
    <artifactId>dependency-check-maven</artifactId>
    <version>11.1.1</version>
    <configuration>
        <failBuildOnCVSS>7</failBuildOnCVSS>
        <suppressionFiles>
            <suppressionFile>dependency-check-suppressions.xml</suppressionFile>
        </suppressionFiles>
    </configuration>
    <executions>
        <execution>
            <goals>
                <goal>check</goal>
            </goals>
        </execution>
    </executions>
</plugin>

2. Gradle 導入

plugins {
    id 'org.owasp.dependencycheck' version '11.1.1'
}

dependencyCheck {
    failBuildOnCVSS = 7.0f
    suppressionFiles = ['dependency-check-suppressions.xml']
    formats = ['HTML', 'JSON', 'SARIF']
}

3. 執行掃描

# Maven
mvn dependency-check:check

# Gradle
./gradlew dependencyCheckAnalyze

# 產生報告位置
# target/dependency-check-report.html

4. 設定門檻

4.1 CVSS 門檻

<!-- Maven -->
<configuration>
    <!-- CVSS ≥ 7.0 才 fail -->
    <failBuildOnCVSS>7</failBuildOnCVSS>

    <!-- 或設為 0 來 fail 所有已知漏洞 -->
    <failBuildOnCVSS>0</failBuildOnCVSS>
</configuration>

4.2 常見 CVSS 分級

CVSS 嚴重程度 CI 行為
9.0 - 10.0 Critical 必須立即修復
7.0 - 8.9 High Pipeline Fail
4.0 - 6.9 Medium 警告
0.1 - 3.9 Low 記錄

5. Suppression 管理

5.1 Suppression 檔案

<!-- dependency-check-suppressions.xml -->
<?xml version="1.0" encoding="UTF-8"?>
<suppressions xmlns="https://jeremylong.github.io/DependencyCheck/dependency-suppression.1.3.xsd">
    <suppress>
        <notes>此漏洞僅影響 CLI 模式,我們只用 Library 模式</notes>
        <filePath regex="true">\.gradle/.*</filePath>
        <cve>CVE-2021-12345</cve>
    </suppress>
</suppressions>

5.2 局部 Suppression

// 在程式碼中標記
@SuppressCVSS(
    cvss = "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H",
    reason = "此漏洞僅在特定配置下觸發,已評估風險可接受",
    url = "https://nvd.nist.gov/vuln/detail/CVE-2021-12345"
)

6. CI 整合

6.1 Azure Pipeline

- stage: SecurityScan
  jobs:
    - job: DependencyCheck
      steps:
        - task: Maven@4
          inputs:
            goals: 'dependency-check:check'
          displayName: 'OWASP Dependency Check'
        - task: PublishBuildArtifacts@1
          inputs:
            pathToPublish: '$(Build.SourcesDirectory)/target/dependency-check-report.html'
            artifactName: 'security-report'
          condition: always()

6.2 GitHub Actions

- name: Dependency Check
  uses: dependency-check/Dependency-Check_Action@main
  with:
    path: '.'
    format: 'HTML'
    fail_on_cvss: 7

7. AI 產碼常見漏洞依賴

AI 常引用的套件 已知 CVE 替代方案
log4j 2.14 CVE-2021-44228 (Log4Shell) log4j 2.17+
jackson-databind 2.8 CVE-2019-12384 jackson-databind 2.15+
spring-core 5.x CVE-2022-22965 (Spring4Shell) spring-core 5.3.18+
commons-collections 3.x CVE-2015-6420 commons-collections 4.x
guava 27.x CVE-2018-10237 guava 32.x

8. NVD API Key(提升掃描速度)

# 申請 NVD API Key(免費)
# https://nvd.nist.gov/developers/request-an-api-key

# 設定
export NVD_API_KEY=your-api-key

# 或在 Maven 設定
-Dnvd.api.key=your-api-key

9. 與 Snyk 比較

特性 OWASP Dependency Check Snyk
來源 NVD (NIST) 多來源 + proprietary
掃描速度 較慢(需同步 NVD) 快(Snyk DB)
自動修復 有 (Snyk Fix PR)
License 免費開源 商業模式
容器掃描
適合 純 Library 掃描 全面安全掃描

10. 參考資源