DSL Reference
#The Vulnlog DSL is Kotlin-based and can be used in *.vl.kts
files. The Vulnlog CLI can
parse the DSL.
The Vulnlog CLI requires a definitions.vl.kts
file and reads all *.vl.kts
files in the same
folder as the definition file.
definitins.vl.kts
defines all resources and configurations that are available in a Vulnlog file. It is similar to a Gradle settings file.*.vl.kts
contains the vulnerability reports.
Example:
// definitions.vl.kts
releases {
branch("Release Branch 0") {
release("0.1.0")
}
}
reporters {
reporter("OWASP Dependency Check")
}
// demo.vl.kts
val releaseBranch0 by ReleaseBranchProvider
val owaspDependencyCheck by ReporterProvider
vuln("CVE-2025-005") {
report from dependencyScanner1 at "2025-04-08" on releaseBranch0..releaseBranch0
}
The Vulnlog DSL consists of context or block definitions, providers and specifiers.
Context Definitions
#Top level context definitions. The DSL consists of these functions with their context or blocks.
Function | Use in file | Description |
---|---|---|
releases |
definitions.vl.kts |
Define releases and release branches within this context. |
reporters |
definitions.vl.kts |
Define reporters within this context |
vuln(vararg id: String) |
*.vl.kts |
Define a vulnerability entry within this context. |
Providers
#Providers provide definitions from within the definitions.vl.kts
file in a *.vl.kts
file.
Provider | Description |
---|---|
ReleaseBranchProvider |
Provide a release branch from the definitions.vl.kts file in a *.vl.kts Vulnlog file. |
ReporterProvider |
Provide a reporter from the definitions.vl.kts file in a *.vl.kts Vulnlog file. |
Example:
// The definition file has a release branch definition of "Release Branch 0" that
// is providable by its camel-case version.
val releaseBranch0 by ReleaseBranchProvider
// The definition file has a reporter definition of "Dependency Scanner 1" that
// is providable by its camel-case version.
val dependencyScanner1 by ReporterProvider
Specifiers
#Specifiers are DSL constants values allowing to configure or define functions within the DSL.
Release Branch Specifiers
#Release branch specifiers help to describe a set of release branches.
Specifier | Description |
---|---|
all |
All releases that are defined in the report. |
allOther |
All other releases that are not already specified in a statement. |
Suppression Specifiers
#Suppress specifiers help to describe how long a suppression is active.
Specifier | Description |
---|---|
permanent |
Permanently suppress a vulnerability. |
temporarily |
Temporarily suppress a vulnerability requires a duration specification. |
untilNextPublication |
Suppress a vulnerability until the successor release version is published. |
Verdict Specifier
#Verdict specifiers define what severity level a vulnerability regarding the software project has. A
critical
verdict has a more citical impact on the software project than a low
verdict. If the
project is not at all affected or has mitigations in place the notAffected
verdict is used.
Specifier | Description |
---|---|
critical |
Vulnerability analysis resulted in critical impact to software project. |
high |
Vulnerability analysis revealed high impact on software project. |
moderate |
Vulnerability analysis revealed moderate impact on software project. |
low |
Vulnerability analysis revealed low impact on software project. |
notAffected |
Vulnerability analysis revealed that the vulnerability does not affect the software project. |