pub struct SecurityFinding {Show 17 fields
pub finding_id: String,
pub kind: SecurityFindingKind,
pub category: Option<String>,
pub cwe: Option<u32>,
pub path: PathBuf,
pub line: u32,
pub col: u32,
pub evidence: String,
pub source_backed: bool,
pub trace: Vec<TraceHop>,
pub actions: Vec<IssueAction>,
pub dead_code: Option<SecurityDeadCodeContext>,
pub reachability: Option<SecurityReachability>,
pub candidate: SecurityCandidate,
pub taint_flow: Option<SecurityTaintFlow>,
pub runtime: Option<SecurityRuntimeContext>,
pub attack_surface: Option<SecurityAttackSurfaceEntry>,
}Expand description
A local security CANDIDATE for downstream agent verification, NOT a verified
vulnerability. Emitted only by fallow security, never under bare fallow
or the audit gate. There is deliberately no confidence or
signal_strength field: fallow does not prove exploitability, so the trace
(its hops and length) is the only honest signal.
Fields§
§finding_id: StringStable per-finding correlation id, identical across runs for the same
rule + anchor path + line. An autonomous agent that triaged this
candidate on a prior run uses it to correlate the candidate after a
rebase. Equal to the SARIF partialFingerprints value for the same
finding (one shared helper computes both).
kind: SecurityFindingKindThe rule that produced this candidate.
category: Option<String>The catalogue category id (e.g. "dangerous-html"). None for
ClientServerLeak; Some for TaintedSink.
cwe: Option<u32>The CWE number declared by the matched catalogue entry. None for
ClientServerLeak; never fabricated beyond the catalogue’s value.
path: PathBufFile the finding is anchored on (the client boundary). Absolute
internally; JSON strips the project root via serde_path::serialize.
line: u321-based line number of the anchor.
col: u320-based byte column offset of the anchor.
evidence: StringAgent/human-readable evidence (e.g. the named env var the chain reaches).
source_backed: boolWhether the sink argument was associated with a known untrusted source by
the intra-module source-to-sink back-trace (issue #859): a local binding
referenced in the argument was sourced from a catalogue source path
(req.query, process.argv, message-event data, etc.). true ranks
the candidate higher and annotates the evidence; false does NOT
suppress the finding (the association is conservative, never a proof, and
fallow prefers false-negatives over false-positives). Always false for
ClientServerLeak. Skipped from JSON when false for output stability.
trace: Vec<TraceHop>Structural import-hop trace from the client boundary to the secret source. The hop count is the uncalibrated signal; fallow does not prove the path is exploitable.
actions: Vec<IssueAction>Machine-actionable next steps. Always emitted (possibly empty for
forward-compat). For security candidates this is a single file-level
suppress hint (auto_fixable: false); there is no auto-fix because
verification is the agent’s job, not fallow’s.
dead_code: Option<SecurityDeadCodeContext>Dead-code cross-link when the same sink candidate sits in code fallow also reports as removable. Agents should verify the dead-code finding and delete the code instead of hardening the sink when deletion is safe.
reachability: Option<SecurityReachability>Graph-derived reachability ranking signal (issues #860 and #885). None
until the post-detection ranking pass fills it; additive on the wire
(skipped when absent). Drives the order findings are emitted in:
runtime-reachable candidates sort first, followed by source-backed and
source-reachable candidates, then wider blast radius.
candidate: SecurityCandidateAgent-actionable candidate record: the untrusted input kind, the sink, and the boundary the flow crosses. fallow fills these three slots; the exploitability verdict is the agent’s job and is not a field here. Always present.
taint_flow: Option<SecurityTaintFlow>Source-to-sink taint-flow triple, present only when an untrusted source is import-reachable to this sink. Absent (skipped) otherwise.
runtime: Option<SecurityRuntimeContext>Production runtime coverage context for the function enclosing this
security sink. Present only when fallow security --runtime-coverage
runs and the candidate is a tainted-sink.
attack_surface: Option<SecurityAttackSurfaceEntry>Internal projection used by fallow security --surface. The CLI strips
this from per-finding JSON and promotes it to the top-level
attack_surface field only when requested.
Trait Implementations§
Source§impl Clone for SecurityFinding
impl Clone for SecurityFinding
Source§fn clone(&self) -> SecurityFinding
fn clone(&self) -> SecurityFinding
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for SecurityFinding
impl Debug for SecurityFinding
Auto Trait Implementations§
impl Freeze for SecurityFinding
impl RefUnwindSafe for SecurityFinding
impl Send for SecurityFinding
impl Sync for SecurityFinding
impl Unpin for SecurityFinding
impl UnsafeUnpin for SecurityFinding
impl UnwindSafe for SecurityFinding
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<D> OwoColorize for D
impl<D> OwoColorize for D
Source§fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
Source§fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
Source§fn black(&self) -> FgColorDisplay<'_, Black, Self>
fn black(&self) -> FgColorDisplay<'_, Black, Self>
Source§fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
Source§fn red(&self) -> FgColorDisplay<'_, Red, Self>
fn red(&self) -> FgColorDisplay<'_, Red, Self>
Source§fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
Source§fn green(&self) -> FgColorDisplay<'_, Green, Self>
fn green(&self) -> FgColorDisplay<'_, Green, Self>
Source§fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
Source§fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
Source§fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
Source§fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
Source§fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
Source§fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
Source§fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
Source§fn white(&self) -> FgColorDisplay<'_, White, Self>
fn white(&self) -> FgColorDisplay<'_, White, Self>
Source§fn on_white(&self) -> BgColorDisplay<'_, White, Self>
fn on_white(&self) -> BgColorDisplay<'_, White, Self>
Source§fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
Source§fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
Source§fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
Source§fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
Source§fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
Source§fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
Source§fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
Source§fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
Source§fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
Source§fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
Source§fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
Source§fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
Source§fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
Source§fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
Source§fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
Source§fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
Source§fn bold(&self) -> BoldDisplay<'_, Self>
fn bold(&self) -> BoldDisplay<'_, Self>
Source§fn dimmed(&self) -> DimDisplay<'_, Self>
fn dimmed(&self) -> DimDisplay<'_, Self>
Source§fn italic(&self) -> ItalicDisplay<'_, Self>
fn italic(&self) -> ItalicDisplay<'_, Self>
Source§fn underline(&self) -> UnderlineDisplay<'_, Self>
fn underline(&self) -> UnderlineDisplay<'_, Self>
Source§fn blink(&self) -> BlinkDisplay<'_, Self>
fn blink(&self) -> BlinkDisplay<'_, Self>
Source§fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
Source§fn reversed(&self) -> ReversedDisplay<'_, Self>
fn reversed(&self) -> ReversedDisplay<'_, Self>
Source§fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
Source§fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::fg or
a color-specific method, such as OwoColorize::green, Read moreSource§fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::bg or
a color-specific method, such as OwoColorize::on_yellow, Read more