Severity and taxonomy
Severity, CVSS, CVE, CWE, ATT&CK, WSTG and test categories, and which of them are authored or derived.
A finding carries several classifications. Some the agent writes, some the application derives, and one exists only in the exports. This page takes them one at a time.
| Classification | Source | Checked by the application |
|---|---|---|
| Severity | Agent | Must be one of five values |
| CVSS score and vector | Agent, optional | No |
| CVE ids | Agent, optional | No |
| CWE ids | Derived from keywords at export time | — |
| ATT&CK technique ids | Agent | Against the shipped ATT&CK manifest |
| ATT&CK tactic ids | Derived from the technique ids | — |
| WSTG ids | Agent, optional | No |
| NIST test category | Agent | Must be one of four values |
Severity¶
Five values, from most to least severe: critical, high, medium, low,
info. The agent sets severity when it adds a finding and can change it later
in the run with update_finding. The PDF, the CSV and the SARIF result's
properties keep all five. SARIF's own level field has three values, and
SARIF and CSV exports describes how the five map onto
them.
CVSS¶
cvss_score is a number and cvss_vector is a string. Both are optional, both
are written by the agent, and update_finding can change either. The
application does not compute a score, does not parse the vector, and does not
check the score's range or its agreement with the vector or the severity. A
score of 42 with a vector that is not CVSS syntax is stored as given, and the
PDF and the exports print it as given. The console shows the score to one
decimal place.
The agent's prompts ask for a score and a vector on every finding of severity
medium and above. That is an instruction to the model; no code enforces it.
The console's finding list and the PDF show the score, and the PDF adds the vector in brackets. The CSV has the score only. SARIF carries both.
CVE¶
cves is a list of strings written by the agent. The application does not
check their format or look them up. They appear in the console, in the PDF under
the finding and in its crosswalk, in the CSV cve column and in SARIF.
CWE¶
Findings have no CWE field. The CWE ids in the exports are derived when the export is built, from the same keyword categories the framework mapping falls back on. The application lowercases a finding's title, description and the content of its evidence items, and tests that text against sixteen categories, each a short list of substrings and regular expressions. Fourteen categories carry a CWE id:
| Category | CWE |
|---|---|
sql_injection |
CWE-89 |
xss |
CWE-79 |
command_injection |
CWE-78 |
code_injection |
CWE-94 |
open_port |
CWE-1327 |
default_credentials |
CWE-1392 |
weak_credentials |
CWE-521 |
privilege_escalation |
CWE-269 |
outdated_software |
CWE-1104 |
ssl_tls_issue |
CWE-326 |
data_exposure |
CWE-200 |
misconfiguration |
CWE-16 |
authentication_bypass |
CWE-287 |
information_disclosure |
CWE-200 |
The other two, cve and malware, have none. A finding whose text matches
only those two, or matches no category, exports an empty CWE cell. A finding
that matches several categories exports their CWE ids in the table's order,
without repeats.
The derivation reads the words in the finding, not its ATT&CK or WSTG ids, and a matching word anywhere in the evidence output is enough. Treat an exported CWE id as a hint.
The PDF does not print CWE ids.
ATT&CK techniques and tactics¶
The agent is asked for MITRE ATT&CK technique ids on every finding. When it
supplies them, add_finding checks every id against the manifest shipped with
the application. One unknown id blocks the call: the finding is not recorded,
and the agent is told which ids were unknown. An empty list
passes the check. Technique ids can be set only when the finding is added;
update_finding does not take them.
Tactic ids are not written by the agent. The application looks up the tactics of every accepted technique in the same manifest and stores the sorted set.
The PDF prints technique ids under the finding, in the crosswalk and in the attack chain, and counts both techniques and tactics in the ATT&CK heatmap. The CSV has technique ids. SARIF has both.
WSTG¶
wstg_ids is an optional list of OWASP Web Security Testing Guide ids written
by the agent in add_finding. The application does not check them against any
list. A finding for which the agent sent no list stores nothing, and one for
which it sent an empty list stores an empty list; every report output treats the
two the same way, as no ids.
Control ids¶
Technique ids and WSTG ids are what connect a finding to the controls of the engagement's framework. Frameworks describes the tables and the keyword fallback.
NIST test category¶
Every finding carries one of four NIST SP 800-115 test categories, written by
the agent: network_scanning, vuln_scanning, password_cracking,
pen_testing.
The PDF's Test Results section has one subsection per category. The report model names its four fields differently from the enum values, and the report generator connects them by filling each field from one category:
| Enum value | Report field | PDF heading |
|---|---|---|
network_scanning |
network_scanning |
Network Scanning |
vuln_scanning |
vulnerability_scanning |
Vulnerability Scanning |
password_cracking |
password_cracking |
Password Cracking |
pen_testing |
penetration_testing |
Penetration Testing |
A subsection holds a fixed objective sentence for its category, the findings in that category by short id, and their counts by severity. When the run's tools list is not empty, it also prints Methods Used, which is that whole list — the first word of every command in the findings' evidence — repeated unchanged in all four subsections. It does not say which tools served which category.
Last updated 2026-09-22