Trail of Bits' cvss-scoring skill turns a bug description into a CVSS v4.0 vector

42 minutes ago

Trail of Bits' new cvss-scoring plugin, merged November 6, 2026, turns a plain-text vulnerability description into a CVSS v4.0 vector, a reason for every metric, and a FIRST.org calculator link that shows the score. For Claude Code and Codex. https://github.com/trailofbits/skills/pull/507 https://github.com/trailofbits/skills/blob/main/plugins/cvss-scoring/README.md https://github.com/trailofbits/skills/blob/main/plugins/cvss-scoring/skills/cvss-scoring/SKILL.md

Ask about this presentation

Chapters

  1. 0:00Trail of Bits' cvss-scoring skill turns a bug description into a CVSS v4.0 vector
  2. 0:21Every metric gets its own reason, tied to a fact in the description
  3. 0:35FIRST.org's calculator computes the number, opened with the vector applied
  4. 0:54If an exploitability metric is unclear, the skill asks before it scores
  5. 1:08A race condition goes in Attack Requirements in v4.0
  6. 1:28Each vector is compared with the closest of 27 scored CVEs
  7. 1:43A finding with no security impact gets a refusal
  8. 1:57An API key the attacker can sign up for counts as no privileges
  9. 2:15cvss-scoring 1.2.0 is a plugin for Claude Code and Codex
Show transcript
  1. Trail of Bits added a cvss-scoring skill to its marketplace on November 6th. Describe a vulnerability in plain text, and it returns a CVSS version 4.0 vector, a reason for every metric, and a calculator link with the score. A report's severity becomes something a reader can check.

    Slide text
    github.com/trailofbits/skills merged Nov 6, 2026
    justification table vector string calculator link
    trailofbits/skills · PR #507, merged Nov 6, 2026
  2. Each of the eleven base metrics gets a value and one line tying it to a fact you wrote. An impact value your description doesn't settle is marked assumed, so you know which lines to check.

    Slide text
    github.com/trailofbits/skills cvss-scoring 1.2.0
    Metric Value Justification
    AV N Exploitable via HTTP API without local access
    PR N Unauthenticated endpoint
    VC H Attacker gains read access to all application data
    SC N No evidence of downstream system impact [ASSUMED]
    cvss-scoring/SKILL.md · Output Format, Part 1
  3. The skill doesn't compute the score. It puts the vector on a FIRST.org calculator link, and opening it selects every metric and shows the score. Version 4.0 scores come from a lookup table, so a number worked out by hand is a guess.

    Slide text
    github.com/trailofbits/skills cvss-scoring 1.2.0
    CVSS:4.0 /AV:N /AC:L /AT:N /PR:N /UI:N /VC:H /VI:H /VA:N /SC:N /SI:N /SA:N
    https://www.first.org/cvss/calculator/4.0 #
    CVSS:4.0 /AV:N /AC:L /AT:N /PR:N /UI:N /VC:H /VI:H /VA:N /SC:N /SI:N /SA:N

    v4.0 scores come from a lookup table. A score worked out by hand is a guess.

    cvss-scoring/SKILL.md · Calculator · plugins/cvss-scoring/README.md
  4. It lists the facts first. If attack vector, complexity, requirements, privileges or user interaction can't be settled from your description, it stops and asks you. Those five drive most of the score.

    Slide text
    github.com/trailofbits/skills cvss-scoring 1.2.0
    AV attack vector
    AC attack complexity
    AT attack requirements
    PR privileges required
    UI user interaction

    These five drive most of the score.

    cvss-scoring/SKILL.md · Input Handling
  5. It rejects a common habit from version 3.1: marking attack complexity high because there are prerequisites. A race condition or a specific configuration now goes in attack requirements. High complexity is kept for getting past defenses like ASLR.

    Slide text
    github.com/trailofbits/skills cvss-scoring 1.2.0
    v3.1 habit
    AC:H
    “there are prerequisites”
    v4.0
    AT:P
    race, config, on-path position

    AC:H is kept for evading ASLR, DEP or target-specific secrets.

    cvss-scoring/SKILL.md · Rationalizations to Reject
  6. Before it answers, it compares its vector with the closest of 27 real, scored vulnerabilities, from Log4Shell and Heartbleed to regreSSHion. Where it differs much, it explains why or changes the metric.

    Slide text
    github.com/trailofbits/skills cvss-scoring 1.2.0
    Log4Shell CVE-2021-44228 · 9.3
    Heartbleed CVE-2014-0160 · 8.7
    regreSSHion CVE-2024-6387 · 8.2

    A vector that diverges gets a reason or a corrected metric.

    references/examples.md · SKILL.md, Part 3: Calibration Check
  7. A code-quality issue or a design concern gets a refusal, with no metrics made up to fill the table. A write-up in version 3.1 terms, like Scope, is flagged, and the mapping is listed.

    Slide text
    github.com/trailofbits/skills cvss-scoring 1.2.0
    This description does not appear to describe an exploitable vulnerability.

    Input in CVSS v3.1 terms, such as Scope or UI:R, is flagged before it is translated.

    cvss-scoring/SKILL.md · Input Validation
  8. In review, Evan Downing, who first wrote the skill, asked for four corrections. An API key the attacker can sign up for now counts as no privileges required. A deliberate action, like importing a file a certain way, counts as active interaction.

    Slide text
    github.com/trailofbits/skills review, Nov 6, 2026
    self-service key
    PR:N
    provisioned as part of the attack
    granted key
    PR:L
    needs privileges the attacker can't grant

    Importing a file a specific way now counts as UI:A, with no protection bypass needed.

    PR #507 review · references/metrics.md
  9. It's plugin version 1.2.0 for Claude Code and Codex. Its one eval is a single run on a SQL injection, so its accuracy is untested. I'd use it for the reasons table and still check the vector. Install steps are in the plugin's readme.

    Slide text
    github.com/trailofbits/skills cvss-scoring 1.2.0
    Claude Code trailofbits marketplace
    Codex same marketplace
    Calcifier optional recipe

    One eval case, one run: a smoke check on a SQL injection.

    plugins/cvss-scoring/README.md · evals/vector-and-calculator-link/case.yaml

What happened in AI today, in your inbox

One short email each evening. Read it and you’re caught up.

Built with ❤️ in New York