Back to Dependencycheck

Index

src/site/markdown/analyzers/index.md

12.2.213.3 KB
Original Source

File Type Analyzers

OWASP dependency-check contains several analyzers that are used to extract identification information from the files analyzed.

AnalyzerFile Types ScannedAnalysis Method
ArchiveZip archive format (*.zip, *.ear, *.war, *.jar, *.sar, *.apk, *.nupkg); Tape Archive Format (*.tar); Gzip format (*.gz, *.tgz); Bzip2 format (*.bz2, *.tbz2); RPM format (*.rpm)Extracts archive contents, then scans contents with all available analyzers.
Assembly.NET Assemblies (*.exe, *.dll)Uses GrokAssembly.exe; requires the dotnet core 8.0 runtime to be installed.
JarJava archive files (*.jar); Web application archive (*.war)Examines archive manifest metadata, and Maven Project Object Model files (pom.xml).
MS BuildMS Build files (*.csproj, *.vbproj)Parses the project files, including related directory build or package properties, to gather dependency information.
Node PackageNPM package specification files (package.json)Parses the package.json to gather dependency information for a Node JS project.
Node AuditNPM package lock files (package-lock.json, npm-shrinkwrap.json)Uses the npm audit APIs to report on known vulnerable node.js libraries. This analyzer requires an Internet connection.
NugetconfNuget packages.config fileUses XPath to parse specification XML.
NuspecNuget package specification file (*.nuspec)Uses XPath to parse specification XML.
OpenSSLOpenSSL Version Source Header File (opensslv.h)Regex parse of the OPENSSL_VERSION_NUMBER macro definition.
PNPM AuditPNPM lock files (pnpm-lock.yaml)Uses the PNPM CLI audit command to analyze lock files and retrieve vulnerabilities from the NPM Audit APIs.
RetireJSJavaScript filesAnalyzes JavaScript files using the RetireJS database.
Ruby bundler‑auditRuby Gemfile.lock filesExecutes bundle-audit and incorporates the results into the dependency-check report.
Yarn AuditYarn lock files (yarn.lock)Uses the Yarn CLI audit command to analyze lock files and retrieve vulnerabilities from the NPM Audit APIs.

Augmenting Analyzers

These analyzers augment file type analyzers by sourcing additional metadata and vulnerability information from other data sources. In contrast to the file type analyzers, they are not always limited to a specific file type, and rely on other analyzers to discover relevant dependencies.

AnalyzerFile Types ScannedAnalysis Method
OSS IndexAll dependencies whose PURL/Package URL can be determined.Uses the Sonatype Guide OSS Index APIs to report on vulnerabilities not found in the NVD. This analyzer requires an internet connection, and authentication is mandatory.
CentralJava archive files (*.jar)Uses dependency hashes to query Maven Central for more reliable Maven Project Object Module metadata (pom.xml) for vulnerability matching.
ArtifactoryJava archive files (*.jar)Uses dependency hashes to query Artifactory Repositories for more reliable Maven Project Object Module metadata (pom.xml) for vulnerability matching.
NexusJava archive files (*.jar)Uses dependency hashes to query Sonatype Nexus for more reliable Maven Project Object Module metadata (pom.xml) for vulnerability matching.

Experimental Analyzers

The following analyzers can be enabled by enabling the experimental configuration option; see the documentation for the CLI, Ant, Maven, etc. for more information. These analyzers are considered experimental due to the higher false positive and false negative rates. Even though these are marked as experimental several teams have found them useful in their current state.

AnalyzerFile Types ScannedAnalysis Method
AutoconfAutoconf project configuration files (configure, configure.in, configure.ac)Regex scan for AC_INIT metadata, including in generated configuration script.
CMakeCMake project files (CMakeLists.txt) and scripts (*.cmake)Regex scan for project initialization and version setting commands.
CocoaPodsCocoaPods .podspec filesExtracts dependency information from specification file.
CarthageCarthage Cartfile.resolved filesExtracts dependency information from specification file.
Composer LockPHP Composer Lock files (composer.lock)Parses PHP Composer lock files for exact versions of dependencies.
CPAN FilePerl cpanfile Lock files (composer.lock)Parses Perl cpanfile files for dependencies.
Dartpubspec.yaml, pubspec.lockExtracts dependency information from specification files.
Golang modgo.modUses go mod to determine exactly which dependencies are used.
Golang depGopkg.lockAnalyzes the lock file directly to parse dependency information.
PE AnalyzerPE DLL and EXEAnalyzes the PE Headers to obtain dependency information.
PythonPython source files (*.py); Package metadata files (PKG-INFO, METADATA); Package Distribution Files (*.whl, *.egg, *.zip)Regex scan of Python source files for setuptools metadata; Parse RFC822 header format for metadata in all other artifacts.
PipPython Pip requirements.txt filesRegex scan of requirements.txt.
Ruby GemspecRuby makefiles (Rakefile); Ruby Gemspec files (*.gemspec)Regex scan Gemspec initialization blocks for metadata.
SWIFTSWIFT Package Manager's Package.swiftExtracts dependency information from swift package file.