Class: Risu::Parsers::Nessus::PostProcess::RiskScore
- Inherits:
-
Base::PostProcessBase
- Object
- Base::PostProcessBase
- Risu::Parsers::Nessus::PostProcess::RiskScore
- Defined in:
- lib/risu/parsers/nessus/postprocess/risk_score.rb
Instance Attribute Summary
Attributes inherited from Base::PostProcessBase
Instance Method Summary collapse
- #calculate_host_risk_score ⇒ Object
-
#calculate_item_risk_score ⇒ Object
Calculates the RiskScore for a Item which is == to the Plugin’s RiskScore.
- #calculate_plugin_risk_score ⇒ Object
-
#initialize ⇒ RiskScore
constructor
A new instance of RiskScore.
- #run ⇒ Object
Methods inherited from Base::PostProcessBase
#<=>, #==, #calculate_severity, #create_item, #create_plugin, #has_findings, #has_host_findings, inherited
Constructor Details
#initialize ⇒ RiskScore
Returns a new instance of RiskScore.
29 30 31 32 33 34 35 |
# File 'lib/risu/parsers/nessus/postprocess/risk_score.rb', line 29 def initialize @info = { :description => "RiskScore Calculator", :plugin_id => 0 } end |
Instance Method Details
#calculate_host_risk_score ⇒ Object
76 77 78 79 80 81 82 83 84 85 86 87 88 89 |
# File 'lib/risu/parsers/nessus/postprocess/risk_score.rb', line 76 def calculate_host_risk_score Host.all.each do |host| risk_score = 0.0 host.items.to_a.each do |item| risk_score = risk_score + item.risk_score end #@TODO weighting goes here host.risk_score = risk_score host.save end end |
#calculate_item_risk_score ⇒ Object
Calculates the RiskScore for a Item which is == to the Plugin’s RiskScore
40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
# File 'lib/risu/parsers/nessus/postprocess/risk_score.rb', line 40 def calculate_item_risk_score Item.all.each do |item| plugin = Plugin.where(:id => item.plugin_id).first risk_score = 0.0 cvss_base_score = plugin.cvss_base_score.to_f || 1.0 vuln_publication_date = plugin.vuln_publication_date vuln_pub_days = 1 vuln_pub_days = (DateTime.now.to_date - vuln_publication_date.to_date).to_i if vuln_publication_date != nil exploitable = plugin.exploit_available exploitable_factor = 1 if exploitable == "true" exploitable_factor = 0.6 end risk_score = (cvss_base_score * vuln_pub_days * 0.8) * exploitable_factor item.risk_score = risk_score item.save end end |
#calculate_plugin_risk_score ⇒ Object
66 67 68 69 70 71 72 73 |
# File 'lib/risu/parsers/nessus/postprocess/risk_score.rb', line 66 def calculate_plugin_risk_score Plugin.all.each do |plugin| items = Item.where(:plugin_id => plugin.id).to_a plugin.risk_score = items.first.risk_score * items.count plugin.save end end |
#run ⇒ Object
92 93 94 95 96 |
# File 'lib/risu/parsers/nessus/postprocess/risk_score.rb', line 92 def run calculate_item_risk_score() calculate_plugin_risk_score() calculate_host_risk_score() end |