Skip to content

Catalog YAML format

Catalogues are versioned data files under catalogs/, embedded in the binary. There are three kinds: technique catalogues, methodology catalogues, and crosswalks. Each declares its own provenance and licence so a report can cite which version of each external standard its codes come from. The files in the repository are the authoritative examples; this page describes their shape.

Technique catalogue

A technique catalogue declares a schema, a family, a version, a locale, a name, and a source block with the licence, attribution and last-updated date. Then a list of techniques. Each technique carries an id, a title, what it applies_to, an objective, requirements, a procedure, the expected evidence, a statement of secure behaviour, safety notes, remediation, references, and its mappings.

schema: peart.techniques/v1
family: peart-techniques
version: "1.0"
locale: en
source:
  license: CC-BY-SA-4.0
  attribution: >-
    Original technique content authored for PEART. Mapping codes reference
    OWASP WSTG 4.2, OWASP ASVS 5.0.0 (CC-BY-SA-4.0) and MITRE CWE 4.20.
techniques:
  - id: TECH-INPV-001
    title: SQL Injection Testing
    applies_to: [web, rest_api]
    objective: ...
    mappings:
      - { framework: ASVS, id: "V5.3.4", version: "5.0.0" }
      - { framework: WSTG, id: "WSTG-INPV-05" }
      - { framework: CWE,  id: "CWE-89", title: "SQL Injection" }

The mappings are the hinge: they are what a finding inherits from its linked techniques, and what the compliance crosswalk turns into related controls.

Methodology catalogue

A methodology catalogue declares ordered steps, each linking techniques in position order. It is the plan an engagement adopts, and what the cockpit renders in execution order.

Crosswalk

A crosswalk maps one framework's identifiers to another's. The CWE-to-NIST crosswalk keys on CWE and declares its own versions:

version: "1.0"
nist_revision: "5"
cwe_version: "4.20"
mappings:
  - { cwe: "CWE-89", controls: ["SI-10(6)"], relation: mitigates,
      confidence: high, justification: "SQL injection" }

relation is mitigates or supports; confidence is high or conditional, and a conditional link carries the condition under which it holds. A weakness with no clean control is simply absent (honest coverage), and the deliberately blank ones are recorded in a comment for auditability.