High-Performance Parsing
Fast and accurate parsing of CVSS 3.0 and 3.1 vector strings, supporting all standard and extended metrics.
Powerful, flexible, and easy-to-use CVSS 3.0/3.1 parsing and calculation library
go get github.com/scagogogo/cvss
package main
import (
"fmt"
"log"
"github.com/scagogogo/cvss-parser/pkg/cvss"
"github.com/scagogogo/cvss-parser/pkg/parser"
)
func main() {
// Parse CVSS vector
p := parser.NewCvss3xParser("CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H")
cvssVector, err := p.Parse()
if err != nil {
log.Fatalf("Parse failed: %v", err)
}
// Calculate score
calculator := cvss.NewCalculator(cvssVector)
score, err := calculator.Calculate()
if err != nil {
log.Fatalf("Calculation failed: %v", err)
}
fmt.Printf("CVSS Score: %.1f\n", score)
fmt.Printf("Severity: %s\n", calculator.GetSeverityRating(score))
}
// Assess vulnerability severity
vectors := []string{
"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H",
"CVSS:3.1/AV:L/AC:H/PR:H/UI:R/S:U/C:L/I:L/A:L",
}
for _, vectorStr := range vectors {
// Parse and evaluate...
}
// Calculate vector distance
distCalc := cvss.NewDistanceCalculator(vector1, vector2)
distance := distCalc.EuclideanDistance()
fmt.Printf("Vector distance: %.3f\n", distance)
// JSON serialization
jsonData, err := json.Marshal(cvssVector)
if err != nil {
log.Fatal(err)
}
CVSS Parser - Making CVSS processing simple and efficient