findings.json-Schema
findings.json ist die maschinenlesbare Fassung des Berichts. Sie enthält
dieselben Befunde wie das PDF, nur ohne Umbruch und Satz.
Aufbau
Grundgerüst
{
"scan": { "id": "…", "domain": "…", "tier": "active", "context": "shop" },
"counts": { "critical": 1, "high": 2, "medium": 4, "low": 3, "info": 5 },
"findings": [ … ],
"positives": [ … ],
"scope_notes": [ … ]
}scope_notes nennt die Lücken im Prüfumfang: Werkzeuge, die ausgefallen sind,
und Prüfungen, die der Scope-Guard unterdrückt hat. Ein Bericht verschweigt
nicht, was er nicht geprüft hat.
Felder eines Befunds
FeldTypBeschreibung
id
uuidPflicht
—
catalog_id
stringPflicht
Stabile Katalogkennung. Der Vergleich zweier Läufe läuft über sie.
report_id
stringPflicht
—
title
stringPflicht
—
severity
enumPflicht
Schweregrad. Etiketten Kritisch · Hoch · Mittel · Niedrig · Hinweis.
category
stringPflicht
—
confidence
enumPflicht
Konfidenz eines Befunds. Bei CVE-Zeilen gilt zusätzlich die zweistufige Sprache „bestätigt“ (confirmed) und „möglich“ (candidate) — siehe `CveRow.confidence`.
status
enumPflicht
—
effort
string
—
effort_level
string
—
owner
string
—
cvss_score
number | null
—
cvss_vector
string | null
—
cwe
string | null
—
description
string
—
impact
string
—
remediation
string
—
remediation_short
string
—
remediation_code
string
—
caveat
string
—
legal_basis
string
Nur bei Datenschutz-Befunden (DSGVO, TDDDG).
references
string[]
—
evidence
object[]
—
cve_rows
object[]
Nur bei `COMPONENT-CVE` gefüllt.
has_confirmed_cve
boolean
—
resolution_note
string
—
resolved_at
string | null
—
Die Evidenz jedes Befunds ist eigens gehasht:
FeldTypBeschreibung
label
stringPflicht
—
content
stringPflicht
—
command
string | null
—
sha256
stringPflicht
—
Aufzählungswerte
| Feld | Werte |
|---|---|
severity | critical · high · medium · low · info |
confidence | confirmed · likely · candidate |
status | open · fixed · accepted · not_applicable |
Die Etiketten im deutschen Bericht lauten Kritisch · Hoch · Mittel · Niedrig · Hinweis. Werten Sie den englischen Schlüssel aus, nicht das Etikett.
Beispiel
Ein Eintrag aus findings
{
"report_id": "F-02",
"catalog_id": "HEADER-HSTS-MISSING",
"title": "",
"severity": "critical",
"category": "",
"confidence": "confirmed",
"status": "open",
"effort_level": "gering",
"owner": "Hosting"
}