diff --git a/etc/copyright-exclude.txt b/etc/copyright-exclude.txt index 6d0ab0ce4..1ad7383ef 100644 --- a/etc/copyright-exclude.txt +++ b/etc/copyright-exclude.txt @@ -6,6 +6,7 @@ LICENSE.txt 3RD-PARTY-LICENSE.txt etc/copyright-exclude.txt etc/copyright.txt +etc/dependency-check-suppression.xml etc/images/ _plantuml-config.txt superagent.js @@ -40,4 +41,4 @@ freemarker-implicit.ftl expected expected-config .helidon -jvm.config \ No newline at end of file +jvm.config diff --git a/etc/dependency-check-suppression.xml b/etc/dependency-check-suppression.xml new file mode 100644 index 000000000..8370d7608 --- /dev/null +++ b/etc/dependency-check-suppression.xml @@ -0,0 +1,17 @@ + + + + + + + + ^pkg:maven/org\.codehaus\.plexus/plexus\-(cipher|classworlds|component-annotations|interpolation|container-default|sec-dispatcher)@.*$ + CVE-2022-4244 + CVE-2022-4245 + + + + diff --git a/etc/scripts/owasp-dependency-check.sh b/etc/scripts/owasp-dependency-check.sh new file mode 100755 index 000000000..34e00014f --- /dev/null +++ b/etc/scripts/owasp-dependency-check.sh @@ -0,0 +1,64 @@ +#!/bin/bash -e +# +# Copyright (c) 2020, 2024 Oracle and/or its affiliates. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +set -o pipefail || true # trace ERR through pipes +set -o errtrace || true # trace ERR through commands and functions +set -o errexit || true # exit the script if any statement returns a non-true return value + +# Path to this script +if [ -h "${0}" ] ; then + SCRIPT_PATH="$(readlink "${0}")" +else + # shellcheck disable=SC155 + SCRIPT_PATH="${0}" +fi +readonly SCRIPT_PATH + +# Path to the root of the workspace +# shellcheck disable=SC2046 +WS_DIR=$(cd $(dirname -- "${SCRIPT_PATH}") ; cd ../.. ; pwd -P) + +on_error(){ + CODE="${?}" && \ + set +x && \ + printf "[ERROR] Error(code=%s) occurred at %s:%s command: %s\n" \ + "${CODE}" "${BASH_SOURCE[0]}" "${LINENO}" "${BASH_COMMAND}" +} +trap on_error ERR + +RESULT_FILE=$(mktemp -t XXXdependency-check-result) +readonly RESULT_FILE + +die() { cat "${RESULT_FILE}" ; echo "Dependency report in ${WS_DIR}/target" ; echo "${1}" ; exit 1 ;} + +if [ "${PIPELINE}" = "true" ] ; then + # If in pipeline do a priming build before scan + # shellcheck disable=SC2086 + mvn ${MAVEN_ARGS} -f "${WS_DIR}"/pom.xml clean install -DskipTests +fi + +# Setting NVD_API_KEY is not required but improves behavior of NVD API throttling + +# shellcheck disable=SC2086 +mvn ${MAVEN_ARGS} -Dorg.slf4j.simpleLogger.defaultLogLevel=WARN org.owasp:dependency-check-maven:aggregate \ + -f "${WS_DIR}"/pom.xml \ + -Dtop.parent.basedir="${WS_DIR}" \ + -Dnvd-api-key="${NVD_API_KEY}" \ + > "${RESULT_FILE}" || die "Error running the Maven command" + +grep -i "One or more dependencies were identified with known vulnerabilities" "${RESULT_FILE}" \ + && die "CVE SCAN ERROR" || echo "CVE SCAN OK" diff --git a/pom.xml b/pom.xml index 0b3132788..742248a42 100644 --- a/pom.xml +++ b/pom.xml @@ -183,6 +183,7 @@ 3.1.0 3.8.1 3.3.0 + 9.0.9 2.8.2 3.4.0 3.0.0-M5 @@ -495,6 +496,30 @@ native-maven-plugin ${version.plugin.graalvm} + + org.owasp + dependency-check-maven + ${version.plugin.dependency-check} + + ${dependency-check.skip} + true + false + false + ${nvd-api-key} + + + + org.testng:testng + + + HTML + + + + ${top.parent.basedir}/etc/dependency-check-suppression.xml + + +