pub struct V3Vector {Show 23 fields
pub minor_version: MinorVersion,
pub attack_vector: AttackVector,
pub attack_complexity: AttackComplexity,
pub privileges_required: PrivilegesRequired,
pub user_interaction: UserInteraction,
pub scope: Scope,
pub confidentiality: Confidentiality,
pub integrity: Integrity,
pub availability: Availability,
pub exploit_code_maturity: ExploitCodeMaturity,
pub remediation_level: RemediationLevel,
pub report_confidence: ReportConfidence,
pub confidentiality_requirement: ConfidentialityRequirement,
pub integrity_requirement: IntegrityRequirement,
pub availability_requirement: AvailabilityRequirement,
pub modified_attack_vector: ModifiedAttackVector,
pub modified_attack_complexity: ModifiedAttackComplexity,
pub modified_privileges_required: ModifiedPrivilegesRequired,
pub modified_user_interaction: ModifiedUserInteraction,
pub modified_scope: ModifiedScope,
pub modified_confidentiality: ModifiedConfidentiality,
pub modified_integrity: ModifiedIntegrity,
pub modified_availability: ModifiedAvailability,
}
Expand description
CVSS vector version 3.0/3.1
use cvssrust::v3::V3Vector;
use cvssrust::CVSSScore;
use std::str::FromStr;
let cvss_str = "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N/E:P/RL:W/RC:C";
let cvss = V3Vector::from_str(cvss_str).unwrap();
assert_eq!(cvss.to_string(), String::from(cvss_str));
assert_eq!(cvss.base_score().value(), 6.1);
assert_eq!(cvss.base_score().severity().to_string(), "Medium");
assert_eq!(cvss.temporal_score().value(), 5.6);
Fields§
§minor_version: MinorVersion
§attack_vector: AttackVector
§attack_complexity: AttackComplexity
§privileges_required: PrivilegesRequired
§user_interaction: UserInteraction
§scope: Scope
§confidentiality: Confidentiality
§integrity: Integrity
§availability: Availability
§exploit_code_maturity: ExploitCodeMaturity
§remediation_level: RemediationLevel
§report_confidence: ReportConfidence
§confidentiality_requirement: ConfidentialityRequirement
§integrity_requirement: IntegrityRequirement
§availability_requirement: AvailabilityRequirement
§modified_attack_vector: ModifiedAttackVector
§modified_attack_complexity: ModifiedAttackComplexity
§modified_privileges_required: ModifiedPrivilegesRequired
§modified_user_interaction: ModifiedUserInteraction
§modified_scope: ModifiedScope
§modified_confidentiality: ModifiedConfidentiality
§modified_integrity: ModifiedIntegrity
§modified_availability: ModifiedAvailability
Implementations§
Source§impl V3Vector
impl V3Vector
Sourcepub fn modified_impact_subscore(&self) -> Score
pub fn modified_impact_subscore(&self) -> Score
Calculate Modified Impact SubScore
Sourcepub fn modified_impact_score(&self) -> Score
pub fn modified_impact_score(&self) -> Score
Calculate Modified Impact Score
Examples found in repository?
examples/calc.rs (line 24)
4fn main() {
5 let vector = env::args().skip(1).next().expect("Provide CVSS vector");
6
7 match CVSS::parse(vector.as_str()) {
8 Ok(CVSS::V3(cvss)) => {
9 println!("CVSS v3 vector: {}", cvss.to_string());
10 println!("CVSS Base score: {}", cvss.base_score().value());
11 println!("CVSS Base severity: {}", cvss.base_score().severity());
12 println!("Impact Subscore: {}", cvss.impact_score().value());
13 println!(
14 "Exploitability Subscore: {}",
15 cvss.expoitability_score().value()
16 );
17 println!("CVSS Temporal score: {}", cvss.temporal_score().value());
18 println!(
19 "CVSS Environmental score: {}",
20 cvss.environmental_score().value()
21 );
22 println!(
23 "Modified Impact Subscore: {}",
24 cvss.modified_impact_score().value()
25 );
26 println!(
27 "Modified Exploitability Subscore: {}",
28 cvss.modified_exploitability_score().value()
29 );
30 }
31 Ok(CVSS::V2(cvss)) => {
32 println!("CVSS v2 vector: {}", cvss.to_string());
33 println!("CVSS Base score: {}", cvss.base_score().value());
34 println!("CVSS Base severity: {}", cvss.base_score().severity());
35 println!("Impact Subscore: {}", cvss.impact_score().value());
36 println!(
37 "Exploitability Subscore: {}",
38 cvss.expoitability_score().value()
39 );
40 println!("CVSS Temporal score: {}", cvss.temporal_score().value());
41 println!(
42 "CVSS Environmental score: {}",
43 cvss.environmental_score().value()
44 );
45 }
46 _ => println!("Could not parse the CVSS vector"),
47 }
48}
Sourcepub fn modified_exploitability_score(&self) -> Score
pub fn modified_exploitability_score(&self) -> Score
Calculate Modified Exploitability Score
Examples found in repository?
examples/calc.rs (line 28)
4fn main() {
5 let vector = env::args().skip(1).next().expect("Provide CVSS vector");
6
7 match CVSS::parse(vector.as_str()) {
8 Ok(CVSS::V3(cvss)) => {
9 println!("CVSS v3 vector: {}", cvss.to_string());
10 println!("CVSS Base score: {}", cvss.base_score().value());
11 println!("CVSS Base severity: {}", cvss.base_score().severity());
12 println!("Impact Subscore: {}", cvss.impact_score().value());
13 println!(
14 "Exploitability Subscore: {}",
15 cvss.expoitability_score().value()
16 );
17 println!("CVSS Temporal score: {}", cvss.temporal_score().value());
18 println!(
19 "CVSS Environmental score: {}",
20 cvss.environmental_score().value()
21 );
22 println!(
23 "Modified Impact Subscore: {}",
24 cvss.modified_impact_score().value()
25 );
26 println!(
27 "Modified Exploitability Subscore: {}",
28 cvss.modified_exploitability_score().value()
29 );
30 }
31 Ok(CVSS::V2(cvss)) => {
32 println!("CVSS v2 vector: {}", cvss.to_string());
33 println!("CVSS Base score: {}", cvss.base_score().value());
34 println!("CVSS Base severity: {}", cvss.base_score().severity());
35 println!("Impact Subscore: {}", cvss.impact_score().value());
36 println!(
37 "Exploitability Subscore: {}",
38 cvss.expoitability_score().value()
39 );
40 println!("CVSS Temporal score: {}", cvss.temporal_score().value());
41 println!(
42 "CVSS Environmental score: {}",
43 cvss.environmental_score().value()
44 );
45 }
46 _ => println!("Could not parse the CVSS vector"),
47 }
48}
Source§impl V3Vector
impl V3Vector
Sourcepub fn new(
attack_vector: AttackVector,
attack_complexity: AttackComplexity,
privileges_required: PrivilegesRequired,
user_interaction: UserInteraction,
scope: Scope,
confidentiality: Confidentiality,
integrity: Integrity,
availability: Availability,
) -> Self
pub fn new( attack_vector: AttackVector, attack_complexity: AttackComplexity, privileges_required: PrivilegesRequired, user_interaction: UserInteraction, scope: Scope, confidentiality: Confidentiality, integrity: Integrity, availability: Availability, ) -> Self
Constructor
Sourcepub fn extend_with_temporal(
&mut self,
temporal_str: &str,
) -> Result<(), ParseError>
pub fn extend_with_temporal( &mut self, temporal_str: &str, ) -> Result<(), ParseError>
Parse the temporal fields in temporal_str
, adding them to the V3Vector
.
use cvssrust::v3::V3Vector;
use cvssrust::v3::temporal::{ExploitCodeMaturity, RemediationLevel, ReportConfidence};
use std::str::FromStr;
let cvss_base = "CVSS:3.0/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N";
let cvss_temporal = "E:P/RL:W/RC:C";
let mut cvss = V3Vector::from_str(cvss_base).unwrap();
assert_eq!(cvss.exploit_code_maturity, ExploitCodeMaturity::NotDefined);
assert_eq!(cvss.remediation_level, RemediationLevel::NotDefined);
assert_eq!(cvss.report_confidence, ReportConfidence::NotDefined);
cvss.extend_with_temporal(cvss_temporal).unwrap();
assert_eq!(cvss.exploit_code_maturity, ExploitCodeMaturity::ProofOfConcept);
assert_eq!(cvss.remediation_level, RemediationLevel::Workaround);
assert_eq!(cvss.report_confidence, ReportConfidence::Confirmed);
Trait Implementations§
Source§impl CVSSScore for V3Vector
impl CVSSScore for V3Vector
Source§fn temporal_score(&self) -> Score
fn temporal_score(&self) -> Score
TemporalScore = Roundup ( BaseScore × ExploitCodeMaturity × RemediationLevel × ReportConfidence)
Source§fn impact_score(&self) -> Score
fn impact_score(&self) -> Score
Calculate Impact Sub Score
Source§fn expoitability_score(&self) -> Score
fn expoitability_score(&self) -> Score
Calculate Exploitability Score
Source§fn base_score(&self) -> Score
fn base_score(&self) -> Score
Calculate CVSS Base Score
Source§fn environmental_score(&self) -> Score
fn environmental_score(&self) -> Score
Calculate CVSS Environmental Score
Source§impl<'de> Deserialize<'de> for V3Vector
impl<'de> Deserialize<'de> for V3Vector
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>,
Deserialize this value from the given Serde deserializer. Read more
impl Copy for V3Vector
impl Eq for V3Vector
impl StructuralPartialEq for V3Vector
Auto Trait Implementations§
impl Freeze for V3Vector
impl RefUnwindSafe for V3Vector
impl Send for V3Vector
impl Sync for V3Vector
impl Unpin for V3Vector
impl UnwindSafe for V3Vector
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
Mutably borrows from an owned value. Read more