pub struct VulnFinding {
pub advisory_id: String,
pub aliases: Vec<String>,
pub ecosystem: Ecosystem,
pub title: String,
pub severity: Severity,
pub cvss_score: Option<f32>,
pub url: Option<String>,
pub occurrences: Vec<Occurrence>,
pub affected_functions: Vec<String>,
pub reachable: Option<bool>,
pub reachability: Option<Reachability>,
pub exploit: Exploitability,
}Expand description
A vulnerability (a real CVE-class advisory), correlated across the fleet.
Fields§
§advisory_id: StringCanonical RUSTSEC-YYYY-NNNN — the group key.
aliases: Vec<String>CVE/GHSA ids — metadata for cross-reference, never the key.
ecosystem: EcosystemWhich ecosystem this finding came from. Additive — omitted from JSON for the
common Cargo case, so schema_version: 1 output is unaffected; the
fleetreach-go feeder sets Ecosystem::Go so a mixed fleet groups crates
and Go modules separately.
title: String§severity: Severity§cvss_score: Option<f32>CVSS base score (0.0–10.0) behind severity, when one is known — from the
advisory’s own CVSS, or backfilled from NVD by --enrich. Additive;
omitted from JSON when absent (advisories with no CVSS at all).
url: Option<String>§occurrences: Vec<Occurrence>At least one; the same advisory may surface in many repos/versions.
affected_functions: Vec<String>Canonical paths to the specific functions/types the advisory marks
vulnerable at the installed version (time::Time::from_hms_nano, …),
when the advisory scopes itself that way — so you can check whether you
call any of them. Empty when the advisory affects the whole crate.
Additive; omitted from JSON when empty.
reachable: Option<bool>A heuristic (--reachability): does an affected function name appear in
the affected repos’ own source? Some(true) = yes, Some(false) = not
found in your source (it could still be reached through a dependency —
this only scans your code), None = not checked or the advisory names no
functions. Never proves absence; never auto-suppresses by default.
reachability: Option<Reachability>Static reachability (--reachability=static): a sound call-graph verdict
over the compiled crate closure, with a witness chain when reachable. Far
stronger than reachable (the grep heuristic) — a NotReachable here is
trusted enough to suppress. Additive; absent unless the static engine ran.
exploit: ExploitabilityExploit-risk enrichment; default (empty) until --enrich runs.
Trait Implementations§
Source§impl Clone for VulnFinding
impl Clone for VulnFinding
Source§fn clone(&self) -> VulnFinding
fn clone(&self) -> VulnFinding
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 VulnFinding
impl Debug for VulnFinding
Source§impl<'de> Deserialize<'de> for VulnFinding
impl<'de> Deserialize<'de> for VulnFinding
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl PartialEq for VulnFinding
impl PartialEq for VulnFinding
Source§fn eq(&self, other: &VulnFinding) -> bool
fn eq(&self, other: &VulnFinding) -> bool
self and other values to be equal, and is used by ==.Source§impl Serialize for VulnFinding
impl Serialize for VulnFinding
impl StructuralPartialEq for VulnFinding
Auto Trait Implementations§
impl Freeze for VulnFinding
impl RefUnwindSafe for VulnFinding
impl Send for VulnFinding
impl Sync for VulnFinding
impl Unpin for VulnFinding
impl UnsafeUnpin for VulnFinding
impl UnwindSafe for VulnFinding
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,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more