Class: CvssSuite::Cvss31Environmental

Inherits:
CvssMetric
  • Object
show all
Defined in:
lib/cvss_suite/cvss31/cvss31_environmental.rb

Overview

This class represents a CVSS Environmental metric in version 3.1.

Instance Attribute Summary collapse

Attributes inherited from CvssMetric

#properties

Instance Method Summary collapse

Methods inherited from CvssMetric

#count, #initialize, #valid?

Constructor Details

This class inherits a constructor from CvssSuite::CvssMetric

Instance Attribute Details

#availability_requirementObject (readonly)

Property of this metric



17
18
19
# File 'lib/cvss_suite/cvss31/cvss31_environmental.rb', line 17

def availability_requirement
  @availability_requirement
end

#confidentiality_requirementObject (readonly)

Property of this metric



17
18
19
# File 'lib/cvss_suite/cvss31/cvss31_environmental.rb', line 17

def confidentiality_requirement
  @confidentiality_requirement
end

#integrity_requirementObject (readonly)

Property of this metric



17
18
19
# File 'lib/cvss_suite/cvss31/cvss31_environmental.rb', line 17

def integrity_requirement
  @integrity_requirement
end

#modified_attack_complexityObject (readonly)

Property of this metric



17
18
19
# File 'lib/cvss_suite/cvss31/cvss31_environmental.rb', line 17

def modified_attack_complexity
  @modified_attack_complexity
end

#modified_attack_vectorObject (readonly)

Property of this metric



17
18
19
# File 'lib/cvss_suite/cvss31/cvss31_environmental.rb', line 17

def modified_attack_vector
  @modified_attack_vector
end

#modified_availabilityObject (readonly)

Property of this metric



17
18
19
# File 'lib/cvss_suite/cvss31/cvss31_environmental.rb', line 17

def modified_availability
  @modified_availability
end

#modified_confidentialityObject (readonly)

Property of this metric



17
18
19
# File 'lib/cvss_suite/cvss31/cvss31_environmental.rb', line 17

def modified_confidentiality
  @modified_confidentiality
end

#modified_integrityObject (readonly)

Property of this metric



17
18
19
# File 'lib/cvss_suite/cvss31/cvss31_environmental.rb', line 17

def modified_integrity
  @modified_integrity
end

#modified_privileges_requiredObject (readonly)

Property of this metric



17
18
19
# File 'lib/cvss_suite/cvss31/cvss31_environmental.rb', line 17

def modified_privileges_required
  @modified_privileges_required
end

#modified_scopeObject (readonly)

Property of this metric



17
18
19
# File 'lib/cvss_suite/cvss31/cvss31_environmental.rb', line 17

def modified_scope
  @modified_scope
end

#modified_user_interactionObject (readonly)

Property of this metric



17
18
19
# File 'lib/cvss_suite/cvss31/cvss31_environmental.rb', line 17

def modified_user_interaction
  @modified_user_interaction
end

Instance Method Details

#score(base, temporal) ⇒ Object

Returns score of this metric



24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/cvss_suite/cvss31/cvss31_environmental.rb', line 24

def score(base, temporal)
  @base = base

  merged_modified_privileges_required = @modified_privileges_required
  if @modified_privileges_required.selected_value[:name] == 'Not Defined'
    merged_modified_privileges_required = @base.privileges_required
  end

  merged_modified_scope = @modified_scope
  if @modified_scope.selected_value[:name] == 'Not Defined'
    merged_modified_scope = @base.scope
  end

  privilege_score = Cvss3Helper.privileges_required_score(merged_modified_privileges_required, merged_modified_scope)

  modified_exploitability_sub_score = modified_exploitability_sub(privilege_score)

  modified_impact_sub_score = modified_impact_sub(isc_modified)

  return 0 if modified_impact_sub_score <= 0

  calculate_score modified_impact_sub_score, modified_exploitability_sub_score, temporal.score
end