templates.htmlReport.vsl Maven / Gradle / Ivy
#**
This file is part of dependency-check-core.
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.
Copyright (c) 2012 Jeremy Long. All Rights Reserved.
@author Jeremy Long
@version 1.4
*#
#[[
Dependency-Check Report
Dependency-Check is an open source tool performing a best effort analysis of 3rd party dependencies;
false positives and false negatives may exist in the analysis performed by the tool. Use of the tool and
the reporting provided constitutes acceptance for use in an AS IS condition, and there are NO warranties,
implied or otherwise, with regard to the analysis or its use. Any use of the tool and the reporting provided
is at the user’s risk. In no event shall the copyright holder or OWASP be held liable for any damages whatsoever
arising out of or in connection with the use of this tool, the analysis performed, or the resulting report.
How to read the report |
Suppressing false positives |
Getting Help: github issues
Sponsor
]]#
Project: $enc.html($applicationName)
#if ($groupID && $artifactID && $applicationVersion)
$enc.html($groupID):$enc.html($artifactID):$enc.html($applicationVersion)
#end
#set($depCount=$dependencies.size())
#set($vulnDepCount=0)
#set($vulnCount=0)
#set($vulnSuppressedCount=0)
#set($cpeSuppressedCount=0)
#foreach($dependency in $dependencies)
#set($depCount=$depCount+$dependency.getRelatedDependencies().size())
#if($dependency.getVulnerabilities().size()>0)
#set($vulnDepCount=$vulnDepCount+1)
#set($vulnCount=$vulnCount+$dependency.getVulnerabilities().size())
#end
#if($dependency.getSuppressedIdentifiers().size()>0)
#set($cpeSuppressedCount=$cpeSuppressedCount+1)
#end
#if($dependency.getSuppressedVulnerabilities().size()>0)
#set($vulnSuppressedCount=$vulnSuppressedCount+$dependency.getSuppressedVulnerabilities().size())
#end
#end
Scan Information (show all):
- dependency-check version: $version
- Report Generated On: $scanDate
- Dependencies Scanned: $depCount ($dependencies.size() unique)
- Vulnerable Dependencies: $vulnDepCount
- Vulnerabilities Found: $vulnCount
- Vulnerabilities Suppressed: $vulnSuppressedCount
#if($vulnSuppressedCount>0)
(show)
#end
- ...
#foreach($prop in $properties.getMetaData().entrySet())
#end
#set($cnt=0)
#if($exceptions)
#macro( writeHtmlException $type $ex $depth)
#set($cnt=$cnt+1)
$enc.html($ex.getMessage())
#end
Analysis Exceptions
#foreach($ex in $exceptions)
#set($type="exception")
#set($d=0)
#writeHtmlException($type $ex $d)
#end
#end
Summary
Display: Showing Vulnerable Dependencies (click to show all)
#set($lnkcnt=0)
Dependency
Vulnerability IDs
Package
Highest Severity
CVE Count
Confidence
Evidence Count
#set($hasknown=0)
#foreach($dependency in $dependencies)
#set($lnkcnt=$lnkcnt+1)
$enc.html($dependency.DisplayFileName)
#set($mavenlink="")
#set($cpeIdCount=0)
#set($cpeIdConf="")
#set($sortValue="")
#foreach($id in $dependency.getVulnerableSoftwareIdentifiers())
#set($sortValue=$sortValue+$id.value)
#end
#set($sortValue="")
#set($cpeSort=0)
#foreach($id in $dependency.getVulnerableSoftwareIdentifiers())
#if ($cpeIdCount>=1)
#end
#if( $id.url )
$enc.html($id.value)
#else
$enc.html($id.value)
#end
#if ($cpeIdConf == "")
#set($cpeIdConf=$id.confidence)
#set($cpeSort=$id.confidence.ordinal())
#elseif ($cpeIdConf.compareTo($id.confidence)>0)
#set($cpeIdConf=$id.confidence)
#set($cpeSort=$id.confidence.ordinal())
#end
#set($cpeIdCount=$cpeIdCount+1)
#end
#foreach($id in $dependency.getSoftwareIdentifiers())
#set($sortValue=$sortValue+$id.value)
#end
#set($sortValue="")
#set($idCount=0)
#foreach($id in $dependency.getSoftwareIdentifiers())
#if ($idCount>=1)
#end
#if( $id.url )
$enc.html($id.value)
#else
$enc.html($id.value)
#end
#set($idCount=$idCount+1)
#end
#set($cveImpact=-1)
#set($cveSeverity=" ")
#if($dependency.getVulnerabilities().size()>0)
#set($severestVuln=$dependency.getVulnerabilities(true).iterator().next())
## yes - we are mixing v2 and v3... no consistency in data so doing the best we can
## with a set sorted approximately on descending severity
#if ($severestVuln.cvssV3)
#set($cveImpact=$severestVuln.cvssV3.cvssData.baseScore)
#elseif ($severestVuln.cvssV2)
#set($cveImpact=$severestVuln.cvssV2.cvssData.baseScore)
#end
#set($cveSeverity=$enc.html($severestVuln.highestSeverityText))
#if($dependency.hasKnownExploitedVulnerability())
#set($cveSeverity=$cveSeverity+"*")
#set($hasknown=1)
#end
#end
#set($sortValue=$cveImpact*10)
$cveSeverity
$dependency.getVulnerabilities().size()
$WordUtils.capitalizeFully($cpeIdConf.toString())
$dependency.size()
#end
#if($hasknown==1)
* indicates the dependency has a known exploited vulnerability
#end
Dependencies (vulnerable)
#set($lnkcnt=0)
#set($vsctr=0) ##counter to create unique groups for vulnerable software
#foreach($dependency in $dependencies)
#set($lnkcnt=$lnkcnt+1)
$enc.html($dependency.DisplayFileName)
#if ($dependency.description)
Description:
$enc.html($dependency.description)
#end
#if ($dependency.license)
#if ($dependency.license.matches("https?://.+"))
License:
$enc.html($dependency.license)
#else
License:$enc.html($dependency.license)
#end
#end
File Path: $enc.html($dependency.FilePath)
#if(!$dependency.isVirtual())
MD5: $enc.html($dependency.Md5sum)
SHA1: $enc.html($dependency.Sha1sum)
SHA256:$enc.html($dependency.Sha256sum)
#end
#if ($dependency.projectReferences.size()==1)
Referenced In Project/Scope: $enc.html($dependency.projectReferences.iterator().next())
#end
#if ($dependency.projectReferences.size()>1)
Referenced In Projects/Scopes:
#foreach($ref in $dependency.projectReferences)
- $enc.html($ref)
#end
#end
#if ($dependency.includedBy.size()==1)
#set($incBy=$dependency.includedBy.iterator().next())
$enc.html($dependency.DisplayFileName) is in the transitive dependency tree of the listed items.Included by: $enc.html($incBy.getReference())#if($incBy.getType()) ($enc.html($incBy.getType()))#end
#end
#if ($dependency.includedBy.size()>1)
$enc.html($dependency.DisplayFileName) is in the transitive dependency tree of the listed items.Included by:
#foreach($parent in $dependency.includedBy)
- $enc.html($parent.getReference())#if($parent.getType()) ($enc.html($parent.getType()))#end
#end
#end
#set($cnt=$cnt+1)
Evidence
#if($dependency.getRelatedDependencies().size()>0)
#set($cnt=$cnt+1)
Related Dependencies
#end
#set($cnt=$cnt+1)
Identifiers
##: $enc.html($cpevalue)
#set($supressPkgUrl='')
#if ($dependency.getSoftwareIdentifiers().size()==0 && $dependency.getVulnerableSoftwareIdentifiers().size()==0)
- None
#else
#foreach($id in $dependency.getSoftwareIdentifiers())
#set($supressPkgUrl=$rpt.identifierToSuppressionId($id))
#if ($supressPkgUrl)
#break
#end
#end
#foreach($id in $dependency.getSoftwareIdentifiers())
#if( $id.url )
- $enc.html($id.value)
#else
- $enc.html($id.value)
#end
#if ($id.confidence)
(Confidence:$WordUtils.capitalizeFully($id.confidence.toString()))
#end
#if ($id.notes)
- Notes: $enc.html($id.notes)
#end
#end
#foreach($id in $dependency.getVulnerableSoftwareIdentifiers())
#if( $id.url )
- $enc.html($id.value)
#else
- $enc.html($id.value)
#end
#if ($id.confidence)
(Confidence:$WordUtils.capitalizeFully($id.confidence.toString()))
#end
#if ($id.notes)
- Notes: $enc.html($id.notes)
#end
#end
#end
#if($dependency.getVulnerabilities().size()>0)
#set($cnt=$cnt+1)
Published Vulnerabilities
#foreach($vuln in $dependency.getVulnerabilities(true))
#set($vsctr=$vsctr+1)
#if($vuln.getSource().name().equals("NVD"))
#elseif($vuln.getSource().name().equals("NPM"))
#else
$enc.html($vuln.name) ($vuln.getSource().name())
#end
#if($vuln.getKnownExploitedVulnerability())
CISA Known Exploited Vulnerability:
- Product: $enc.html($vuln.getKnownExploitedVulnerability().getVendorProject()) $enc.html($vuln.getKnownExploitedVulnerability().getProduct())
- Name: $enc.html($vuln.getKnownExploitedVulnerability().getVulnerabilityName())
- Date Added: $enc.html($vuln.getKnownExploitedVulnerability().getDateAdded())
- Description: $enc.html($vuln.getKnownExploitedVulnerability().getShortDescription())
- Required Action: $enc.html($vuln.getKnownExploitedVulnerability().getRequiredAction())
- Due Date: $enc.html($vuln.getKnownExploitedVulnerability().getDueDate())
#if($vuln.getKnownExploitedVulnerability().getNotes())
- Notes: $enc.html($vuln.getKnownExploitedVulnerability().getNotes())
#end
#end
#if($vuln.description)
$enc.html($vuln.description)
#end
#if ($vuln.cwes.toString())
$vuln.cwes.toString()
#end
#if ($vuln.notes)
Notes: $enc.html($vuln.notes)
#end
#if($vuln.getCvssV2())
CVSSv2:
- Base Score: $enc.html($vuln.getCvssV2().getCvssData().getBaseSeverity()) ($vuln.getCvssV2().getCvssData().getBaseScore())
- Vector: $enc.html($vuln.getCvssV2().toString())
#end
#if($vuln.getCvssV3())
CVSSv3:
- Base Score: $enc.html($vuln.getCvssV3().getCvssData().getBaseSeverity()) ($vuln.getCvssV3().getCvssData().getBaseScore())
- Vector: $enc.html($vuln.getCvssV3().toString())
#end
#if ($vuln.unscoredSeverity)
Unscored:
- Severity: #if($vuln.unscoredSeverity.equals("0.0"))Unknown#else$enc.html($vuln.unscoredSeverity)#end
#end
#if ($vuln.getReferences().size()>0)
References:
#foreach($ref in $vuln.getReferences(true))
#if ($ref.url && $ref.name)
- $enc.html($ref.source) - $enc.html($ref.name)
#elseif ($ref.uri)
- $enc.html($ref.source) - $enc.html($ref.url)
#elseif ($ref.name)
- $enc.html($ref.source) - $enc.html($ref.name)
#end
#end
#end
#if ($vuln.getSource().name().equals("NVD") && $vuln.matchedVulnerableSoftware)
#if ($vuln.getVulnerableSoftware().size()<2)
Vulnerable Software & Versions:
#else
Vulnerable Software & Versions: (show all)
- $enc.html($vuln.matchedVulnerableSoftware.toString())
- ...
#foreach($vs in $vuln.getVulnerableSoftware(true))
#end
#end
#elseif ($vuln.getVulnerableSoftware().size()!=0)
Vulnerable Software & Versions ($vuln.getSource().name()):
#foreach($vs in $vuln.getVulnerableSoftware(true))
- $enc.html($vs.toString())
#end
#end
#end
#end
#end
## BEGIN SUPPRESSED VULNERABILITIES
#if ($vulnSuppressedCount>0 || $cpeSuppressedCount>0)
Suppressed Vulnerabilities
#foreach($dependency in $dependencies)
#if ($dependency.getSuppressedIdentifiers().size()>0 || $dependency.getSuppressedVulnerabilities().size()>0)
#set($lnkcnt=$lnkcnt+1)
$enc.html($dependency.DisplayFileName)
#if ($dependency.description)
Description:
$enc.html($dependency.description)
#end
#if ($dependency.license)
#if ($dependency.license.matches("https?://.+"))
License:
$enc.html($dependency.license)
#else
License:$enc.html($dependency.license)
#end
#end
File Path: $enc.html($dependency.FilePath)
#if(!$dependency.isVirtual())
MD5: $enc.html($dependency.Md5sum)
SHA1: $enc.html($dependency.Sha1sum)
SHA256: $enc.html($dependency.Sha256sum)
#end
#if ($dependency.projectReferences.size()==1)
Referenced In Project/Scope: $enc.html($dependency.projectReferences.iterator().next())
#end
#if ($dependency.projectReferences.size()>1)
Referenced In Projects/Scopes:
#foreach($ref in $dependency.projectReferences)
- $enc.html($ref)
#end
#end
#if ($dependency.includedBy.size()==1)
#set($incBy=$dependency.includedBy.iterator().next())
$enc.html($dependency.DisplayFileName) is in the transitive dependency tree of the listed items.Included by: $enc.html($incBy.getReference())#if($incBy.getType()) ($enc.html($incBy.getType()))#end
#end
#if ($dependency.includedBy.size()>1)
Included by:
#foreach($parent in $dependency.includedBy)
- $enc.html($parent.getReference())#if($parent.getType()) ($enc.html($parent.getType()))#end
#end
#end
#set($cnt=$cnt+1)
Evidence
#if($dependency.getRelatedDependencies().size()>0)
#set($cnt=$cnt+1)
Related Dependencies
#end
#set($cnt=$cnt+1)
Suppressed Identifiers
##: $enc.html($cpevalue)
#if ($dependency.getSuppressedIdentifiers().size()==0)
- None
#else
#foreach($id in $dependency.getSuppressedIdentifiers())
#if( $id.url )
- $enc.html($id.value) suppressed
#else
- $enc.html($id.value) suppressed
#end
#if ($id.confidence)
(Confidence:$WordUtils.capitalizeFully($id.confidence.toString()))
#end
#if ($id.notes)
- Notes: $enc.html($id.notes)
#end
#end
#end
#if($dependency.getSuppressedVulnerabilities().size()>0)
#set($cnt=$cnt+1)
Suppressed Vulnerabilities
#foreach($vuln in $dependency.getSuppressedVulnerabilities(true))
#set($vsctr=$vsctr+1)
#if($vuln.getSource().name().equals("NVD"))
$enc.html($vuln.name) suppressed
#elseif($vuln.getSource().name().equals("NPM"))
$enc.html($vuln.name) (NPM) suppressed
#else
$enc.html($vuln.name) ($vuln.getSource().name()) suppressed
#end
#if($vuln.getKnownExploitedVulnerability())
CISA Known Exploited Vulnerability:
- Product: $enc.html($vuln.getKnownExploitedVulnerability().getVendorProject()) $enc.html($vuln.getKnownExploitedVulnerability().getProduct())
- Name: $enc.html($vuln.getKnownExploitedVulnerability().getVulnerabilityName())
- Date Added: $enc.html($vuln.getKnownExploitedVulnerability().getDateAdded())
- Description: $enc.html($vuln.getKnownExploitedVulnerability().getShortDescription())
- Required Action: $enc.html($vuln.getKnownExploitedVulnerability().getRequiredAction())
- Due Date: $enc.html($vuln.getKnownExploitedVulnerability().getDueDate())
#if($vuln.getKnownExploitedVulnerability().getNotes())
- Notes: $enc.html($vuln.getKnownExploitedVulnerability().getNotes())
#end
#end
#if($vuln.description)
$enc.html($vuln.description)
#end
#if ($vuln.cwes.toString())
$vuln.cwes.toString()
#end
#if ($vuln.notes)
Notes: $enc.html($vuln.notes)
#end
#if($vuln.getCvssV2())
CVSSv2:
- Base Score: $enc.html($vuln.getCvssV2().getCvssData().getBaseSeverity()) ($vuln.getCvssV2().getCvssData().getBaseScore())
- Vector: $enc.html($vuln.getCvssV2().toString())
#end
#if($vuln.getCvssV3())
CVSSv3:
- $enc.html($vuln.getCvssV3().getCvssData().getBaseSeverity()) ($vuln.getCvssV3().getCvssData().getBaseScore())
- $enc.html($vuln.getCvssV3().toString())
#end
#if ($vuln.unscoredSeverity)
Unscored:
- Severity: #if($vuln.unscoredSeverity.equals("0.0"))Unknown#else$enc.html($vuln.unscoredSeverity)#end
#end
#if ($vuln.getReferences().size()>0)
References:
#foreach($ref in $vuln.getReferences(true))
#if ($ref.url && $ref.name)
- $enc.html($ref.source) - $enc.html($ref.name)
#elseif ($ref.uri)
- $enc.html($ref.source) - $enc.html($ref.url)
#elseif ($ref.name)
- $enc.html($ref.source) - $enc.html($ref.name)
#end
#end
#end
#if ($vuln.getSource().name().equals("NVD") && $vuln.matchedVulnerableSoftware)
#if ($vuln.getVulnerableSoftware().size()<2)
Vulnerable Software & Versions:
#else
Vulnerable Software & Versions: (show all)
- $enc.html($vuln.matchedVulnerableSoftware.toString())
- ...
#foreach($vs in $vuln.getVulnerableSoftware(true))
#end
#end
#else
Vulnerable Software & Versions ($vuln.getSource().name()):
#foreach($vs in $vuln.getVulnerableSoftware(true))
- $enc.html($vs.toString())
#end
#end
#end
#end
#end
#end
#end
## END SUPPRESSED VULNERABILITIES
This report contains data retrieved from the National Vulnerability Database.
This report may contain data retrieved from the CISA Known Exploited Vulnerability Catalog.
This report may contain data retrieved from the Github Advisory Database (via NPM Audit API).
This report may contain data retrieved from RetireJS.
This report may contain data retrieved from the Sonatype OSS Index.