08 — Unified Security Schema

Status: Ratified Version: 1.0.0 Applies to: All entities stored in TIDB, Knowledge Graph, API models, report models, adapter events


1. Purpose & Governance

The Unified Security Schema (USS) is the single canonical data model of HunterX. Every tool output, AI decision, API request/response, and report is mapped to USS entities. Schema changes are governed by the Schema Change Process in 24 - Quality Assurance.md (major/minor/patch with backward-compatible defaults; breaking changes require a major schema bump and a migration path).

Conventions:


2. Core Entity Relationship Overview

Engagement ──< Mission ──< WorkflowRun ──< TaskRun
                 │
                 ├──< Target ──< Asset
                 │                ├── Domain ──< Subdomain
                 │                ├── Host ──< IP ──< Port ──< Service ──< Technology
                 │                ├── URL ──< Endpoint ──< Parameter
                 │                ├── Directory
                 │                └── API
                 ├──< Finding ──< Evidence ──< Screenshot / Payload
                 ├──< RiskRating
                 └──< Report ──< Timeline
Knowledge (global): CVE, CWE, CAPEC, MITRE, EPSS

3. Entity Definitions

3.1 Engagement

Field Type Notes
id ULID  
name str  
client str optional
scope_policy_id ref ScopePolicy  
starts_at / ends_at datetime testing window
legality { authorized, statement_of_work }  
created_by, created_at Actor, datetime audit
status enum active|completed|archived

3.2 Mission

Field Type Notes
id ULID  
profile_id ref MissionProfile from 12 - Mission Profiles.md
engagement_id ref Engagement  
targets ref[Target]  
plan_id ref Plan deterministic plan
status enum draft|planned|approved|running|validated|correlated|completed|failed|aborted|archived
risk_model ref RiskModel  
params map profile-specific
ai_seed str reproducibility
timeline ref[TimelineEntry]  

3.3 Target

Field Type Notes
id ULID  
kind enum domain|ip|cidr|url|hostname|api|cloud-account|container|cluster|mobile-app|ad-domain
value str canonical (FQDN lowercase, CIDR canonical, URL normalized)
scope enum in-scope|out-of-scope|pending-review
engagement_id ref  
attributes map e.g., {asn, org, country}

3.4 Asset (abstract; specialized below)

Shared: id, target_id, discovered_at, source_tool, evidence_refs, confidence (0..1), meta.

Domain

name (FQDN), parent, is_authoritative, registrar, dns_servers, mx, txt, dnsssec_enabled.

Subdomain

name, parent_domain, resolution_confidence.

Host

address (IP or name), os_hint, is_alive, last_seen.

IP

address (canonical IPv4/IPv6), cidr, asn, owner_org, geo, ports:[Port].

Port

number, protocol (tcp|udp), state (open|closed|filtered), banner, service_hint.

Service

name, port_ref, protocol, version, state, banner, tls_info, technologies:[Technology].

Technology

name, category (web-server, framework, cms, waf, language, …), version, cpe, confidence, detected_by.

URL

url (normalized), scheme, host, path, query, is_internal, status_code (last observed), content_type, discovered_by.

Endpoint

url, method, parameters:[Parameter], auth_required, content_type, response_meta, discovered_by.

Parameter

name, location (query|body|path|cookie|header), value (masked), type (string|int|file|json|xml|…), is_interesting (session, id, file, upload).

Directory

path, parent, status_code, title, is_auth_required, discovered_by.

API

name, base_url, version, auth_scheme, endpoints:[Endpoint], spec_source (swagger/openapi), discovered_by.

3.5 Finding

Field Type Notes
id ULID  
hash str(sha256) canonical dedup key
title str short, action-oriented
description str technical detail
severity enum info|low|medium|high|critical
confidence float 0..1  
status enum new|confirmed|refuted|inconclusive|triaged|accepted|reported
category enum see taxonomy below
affected_assets ref[Asset]  
vuln_refs ref[CVE] enriched
cwe_ids ref[CWE]  
capec_ids ref[CAPEC]  
mitre ref[MITRE] techniques
epss ref[EPSS] score + percentile
evidence ref[Evidence]  
risk ref[RiskRating] computed
discovery { tool, phase, date, workflow_run_id } provenance
reproduce { steps, payload_refs, conditions }  
recommendation str mitigation guidance
remediation { owner, due_date, status } optional
ai_notes ref[AIProvenance] drafting trace

Finding taxonomy (categories): injection (SQLi, XSS, SSTI, command, LDAP, XXE), auth, session, access-control, ssrf, csrf, file-upload, file-inclusion, misconfiguration, information-disclosure, weak-crypto, tls, headers, network, service, cloud, container, kubernetes, mobile, active-directory, crypto, supply-chain, dos, logic, other.

3.6 Evidence

Field Type Notes
id ULID  
type enum raw-response|screenshot|log|payload|har|trace|artifact|verification
data_ref ref ObjectStore object key + size + sha256
mime_type str  
captured_at datetime  
captured_by str tool/step
context map {request, response headers, status, matched text}
redacted bool PII masking applied

3.7 Screenshot

evidence_id, url, viewport, full_page, timestamp, dimensions, ocr_text (optional), file_ref.

3.8 Payload

Field Type Notes
id ULID  
value str the payload string (maskable)
type enum sqli|xss|ssti|command|ssrf|file|lfi|xxe|upload|auth|fuzz
encoding enum raw|url|base64|hex|json
provenance { source (repo/commit/tag), checksum, hash } auditable
effective_against ref[Finding] linkage
mutations ref[Payload] derived variants
feedback { success, notes } learning loop

3.9 RiskRating

Field Type Notes
id ULID  
finding_id ref  
score float 0..10 composite
vector map {exploitability, impact, exposure, likelihood, detectability}
formula_version str which risk model version
overrides { reason, by } human overrides recorded
calculated_at datetime  

3.10 CVE

Mirrored reference entity: id (CVE id), description, cvss_v2/cvss_v3/cvss_v4, cwes, references, published, last_modified, vendor/product (CPE), known_exploited (bool), poc_available (bool).

3.11 CWE

id (CWE id), name, description, mitigations, related_cwes, taxonomy (OWASP etc.).

3.12 CAPEC

id, name, description, prerequisites, steps, related_weaknesses, severity_hint.

3.13 MITRE

technique_id (ATT&CK), name, tactics, subtechniques, detection, mitigations, platforms.

3.14 EPSS

cve_id, score (0..1), percentile, date, source.

3.15 Report

id, mission_id, type (technical|executive|evidence|compliance|timeline), format (json|markdown|html|pdf|sarif), template_version, artifacts:[path], content_hash, generated_at, status, viewable_by.

3.16 Timeline / TimelineEntry

id, mission_id, at, actor, type (phase|event|finding|approval|tool-run|ai-decision), summary, refs, meta.

3.17 ScopePolicy

id, rules:[ {kind, value, action(allow|deny), note} ], destructive_allowed, approval_required_for:[action], windows:[{start,end,timezone}].

3.18 AIProvenance

id, ai_task_id, prompt_hash, model, provider, seed, temperature, schema_version, latency_ms, tokens, consensus, confidence, decision, grounding_refs.


4. Canonical Event Types (produced by adapters/normalizer)

Event Payload (canonical)
domain.discovered Domain
subdomain.discovered Subdomain
host.alive Host + IP
port.open IP + Port
service.discovered Service
technology.discovered Technology
url.discovered URL
endpoint.discovered Endpoint
parameter.discovered Parameter
directory.discovered Directory
api.discovered API
finding.created Finding (draft)
finding.updated Finding delta
evidence.captured Evidence
payload.used Payload
verification.completed ValidationVerdict

5. Severity Model

Severity Score range Conditions
critical 9.0–10.0 Remote, unauthenticated, systemic impact
high 7.0–8.9 Remote or high-impact; auth or chained
medium 4.0–6.9 Local or requires conditions
low 0.1–3.9 Limited impact
info 0.0 Informational only

Severity is a starting point; the final risk uses the mission risk model (12 - Mission Profiles.md §Risk).


6. Confidence Model

Value Meaning
0.0–0.3 Unverified / speculative
0.4–0.6 Single-source, plausibly real
0.7–0.8 Multi-source or reproducible
0.9–1.0 Exploit confirmed / PoC verified

7. Deduplication Contract


8. Serialization & Compatibility


9. References