diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9f08aa254..dd7b2f214 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -79,6 +79,46 @@ jobs: flags: unittests fail_ci_if_error: true + # Known-vulnerability gate over the dependency graph Storm ships (compile and runtime scope): OWASP + # Dependency-Check against the NVD, failing on a High or Critical advisory. Test and provided scope are the + # application's own dependencies and stay out of it. The NVD API key is a repository secret; Dependabot runs and + # forks receive no secrets, so the scan is skipped there and reported as such. + dependency-check: + runs-on: ubuntu-latest + timeout-minutes: 40 + env: + NVD_API_KEY: ${{ secrets.NVD_API_KEY }} + steps: + - name: Checkout repository + uses: actions/checkout@v7 + + - name: Set up JDK 21 + if: env.NVD_API_KEY != '' + uses: actions/setup-java@v6 + with: + distribution: 'temurin' + java-version: '21' + # The Maven cache holds the NVD data the plugin keeps under ~/.m2 as well, so a run only pulls the + # advisories published since the last one. + cache: 'maven' + + - name: Scan the shipped dependency graph + if: env.NVD_API_KEY != '' + run: mvn -B -DskipTests -Dmaven.javadoc.skip=true -Dspotless.check.skip=true install org.owasp:dependency-check-maven:aggregate + + - name: Upload the Dependency-Check report + if: env.NVD_API_KEY != '' && always() + uses: actions/upload-artifact@v7 + with: + name: dependency-check-report + path: target/dependency-check-report.* + if-no-files-found: ignore + retention-days: 30 + + - name: Report a skipped scan + if: env.NVD_API_KEY == '' + run: echo "::notice::Dependency-Check skipped - no NVD_API_KEY available to this run." + # The CLI ships to users via npx but is plain JavaScript with no compile step, # so at minimum its syntax must be checked before merge. cli-check: diff --git a/pom.xml b/pom.xml index 10c7815ef..e03062217 100644 --- a/pom.xml +++ b/pom.xml @@ -264,6 +264,29 @@ + + + org.owasp + dependency-check-maven + 13.0.0 + + + 7 + true + true + NVD_API_KEY + + HTML + JSON + + + false + + diff --git a/storm-jackson2/pom.xml b/storm-jackson2/pom.xml index 92502277b..4ea812d73 100644 --- a/storm-jackson2/pom.xml +++ b/storm-jackson2/pom.xml @@ -146,7 +146,7 @@ com.fasterxml.jackson.core jackson-core - 2.17.0 + 2.17.3 provided @@ -163,7 +163,7 @@ com.fasterxml.jackson.datatype jackson-datatype-jsr310 - 2.17.0 + 2.17.3 test diff --git a/storm-jackson3/pom.xml b/storm-jackson3/pom.xml index 7aa196ead..35c95ffc6 100644 --- a/storm-jackson3/pom.xml +++ b/storm-jackson3/pom.xml @@ -134,13 +134,13 @@ tools.jackson.core jackson-databind - 3.0.0 + 3.0.4 provided tools.jackson.core jackson-core - 3.0.0 + 3.0.4 provided diff --git a/storm-mysql/pom.xml b/storm-mysql/pom.xml index e724a6679..4bd294229 100644 --- a/storm-mysql/pom.xml +++ b/storm-mysql/pom.xml @@ -126,7 +126,7 @@ com.mysql mysql-connector-j - 8.0.33 + 9.7.0 test