Skip to content

🏗️ build ​

🏗️ Build · 🟢 stable

Synopsis ​

cvss build constructs a CVSS vector string from individual metric values passed as flags (--AV=N, --AC=L, …). All eight base metrics are required; temporal and environmental metrics are optional. Use --cvss-version to target v3.0 or v3.1.

How It Works ​

Flag values for each metric are collected into a map and handed to FromMap; the eight base metrics are mandatory, temporal/environmental entries are optional, and the result is a canonical vector string.

Usage ​

bash
cvss build [flags]

Flags ​

FlagTypeDefaultDescription
--AstringAvailability (H/L/N)
--ACstringAttack Complexity (L/H)
--ARstringAvailability Requirement (X/H/M/L)
--AVstringAttack Vector (N/A/L/P)
--CstringConfidentiality (H/L/N)
--CRstringConfidentiality Requirement (X/H/M/L)
--EstringExploit Code Maturity (X/U/P/F/H)
--IstringIntegrity (H/L/N)
--IRstringIntegrity Requirement (X/H/M/L)
--MAstringModified Availability (X/H/L/N)
--MACstringModified Attack Complexity (X/L/H)
--MAVstringModified Attack Vector (X/N/A/L/P)
--MCstringModified Confidentiality (X/H/L/N)
--MIstringModified Integrity (X/H/L/N)
--MPRstringModified Privileges Required (X/N/L/H)
--MSstringModified Scope (X/U/C)
--MUIstringModified User Interaction (X/N/R)
--PRstringPrivileges Required (N/L/H)
--RCstringReport Confidence (X/U/R/C)
--RLstringRemediation Level (X/O/T/W/U)
--SstringScope (U/C)
--UIstringUser Interaction (N/R)
--cvss-versionstring3.1CVSS spec version: 3.0 or 3.1
-h, --helpboolfalseHelp for build

All 8 base metrics are required

--AV, --AC, --PR, --UI, --S, --C, --I, --A must all be supplied. Temporal (E/RL/RC) and environmental (CR/IR/AR and all M*) metrics are optional and omitted from the output when not set.

Examples ​

bash
cvss build --AV=N --AC=L --PR=N --UI=N --S=U --C=H --I=H --A=H
text
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
bash
cvss build --AV=N --AC=L --PR=N --UI=N --S=U --C=H --I=H --A=H --E=F --RL=T --RC=C
text
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H/E:F/RL:T/RC:C
bash
cvss build --cvss-version=3.0 --AV=N --AC=L --PR=N --UI=N --S=C --C=H --I=H --A=H
text
CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H

Underlying API ​

Collects the flag values into a map[string]string and calls cvss.FromMap, then prints cv.String().

go
import (
    "fmt"

    "github.com/scagogogo/cvss-skills/pkg/cvss"
)

m := map[string]string{
    "AV": "N", "AC": "L", "PR": "N", "UI": "N",
    "S": "U", "C": "H", "I": "H", "A": "H",
    // optional temporal / environmental entries omitted when absent
    "E": "F", "RL": "T", "RC": "C",
}

cv, err := cvss.FromMap(m)
if err != nil {
    log.Fatal(err)
}
fmt.Println(cv.String()) // CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H/E:F/RL:T/RC:C
  • modify — change a few metrics in an existing vector
  • parse — verify the built vector parses back cleanly
  • validate — validate the result
  • FromMap — Go SDK reference

Released under the MIT License.