class CvssSuite::Cvss31Temporal

This class represents a CVSS Temporal metric in version 3.1.

Attributes

exploit_code_maturity[R]

Property of this metric

remediation_level[R]

Property of this metric

report_confidence[R]

Property of this metric

Public Instance Methods

score() click to toggle source

Returns score of this metric

# File lib/cvss_suite/cvss31/cvss31_temporal.rb, line 24
def score
  return 1.0 unless valid?

  @exploit_code_maturity.score * @remediation_level.score * @report_confidence.score
end

Private Instance Methods

init_properties() click to toggle source
# File lib/cvss_suite/cvss31/cvss31_temporal.rb, line 32
def init_properties
  @properties.push(@exploit_code_maturity =
                     CvssProperty.new(name: 'Exploit Code Maturity', abbreviation: 'E', position: [8],
                                      values: [{ name: 'Not Defined', abbreviation: 'X', weight: 1.0 },
                                               { name: 'Unproven', abbreviation: 'U', weight: 0.91 },
                                               { name: 'Proof-of-Concept', abbreviation: 'P', weight: 0.94 },
                                               { name: 'Functional', abbreviation: 'F', weight: 0.97 },
                                               { name: 'High', abbreviation: 'H', weight: 1.0 }]))
  @properties.push(@remediation_level =
                     CvssProperty.new(name: 'Remediation Level', abbreviation: 'RL', position: [9],
                                      values: [{ name: 'Not Defined', abbreviation: 'X', weight: 1.0 },
                                               { name: 'Official Fix', abbreviation: 'O', weight: 0.95 },
                                               { name: 'Temporary Fix', abbreviation: 'T', weight: 0.96 },
                                               { name: 'Workaround', abbreviation: 'W', weight: 0.97 },
                                               { name: 'Unavailable', abbreviation: 'U', weight: 1.0 }]))

  @properties.push(@report_confidence =
                     CvssProperty.new(name: 'Report Confidence', abbreviation: 'RC', position: [10],
                                      values: [{ name: 'Not Defined', abbreviation: 'X', weight: 1.0 },
                                               { name: 'Unknown', abbreviation: 'U', weight: 0.92 },
                                               { name: 'Reasonable', abbreviation: 'R', weight: 0.96 },
                                               { name: 'Confirmed', abbreviation: 'C', weight: 1.0 }]))
end