Scores | CVSS v4 Calculator Tool | Fluid Attacks Help

Introduction

Scores is Fluid Attacks’ CVSS v4 calculator tool designed to assist users in calculating CVSS v4 vectors and scores using context. It interprets vulnerability descriptions, suggests appropriate metric values, and generates a complete CVSS vector.

One of the most important context providers when calculating the score is the CVSS v3 score. If this score does not exist, the one defined in “Defines” will be used by default, which will influence the final score. This approach is taken because the context provided in vulnerability descriptions is often very poor.

Contributing

Please read the contributing page first.

Using the CLI

The Scores module provides a command-line interface (CLI) to facilitate the calculation of CVSS scores. It supports two modes: single and batch.

Command Structure

Single vulnerability

scores single [arg] [--interactive]

Batch processing

scores batch --input-file <path> [--output-file <path>]

Single Mode

Use the scores single command when you need to process one vulnerability.

Arguments

  1. arg (optional): A valid JSON string representing a VulnerabilityMetadata object. This argument allows you to pass vulnerability details directly to the CLI for processing.

  2. class VulnerabilityMetadata(BaseModel):
      vulnerability_description: str
      finding: str
      finding_description: str | None = None  
      cwe: list[str] | None = None  
      cvss_v3: str | None = None


Single Options

  1. --interactive: Run the CLI in interactive mode. When this option is used, the CLI will prompt you to enter the required fields one by one.

Single Examples

  1. Interactive Mode: To run the CLI in interactive mode, simply use the command:

  2. scores single --interactive

    You will be prompted to enter the following fields:

    1. vulnerability_description: A description of the vulnerability (required).
    2. finding: The finding associated with the vulnerability (required).
    3. cwe: A comma-separated list of Common Weakness Enumerations (optional).
    4. cvss_v3: An existing CVSS v3 vector (optional).

  3. Using JSON Argument: If you have a JSON string ready, you can pass it directly as an argument:

  4. scores single '{  "vulnerability_description": "Example desctiption",
      "finding": "F123",
      "cwe": ["CWE-79"],
      "cvss_v3": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/C:N/I:N/A:N"
    }'

Batch Mode
Use the batch subcommand when you need to process multiple vulnerabilities at once.

scores batch --input-file <path> [--output-file <path>]

Batch Options
  1. --input-file <path> (required) Path to a JSON file mapping CVE keys to vulnerability objects:

  2. {
      "CVE-2025-1234": { /* VulnerabilityMetadata */ },
      "CVE-2025-5678": { /* VulnerabilityMetadata */ }
    }

  3. --output-file <path> (optional) Where to write the result JSON (defaults to output.json next to the input file). The output has the shape:

  4. {
      "CVE-2025-1234": "CVSS:4.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H",
      "CVE-2025-5678": "CVSS:4.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H"
    }

Batch Examples

Default output path


scores batch --input-file path/to/vulns.json

Custom output path


scores batch \
  --input-file path/to/vulns.json \
  --output-file path/to/results.json

Output

  1. Single mode: displays the validated input and invokes the LLM to generate the CVSS v4 vector.
  2. Batch mode: writes a JSON file mapping each CVE to its computed CVSS v4 vector.
  3. Validation errors will be printed to stderr with clear messages indicating the failure.
Idea
Tip
Have an idea to simplify our architecture or noticed docs that could use some love? Don't hesitate to open an issue or submit improvements.