class Cvss3::Formulas
Constants
- EXPLOITABILITY_COEFFICIENT
- IMPACT_COEFFICIENT
- IMPACT_MOD_COEFFICIENT
Public Instance Methods
cvss_base_formula(impact_sub_score_value, scope_value, exploitability_sub_score_value)
click to toggle source
# File lib/cvss_rating/cvss3_formulas.rb, line 35 def cvss_base_formula(impact_sub_score_value, scope_value, exploitability_sub_score_value) if scope_value == 'unchanged' impact_value = IMPACT_COEFFICIENT * impact_sub_score_value cvss_base_value = min(10.0, impact_value + exploitability_sub_score_value) elsif scope_value == 'changed' impact_value = IMPACT_MOD_COEFFICIENT * (impact_sub_score_value - 0.029) - 3.25 * ((impact_sub_score_value - 0.02)**15) cvss_base_value = min(10.0, 1.08 * (impact_value + exploitability_sub_score_value)) end cvss_base_value = if impact_sub_score_value <= 0 0.0 else cvss_base_value.ceil2(1) end cvss_base_value end
cvss_environmental_formula(impact_sub_score_value_modified, exploitability_sub_score_value_modified, exploit_code_maturity_value, remediation_level_value, report_confidence_value, scope_value_modified)
click to toggle source
# File lib/cvss_rating/cvss3_formulas.rb, line 62 def cvss_environmental_formula(impact_sub_score_value_modified, exploitability_sub_score_value_modified, exploit_code_maturity_value, remediation_level_value, report_confidence_value, scope_value_modified) if scope_value_modified == 'unchanged' impact_value_modified = IMPACT_COEFFICIENT * impact_sub_score_value_modified temp_score = min(10.0, impact_value_modified + exploitability_sub_score_value_modified) temp_score2 = temp_score.ceil2(1) temp_score3 = temp_score2 * exploit_code_maturity_value * remediation_level_value * report_confidence_value elsif scope_value_modified == 'changed' impact_value_modified = IMPACT_MOD_COEFFICIENT * (impact_sub_score_value_modified - 0.029) - 3.25 * ((impact_sub_score_value_modified - 0.02)**15) temp_score = min(10.0, 1.08 * (impact_value_modified + exploitability_sub_score_value_modified)) temp_score2 = temp_score.ceil2(1) temp_score3 = temp_score2 * exploit_code_maturity_value * remediation_level_value * report_confidence_value end cvss_environmental_value = if impact_sub_score_value_modified <= 0 0.0 else temp_score3.ceil2(1) end cvss_environmental_value end
cvss_temporal_formula(cvss_base_value, exploit_code_maturity_value, remediation_level_value, report_confidence_value)
click to toggle source
# File lib/cvss_rating/cvss3_formulas.rb, line 53 def cvss_temporal_formula(cvss_base_value, exploit_code_maturity_value, remediation_level_value, report_confidence_value) cvss_temporal_value = cvss_base_value * exploit_code_maturity_value * remediation_level_value * \ report_confidence_value cvss_temporal_value = cvss_temporal_value.ceil2(1) cvss_temporal_value end
exploitability_sub_score(attack_vector_value, attack_complexity_value, privileges_required_value, user_interaction_value)
click to toggle source
# File lib/cvss_rating/cvss3_formulas.rb, line 7 def exploitability_sub_score(attack_vector_value, attack_complexity_value, privileges_required_value, user_interaction_value) exploitability_sub_score_value = EXPLOITABILITY_COEFFICIENT * attack_vector_value * attack_complexity_value * privileges_required_value * user_interaction_value exploitability_sub_score_value end
exploitability_sub_score_modified(attack_vector_value_modified, attack_complexity_value_modified, privileges_required_value_modified, user_interaction_value_modified)
click to toggle source
# File lib/cvss_rating/cvss3_formulas.rb, line 13 def exploitability_sub_score_modified(attack_vector_value_modified, attack_complexity_value_modified, privileges_required_value_modified, user_interaction_value_modified) exploitability_sub_score_value_modified = EXPLOITABILITY_COEFFICIENT * attack_vector_value_modified * attack_complexity_value_modified * privileges_required_value_modified * user_interaction_value_modified exploitability_sub_score_value_modified end
impact_sub_score_base(availability_value, confidentiality_value, integrity_value)
click to toggle source
# File lib/cvss_rating/cvss3_formulas.rb, line 21 def impact_sub_score_base(availability_value, confidentiality_value, integrity_value) impact_sub_score_value = 1 - ((1 - confidentiality_value) * (1 - integrity_value) * (1 - availability_value)) impact_sub_score_value end
impact_sub_score_modified_base(availability_value_modified, confidentiality_value_modified, integrity_value_modified, confidentiality_requirement_value, integrity_requirement_value, availability_requirement_value)
click to toggle source
# File lib/cvss_rating/cvss3_formulas.rb, line 27 def impact_sub_score_modified_base(availability_value_modified, confidentiality_value_modified, integrity_value_modified, confidentiality_requirement_value, integrity_requirement_value, availability_requirement_value) impact_sub_score_value_modified = min(0.915, 1 - (1 - confidentiality_value_modified * confidentiality_requirement_value) * (1 - integrity_value_modified * integrity_requirement_value) * (1 - availability_value_modified * availability_requirement_value)) impact_sub_score_value_modified end
min(*values)
click to toggle source
# File lib/cvss_rating/cvss3_formulas.rb, line 86 def min(*values) values.min end