diff --git a/lib/common/models/vulnerability.rb b/lib/common/models/vulnerability.rb index 0136692e..1e6dccc7 100755 --- a/lib/common/models/vulnerability.rb +++ b/lib/common/models/vulnerability.rb @@ -43,8 +43,11 @@ class Vulnerability def self.load_from_json_item(json_item) references = {} - [:id, :url, :cve, :secunia, :osvdb, :metasploit, :exploitdb].each do |key| - references[key] = json_item[key.to_s].to_s.split(',') if json_item[key.to_s] + %w(id url cve secunia osvdb metasploit exploitdb).each do |key| + if json_item[key] + json_item[key] = [json_item[key]] if json_item[key].class != Array + references[key] = json_item[key] + end end new( diff --git a/spec/lib/common/models/vulnerability_spec.rb b/spec/lib/common/models/vulnerability_spec.rb index e0e05c57..2d6bf039 100644 --- a/spec/lib/common/models/vulnerability_spec.rb +++ b/spec/lib/common/models/vulnerability_spec.rb @@ -37,13 +37,13 @@ describe Vulnerability do } expected_refs = { - :id => ['3911'], - :url => ['Ref 1', 'Ref 2'], - :cve => ['2011-001'], - :secunia => ['secunia'], - :osvdb => ['osvdb'], - :metasploit => ['exploit/ex1'], - :exploitdb => ['exploitdb'] + 'id' => ['3911'], + 'url' => ['Ref 1,Ref 2'], + 'cve' => ['2011-001'], + 'secunia' => ['secunia'], + 'osvdb' => ['osvdb'], + 'metasploit' => ['exploit/ex1'], + 'exploitdb' => ['exploitdb'] } its(:title) { should == 'Vuln Title' } diff --git a/spec/lib/common/models/wp_item_spec.rb b/spec/lib/common/models/wp_item_spec.rb index f99d28ff..2cc8f93f 100644 --- a/spec/lib/common/models/wp_item_spec.rb +++ b/spec/lib/common/models/wp_item_spec.rb @@ -14,13 +14,13 @@ describe WpItem do let(:vulns_file) { MODELS_FIXTURES + '/wp_item/vulnerable/items_vulns.json' } let(:identifier) { 'neo' } let(:expected_refs) { { - :id => ['2993'], - :url => ['Ref 1', 'Ref 2'], - :cve => ['2011-001'], - :secunia => ['secunia'], - :osvdb => ['osvdb'], - :metasploit => ['exploit/ex1'], - :exploitdb => ['exploitdb'] + 'id' => [2993], + 'url' => ['Ref 1,Ref 2'], + 'cve' => ['2011-001'], + 'secunia' => ['secunia'], + 'osvdb' => ['osvdb'], + 'metasploit' => ['exploit/ex1'], + 'exploitdb' => ['exploitdb'] } } let(:expected_vulns) { Vulnerabilities.new(1, Vulnerability.new("I'm the one", 'XSS', expected_refs)) } end diff --git a/spec/lib/common/models/wp_plugin_spec.rb b/spec/lib/common/models/wp_plugin_spec.rb index 4f7db2aa..29425678 100644 --- a/spec/lib/common/models/wp_plugin_spec.rb +++ b/spec/lib/common/models/wp_plugin_spec.rb @@ -8,13 +8,13 @@ describe WpPlugin do let(:options) { { name: 'white-rabbit' } } let(:vulns_file) { MODELS_FIXTURES + '/wp_plugin/vulnerable/plugins_vulns.json' } let(:expected_refs) { { - :id => ['2993'], - :url => ['Ref 1', 'Ref 2'], - :cve => ['2011-001'], - :secunia => ['secunia'], - :osvdb => ['osvdb'], - :metasploit => ['exploit/ex1'], - :exploitdb => ['exploitdb'] + 'id' => [2993], + 'url' => ['Ref 1,Ref 2'], + 'cve' => ['2011-001'], + 'secunia' => ['secunia'], + 'osvdb' => ['osvdb'], + 'metasploit' => ['exploit/ex1'], + 'exploitdb' => ['exploitdb'] } } let(:expected_vulns) { Vulnerabilities.new << Vulnerability.new('Follow me!', 'REDIRECT', expected_refs) } end diff --git a/spec/lib/common/models/wp_theme_spec.rb b/spec/lib/common/models/wp_theme_spec.rb index f5b08668..2809464d 100644 --- a/spec/lib/common/models/wp_theme_spec.rb +++ b/spec/lib/common/models/wp_theme_spec.rb @@ -9,13 +9,13 @@ describe WpTheme do let(:options) { { name: 'the-oracle' } } let(:vulns_file) { MODELS_FIXTURES + '/wp_theme/vulnerable/themes_vulns.json' } let(:expected_refs) { { - :id => ['2993'], - :url => ['Ref 1', 'Ref 2'], - :cve => ['2011-001'], - :secunia => ['secunia'], - :osvdb => ['osvdb'], - :metasploit => ['exploit/ex1'], - :exploitdb => ['exploitdb'] + 'id' => [2993], + 'url' => ['Ref 1,Ref 2'], + 'cve' => ['2011-001'], + 'secunia' => ['secunia'], + 'osvdb' => ['osvdb'], + 'metasploit' => ['exploit/ex1'], + 'exploitdb' => ['exploitdb'] } } let(:expected_vulns) { Vulnerabilities.new << Vulnerability.new('I see you', 'FPD', expected_refs) } end diff --git a/spec/lib/common/models/wp_version_spec.rb b/spec/lib/common/models/wp_version_spec.rb index 6780285a..49071cc8 100644 --- a/spec/lib/common/models/wp_version_spec.rb +++ b/spec/lib/common/models/wp_version_spec.rb @@ -8,13 +8,13 @@ describe WpVersion do let(:options) { { number: '3.2' } } let(:vulns_file) { MODELS_FIXTURES + '/wp_version/vulnerable/versions_vulns.json' } let(:expected_refs) { { - :id => ['2993'], - :url => ['Ref 1', 'Ref 2'], - :cve => ['2011-001'], - :secunia => ['secunia'], - :osvdb => ['osvdb'], - :metasploit => ['exploit/ex1'], - :exploitdb => ['exploitdb'] + 'id' => [2993], + 'url' => ['Ref 1,Ref 2'], + 'cve' => ['2011-001'], + 'secunia' => ['secunia'], + 'osvdb' => ['osvdb'], + 'metasploit' => ['exploit/ex1'], + 'exploitdb' => ['exploitdb'] } } let(:expected_vulns) { Vulnerabilities.new << Vulnerability.new('Here I Am', 'SQLI', expected_refs) } end