secfinding — Shared security finding model
Why
Security tooling only scales when every scanner outputs the same structured finding schema. secfinding is that schema for the Santh ecosystem: severity, type, evidence, location, and metadata in one canonical shape.
This crate removes duplicated model code and lets reporting, aggregation, and downstream integrations work with one contract regardless of whether findings came from web scans, code scanners, or payload engines.
Quick Start
use ;
Features
- Canonical
Findingstruct for cross-tool exchange. - Severity and finding classification via
SeverityandFindingKind. - Rich, typed evidence in
Evidence(HTTP, DNS, snippets, certificates, patterns). - Fluent
FindingBuilderplusFinding::newconvenience constructor. - Default
Reportableimplementation for rendering pipelines.
TOML Configuration
Use [FindingFilter::from_toml] to configure severity/scanner/tag filtering.
= "high"
= ["nmap"]
= ["sqli", "rce"]
use ;
let cfg = from_toml.unwrap;
let filtered: = filter;
API Overview
Finding,FindingBuilder: main payload and fluent constructor API.FindingKind: vulnerability/misconfig/exposure/secret/etc.Severity: Info → Critical.Evidence: structured proof payloads.Reportable: trait consumed bysecreportand compatible reporting crates.
Examples
1) Build a vulnerability finding with typed evidence
use ;
let finding = builder
.title
.detail
.kind
.evidence
.tag
.cve
.build;
2) Classify findings by type
use FindingKind;
let kind = Misconfiguration;
println!;
3) Render a multi-tool finding list with secfinding types
use ;
let mut findings = vec!;
findings.kind = Misconfiguration;
println!;
Traits
secfinding defines Reportable to decouple finding models from rendering implementations.
use ;
Related Crates
License
MIT, Corum Collective LLC
Docs: https://docs.rs/secfinding
Santh ecosystem: https://santh.io