dawnscanner 1.3.1 → 1.3.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data.tar.gz.sig +0 -0
  4. data/BUGS.md +14 -0
  5. data/Changelog.md +27 -1
  6. data/KnowledgeBase.md +19 -2
  7. data/LICENSE.txt +2 -2
  8. data/README.md +2 -2
  9. data/Rakefile +100 -0
  10. data/Roadmap.md +25 -11
  11. data/VERSION +16 -0
  12. data/bin/dawn +9 -5
  13. data/checksum/dawnscanner-1.3.1.gem.sha1 +1 -0
  14. data/dawnscanner.gemspec +5 -6
  15. data/lib/dawn/kb/basic_check.rb +25 -10
  16. data/lib/dawn/kb/cve_2004_0755.rb +3 -0
  17. data/lib/dawn/kb/cve_2004_0983.rb +3 -0
  18. data/lib/dawn/kb/cve_2005_1992.rb +3 -0
  19. data/lib/dawn/kb/cve_2005_2337.rb +3 -0
  20. data/lib/dawn/kb/cve_2006_3694.rb +2 -0
  21. data/lib/dawn/kb/cve_2007_0469.rb +2 -0
  22. data/lib/dawn/kb/cve_2007_5380.rb +2 -0
  23. data/lib/dawn/kb/cve_2007_6077.rb +2 -0
  24. data/lib/dawn/kb/cve_2007_6612.rb +2 -0
  25. data/lib/dawn/kb/cve_2013_6416.rb +1 -1
  26. data/lib/dawn/kb/cve_2015_1840/cve_2015_1840_a.rb +28 -0
  27. data/lib/dawn/kb/cve_2015_1840/cve_2015_1840_b.rb +28 -0
  28. data/lib/dawn/kb/cve_2015_2963.rb +27 -0
  29. data/lib/dawn/kb/cve_2015_3224.rb +26 -0
  30. data/lib/dawn/kb/cve_2015_3225.rb +28 -0
  31. data/lib/dawn/kb/cve_2015_3226.rb +27 -0
  32. data/lib/dawn/kb/cve_2015_3227.rb +27 -0
  33. data/lib/dawn/kb/osvdb_118579.rb +31 -0
  34. data/lib/dawn/kb/osvdb_118830.rb +32 -0
  35. data/lib/dawn/kb/osvdb_118954.rb +31 -0
  36. data/lib/dawn/kb/osvdb_119878.rb +32 -0
  37. data/lib/dawn/kb/osvdb_119927.rb +33 -0
  38. data/lib/dawn/kb/owasp_ror_cheatsheet/session_stored_in_database.rb +1 -1
  39. data/lib/dawn/knowledge_base.rb +34 -0
  40. data/lib/dawn/logger.rb +16 -0
  41. data/lib/dawn/reporter.rb +19 -19
  42. data/lib/dawn/utils.rb +2 -2
  43. data/lib/dawn/version.rb +5 -24
  44. data/lib/dawnscanner.rb +2 -1
  45. data/spec/lib/dawn/codesake_knowledgebase_spec.rb +66 -15
  46. data/spec/lib/kb/cve_2015_1840_spec.rb +35 -0
  47. data/spec/lib/kb/cve_2015_2963_spec.rb +17 -0
  48. data/spec/lib/kb/cve_2015_3224_spec.rb +16 -0
  49. data/spec/lib/kb/cve_2015_3225_spec.rb +23 -0
  50. data/spec/lib/kb/cve_2015_3226_spec.rb +29 -0
  51. data/spec/lib/kb/cve_2015_3227_spec.rb +23 -0
  52. data/spec/lib/kb/osvdb_118579_spec.rb +8 -0
  53. data/spec/lib/kb/osvdb_118830_spec.rb +16 -0
  54. data/spec/lib/kb/osvdb_118954_spec.rb +8 -0
  55. data/spec/lib/kb/osvdb_119878_spec.rb +17 -0
  56. data/spec/lib/kb/osvdb_119927_spec.rb +16 -0
  57. data/spec/spec_helper.rb +3 -2
  58. metadata +63 -21
  59. metadata.gz.sig +0 -0
@@ -20,7 +20,7 @@
20
20
  :avoid_comments=>true,
21
21
  :check_family=>:owasp_ror_cheatsheet,
22
22
  :severity=>:info,
23
- :evidences=>["In your session_store.rb file you are not using ActiveRercord to store session data. This will let rails to use a cookie based session and it can expose your web application to a session replay attack."],
23
+ :evidences=>["In your session_store.rb file you are not using ActiveRecord to store session data. This will let rails to use a cookie based session and it can expose your web application to a session replay attack."],
24
24
  :mitigation=>"Use ActiveRecord or the ORM you love most to handle your code session_store. Add \"Application.config.session_store :active_record_store\" to your session_store.rb file."
25
25
  })
26
26
  # @debug = true
@@ -221,6 +221,21 @@ require "dawn/kb/cve_2014_2538"
221
221
  require "dawn/kb/cve_2014_3482"
222
222
  require "dawn/kb/cve_2014_3483"
223
223
 
224
+ # CVE - 2015
225
+
226
+
227
+ # CVE-2015-1840 is spread in two classes because a single CVE is assigned to a
228
+ # vulnerability affecting two differents but related gems. An idiot hack to
229
+ # mitigate an idiot decision.
230
+ require "dawn/kb/cve_2015_1840/cve_2015_1840_a"
231
+ require "dawn/kb/cve_2015_1840/cve_2015_1840_b"
232
+ require "dawn/kb/cve_2015_2963"
233
+ require "dawn/kb/cve_2015_3224"
234
+ require "dawn/kb/cve_2015_3225"
235
+ require "dawn/kb/cve_2015_3226"
236
+ require "dawn/kb/cve_2015_3227"
237
+
238
+
224
239
  # OSVDB
225
240
 
226
241
  require "dawn/kb/osvdb_105971"
@@ -228,6 +243,12 @@ require "dawn/kb/osvdb_108569"
228
243
  require "dawn/kb/osvdb_108570"
229
244
  require "dawn/kb/osvdb_108530"
230
245
  require "dawn/kb/osvdb_108563"
246
+ require "dawn/kb/osvdb_118579"
247
+ require "dawn/kb/osvdb_118830"
248
+ require "dawn/kb/osvdb_118954"
249
+ require "dawn/kb/osvdb_119878"
250
+ require "dawn/kb/osvdb_119927"
251
+
231
252
 
232
253
 
233
254
  module Dawn
@@ -470,6 +491,14 @@ module Dawn
470
491
  Dawn::Kb::CVE_2014_2538.new,
471
492
  Dawn::Kb::CVE_2014_3482.new,
472
493
  Dawn::Kb::CVE_2014_3483.new,
494
+ Dawn::Kb::CVE_2015_1840_a.new,
495
+ Dawn::Kb::CVE_2015_1840_b.new,
496
+ Dawn::Kb::CVE_2015_2963.new,
497
+ Dawn::Kb::CVE_2015_3224.new,
498
+ Dawn::Kb::CVE_2015_3225.new,
499
+ Dawn::Kb::CVE_2015_3226.new,
500
+ Dawn::Kb::CVE_2015_3227.new,
501
+
473
502
 
474
503
  # OSVDB Checks are still here since are all about dependencies
475
504
  Dawn::Kb::OSVDB_105971.new,
@@ -477,6 +506,11 @@ module Dawn
477
506
  Dawn::Kb::OSVDB_108570.new,
478
507
  Dawn::Kb::OSVDB_108530.new,
479
508
  Dawn::Kb::OSVDB_108563.new,
509
+ Dawn::Kb::OSVDB_118579.new,
510
+ Dawn::Kb::OSVDB_118830.new,
511
+ Dawn::Kb::OSVDB_118954.new,
512
+ Dawn::Kb::OSVDB_119878.new,
513
+ Dawn::Kb::OSVDB_119927.new,
480
514
  ]
481
515
  # END @cve_security_checks array
482
516
  # START @owasp_ror_cheatsheet_checks array
@@ -0,0 +1,16 @@
1
+ require 'logger/colors'
2
+
3
+ class Logger
4
+ def helo(app, version)
5
+ @app = app
6
+ info "#{app} v#{version} is starting up"
7
+ end
8
+ def die(msg)
9
+ error(msg)
10
+ Kernel.exit(-1)
11
+ end
12
+ def bye
13
+ info "#{@app} is shutting down"
14
+ end
15
+
16
+ end
data/lib/dawn/reporter.rb CHANGED
@@ -227,34 +227,34 @@ module Dawn
227
227
 
228
228
  def ascii_plain_report
229
229
 
230
- $logger.log "scanning #{@engine.target}"
231
- $logger.log "#{@engine.name} v#{@engine.get_mvc_version} detected" unless @engine.name == "Gemfile.lock"
232
- $logger.log "#{@engine.force} v#{@engine.get_mvc_version} detected" if @engine.name == "Gemfile.lock"
233
- $logger.log "applying all security checks"
230
+ $logger.info "scanning #{@engine.target}"
231
+ $logger.info "#{@engine.name} v#{@engine.get_mvc_version} detected" unless @engine.name == "Gemfile.lock"
232
+ $logger.info "#{@engine.force} v#{@engine.get_mvc_version} detected" if @engine.name == "Gemfile.lock"
233
+ $logger.info "applying all security checks"
234
234
  if @ret
235
- $logger.log "#{@engine.applied_checks} security checks applied - #{@engine.skipped_checks} security checks skipped"
235
+ $logger.info "#{@engine.applied_checks} security checks applied - #{@engine.skipped_checks} security checks skipped"
236
236
  else
237
- $logger.err "no security checks in the knowledge base"
237
+ $logger.error "no security checks in the knowledge base"
238
238
  end
239
239
 
240
240
  if @engine.count_vulnerabilities != 0
241
- $logger.log "#{@engine.count_vulnerabilities} vulnerabilities found"
241
+ $logger.info "#{@engine.count_vulnerabilities} vulnerabilities found"
242
242
  @engine.vulnerabilities.each do |vuln|
243
- $logger.err "#{vuln[:name]} check failed"
244
- $logger.log "Severity: #{vuln[:severity]}"
245
- $logger.log "Priority: #{vuln[:priority]}"
246
- $logger.log "Description: #{vuln[:message]}"
247
- $logger.log "Solution: #{vuln[:remediation]}"
248
- $logger.log "Evidence:"
243
+ $logger.error "#{vuln[:name]} check failed"
244
+ $logger.info "Severity: #{vuln[:severity]}"
245
+ $logger.info "Priority: #{vuln[:priority]}"
246
+ $logger.info "Description: #{vuln[:message]}"
247
+ $logger.info "Solution: #{vuln[:remediation]}"
248
+ $logger.info "Evidence:"
249
249
  vuln[:evidences].each do |evidence|
250
- $logger.log "\t#{evidence}"
250
+ $logger.info "\t#{evidence}"
251
251
  end
252
252
  end
253
253
  if @engine.has_reflected_xss?
254
- $logger.log "#{@engine.reflected_xss.count} reflected XSS found"
254
+ $logger.info "#{@engine.reflected_xss.count} reflected XSS found"
255
255
  @engine.reflected_xss.each do |vuln|
256
- $logger.log "request parameter \"#{vuln[:sink_source]}\" is used without escaping in #{vuln[:sink_view]}. It was read here: #{vuln[:sink_file]}@#{vuln[:sink_line]}"
257
- $logger.err "evidence: #{vuln[:sink_evidence]}"
256
+ $logger.info "request parameter \"#{vuln[:sink_source]}\" is used without escaping in #{vuln[:sink_view]}. It was read here: #{vuln[:sink_file]}@#{vuln[:sink_line]}"
257
+ $logger.error "evidence: #{vuln[:sink_evidence]}"
258
258
  end
259
259
  end
260
260
 
@@ -263,11 +263,11 @@ module Dawn
263
263
  end
264
264
 
265
265
  if @engine.mitigated_issues.count != 0
266
- $logger.log "#{@engine.mitigated_issues.count} mitigated vulnerabilities found"
266
+ $logger.info "#{@engine.mitigated_issues.count} mitigated vulnerabilities found"
267
267
  @engine.mitigated_issues.each do |vuln|
268
268
  $logger.ok "#{vuln[:name]} mitigated"
269
269
  vuln[:evidences].each do |evidence|
270
- $logger.err evidence
270
+ $logger.error evidence
271
271
  end
272
272
  end
273
273
  end
data/lib/dawn/utils.rb CHANGED
@@ -8,11 +8,11 @@ module Dawn
8
8
  __debug_me_and_return(msg, false)
9
9
  end
10
10
  def debug_me(msg)
11
- $logger.log(msg) if @debug
11
+ $logger.debug(msg) if @debug
12
12
  end
13
13
 
14
14
  def __debug_me_and_return(msg, status)
15
- $logger.log(msg) if @debug
15
+ $logger.debug(msg) if @debug
16
16
  return status
17
17
  end
18
18
  end
data/lib/dawn/version.rb CHANGED
@@ -1,26 +1,7 @@
1
1
  module Dawn
2
- # codesake-dawn when in development has RELASE equal to '(development)' and
3
- # the version number is set for the next release.
4
- #
5
- # Each codesake-dawn major release will have a Disney Pixar Cars / Cars2
6
- # character as codename. My son Daniele loves those films and since I love
7
- # him too, # this is a kinda sort of tribute of my son's passion.
8
- #
9
- # Future releases
10
- #
11
- # | Character | Release |
12
- # |-----------------|---------|
13
- # | "Tow Mater" | 2.0.0 |
14
- # | "Finn McMissile"| 3.0.0 |
15
- # | "Fillmore" | 4.0.0 |
16
- # |"Holly Shiftwell"| 5.0.0 |
17
- # | "Guido" | 6.0.0 |
18
- # | "Luigi" | 7.0.0 |
19
- # | "Doc Hudson" | 8.0.0 |
20
-
21
- VERSION = "1.3.1"
22
- CODENAME = "Lightning McQueen"
23
- # RELEASE = "(development)"
24
- RELEASE = "20150219"
25
-
2
+ VERSION = "1.3.5"
3
+ CODENAME = "Lightning McQueen"
4
+ RELEASE = "20150729"
5
+ BUILD = "31"
6
+ COMMIT = "ge32c804"
26
7
  end
data/lib/dawnscanner.rb CHANGED
@@ -7,6 +7,7 @@ require "dawn/sinatra"
7
7
  require "dawn/padrino"
8
8
  require "dawn/gemfile_lock"
9
9
  require "dawn/reporter"
10
- require "codesake-commons"
10
+ require "dawn/logger"
11
+ # require "codesake-commons"
11
12
 
12
13
  require "date"
@@ -910,31 +910,82 @@ describe "The Codesake Dawn knowledge base" do
910
910
  end
911
911
 
912
912
  it "must have test for OSVDB-108570" do
913
- sc = kb.find("OSVDB-108570")
914
- sc.should_not be_nil
915
- sc.class.should == Dawn::Kb::OSVDB_108570
913
+ sc = kb.find("OSVDB-108570")
914
+ sc.should_not be_nil
915
+ sc.class.should == Dawn::Kb::OSVDB_108570
916
916
  end
917
917
 
918
918
  it "must have test for OSVDB-108530" do
919
- sc = kb.find("OSVDB-108530")
920
- sc.should_not be_nil
921
- sc.class.should == Dawn::Kb::OSVDB_108530
919
+ sc = kb.find("OSVDB-108530")
920
+ sc.should_not be_nil
921
+ sc.class.should == Dawn::Kb::OSVDB_108530
922
922
  end
923
923
  it "must have test for OSVDB-108563" do
924
- sc = kb.find("OSVDB-108563")
925
- sc.should_not be_nil
926
- sc.class.should == Dawn::Kb::OSVDB_108563
924
+ sc = kb.find("OSVDB-108563")
925
+ sc.should_not be_nil
926
+ sc.class.should == Dawn::Kb::OSVDB_108563
927
927
  end
928
928
 
929
929
  it "must have test for CVE-2014-3482" do
930
- sc = kb.find("CVE-2014-3482")
931
- sc.should_not be_nil
932
- sc.class.should == Dawn::Kb::CVE_2014_3482
930
+ sc = kb.find("CVE-2014-3482")
931
+ sc.should_not be_nil
932
+ sc.class.should == Dawn::Kb::CVE_2014_3482
933
933
  end
934
934
 
935
935
  it "must have test for CVE-2014-3483" do
936
- sc = kb.find("CVE-2014-3483")
937
- sc.should_not be_nil
938
- sc.class.should == Dawn::Kb::CVE_2014_3483
936
+ sc = kb.find("CVE-2014-3483")
937
+ sc.should_not be_nil
938
+ sc.class.should == Dawn::Kb::CVE_2014_3483
939
+ end
940
+ it "must have test for OSVDB_119927" do
941
+ sc = kb.find("OSVDB_119927")
942
+ sc.should_not be_nil
943
+ sc.class.should == Dawn::Kb::OSVDB_119927
944
+ end
945
+ it "must have test for OSVDB_119878" do
946
+ sc = kb.find("OSVDB_119878")
947
+ sc.should_not be_nil
948
+ sc.class.should == Dawn::Kb::OSVDB_119878
949
+ end
950
+ it "must have test for OSVDB_118954" do
951
+ sc = kb.find("OSVDB_118954")
952
+ sc.should_not be_nil
953
+ sc.class.should == Dawn::Kb::OSVDB_118954
954
+ end
955
+ it "must have test for OSVDB_118579" do
956
+ sc = kb.find("OSVDB_118579")
957
+ sc.should_not be_nil
958
+ sc.class.should == Dawn::Kb::OSVDB_118579
959
+ end
960
+ it "must have test for OSVDB_118830" do
961
+ sc = kb.find("OSVDB_118830")
962
+ sc.should_not be_nil
963
+ sc.class.should == Dawn::Kb::OSVDB_118830
964
+ end
965
+ it "must have test for CVE-2015-3224" do
966
+ sc = kb.find("CVE-2015-3224")
967
+ sc.should_not be_nil
968
+ sc.class.should == Dawn::Kb::CVE_2015_3224
969
+ end
970
+ it "must have test for CVE-2015-3225" do
971
+ sc = kb.find("CVE-2015-3225")
972
+ sc.should_not be_nil
973
+ sc.class.should == Dawn::Kb::CVE_2015_3225
974
+ end
975
+ it "must have test for CVE-2015-3227" do
976
+ sc = kb.find("CVE-2015-3227")
977
+ sc.should_not be_nil
978
+ sc.class.should == Dawn::Kb::CVE_2015_3227
979
+ end
980
+ it "must have test for CVE-2015-3226" do
981
+ sc = kb.find("CVE-2015-3226")
982
+ sc.should_not be_nil
983
+ sc.class.should == Dawn::Kb::CVE_2015_3226
984
+ end
985
+ it "must have test for CVE-2015-2963" do
986
+ sc = kb.find("CVE-2015-2963")
987
+ sc.should_not be_nil
988
+ sc.class.should == Dawn::Kb::CVE_2015_2963
939
989
  end
990
+ it "CVE-2015-1840 can't be tested. Trust me. It works"
940
991
  end
@@ -0,0 +1,35 @@
1
+ require 'spec_helper'
2
+ describe "The CVE-2015-1840 vulnerability" do
3
+ before(:all) do
4
+ @check_a = Dawn::Kb::CVE_2015_1840_a.new
5
+ @check_b = Dawn::Kb::CVE_2015_1840_b.new
6
+ end
7
+ it "is reported when vulnerable jquery-rails gem is used (3.1.2)" do
8
+ @check_a.dependencies = [{:name=>"jquery-rails", :version=>'3.1.2'}]
9
+ @check_a.vuln?.should == true
10
+ end
11
+ it "is reported when vulnerable jquery-rails gem is used 4.0.1)" do
12
+ @check_a.dependencies = [{:name=>"jquery-rails", :version=>'4.0.1'}]
13
+ @check_a.vuln?.should == true
14
+ end
15
+ it "is reported when vulnerable jquery-ujs gem is used 1.0.3)" do
16
+ @check_b.dependencies = [{:name=>"jquery-ujs", :version=>'1.0.3'}]
17
+ @check_b.vuln?.should == true
18
+ end
19
+
20
+ it "is reported when vulnerable jquery-rails gem is used (3.1.3)" do
21
+ @check_a.dependencies = [{:name=>"jquery-rails", :version=>'3.1.3'}]
22
+ @check_a.vuln?.should == false
23
+ end
24
+ it "is reported when vulnerable jquery-rails gem is used 4.0.2)" do
25
+ @check_a.dependencies = [{:name=>"jquery-rails", :version=>'4.0.2'}]
26
+ @check_a.vuln?.should == false
27
+ end
28
+ it "is reported when vulnerable jquery-ujs gem is used 1.0.4)" do
29
+ @check_b.dependencies = [{:name=>"jquery-ujs", :version=>'1.0.4'}]
30
+ @check_b.vuln?.should == false
31
+ end
32
+
33
+
34
+
35
+ end
@@ -0,0 +1,17 @@
1
+ require 'spec_helper'
2
+ describe "The CVE-2015-2963 vulnerability" do
3
+ before(:all) do
4
+ @check = Dawn::Kb::CVE_2015_2963.new
5
+ # @check.debug = true
6
+ end
7
+ it "is reported when vulnerable paperclip gem is used 4.2.1)" do
8
+ @check.dependencies = [{:name=>"paperclip", :version=>'4.2.1'}]
9
+ @check.vuln?.should == true
10
+ end
11
+
12
+ it "is reported when not vulnerable paperclip gem is used (4.2.2)" do
13
+ @check.dependencies = [{:name=>"paperclip", :version=>'4.2.2'}]
14
+ @check.vuln?.should == false
15
+ end
16
+
17
+ end
@@ -0,0 +1,16 @@
1
+ require 'spec_helper'
2
+ describe "The CVE-2015-3224 vulnerability" do
3
+ before(:all) do
4
+ @check = Dawn::Kb::CVE_2015_3224.new
5
+ # @check.debug = true
6
+ end
7
+ it "is reported when vulnerable web-console gem is used (2.1.2)" do
8
+ @check.dependencies = [{:name=>"web-console", :version=>'2.1.2'}]
9
+ @check.vuln?.should == true
10
+ end
11
+ it "is not reported when safe rack gem is used (2.1.3)" do
12
+ @check.dependencies = [{:name=>"web-console", :version=>'2.1.3'}]
13
+ @check.vuln?.should == false
14
+ end
15
+
16
+ end
@@ -0,0 +1,23 @@
1
+ require 'spec_helper'
2
+ describe "The CVE-2015-3225 vulnerability" do
3
+ before(:all) do
4
+ @check = Dawn::Kb::CVE_2015_3225.new
5
+ # @check.debug = true
6
+ end
7
+ it "is reported when vulnerable rack gem is used (1.5.3)" do
8
+ @check.dependencies = [{:name=>"rack", :version=>'1.5.3'}]
9
+ @check.vuln?.should == true
10
+ end
11
+ it "is reported when vulnerable rack gem is used (1.6.1)" do
12
+ @check.dependencies = [{:name=>"rack", :version=>'1.6.1'}]
13
+ @check.vuln?.should == true
14
+ end
15
+ it "is not reported when safe rack gem is used (1.5.4)" do
16
+ @check.dependencies = [{:name=>"rack", :version=>'1.5.4'}]
17
+ @check.vuln?.should == false
18
+ end
19
+ it "is not reported when safe rack gem is used (1.6.3)" do
20
+ @check.dependencies = [{:name=>"rack", :version=>'1.6.3'}]
21
+ @check.vuln?.should == false
22
+ end
23
+ end
@@ -0,0 +1,29 @@
1
+ require 'spec_helper'
2
+ describe "The CVE-2015-3226 vulnerability" do
3
+ before(:all) do
4
+ @check = Dawn::Kb::CVE_2015_3226.new
5
+ # @check.debug = true
6
+ end
7
+
8
+ it "is reported when vulnerable active_support gem is used (3.x.x)" do
9
+ @check.dependencies = [{:name=>"activesupport", :version=>'3.2.11'}]
10
+ @check.vuln?.should == true
11
+ end
12
+ it "is reported when vulnerable active_support gem is used (4.1.11)" do
13
+ @check.dependencies = [{:name=>"activesupport", :version=>'4.1.11'}]
14
+ @check.vuln?.should == true
15
+ end
16
+ it "is reported when vulnerable active_support gem is used (4.2.2)" do
17
+ @check.dependencies = [{:name=>"activesupport", :version=>'4.2.2'}]
18
+ @check.vuln?.should == true
19
+ end
20
+ it "is not reported when safe active_support gem is used (4.1.12)" do
21
+ @check.dependencies = [{:name=>"activesupport", :version=>'4.1.12'}]
22
+ @check.vuln?.should == false
23
+ end
24
+ it "is not reported when safe active_support gem is used (4.2.3)" do
25
+ @check.dependencies = [{:name=>"activesupport", :version=>'4.2.3'}]
26
+ @check.vuln?.should == false
27
+ end
28
+
29
+ end
@@ -0,0 +1,23 @@
1
+ require 'spec_helper'
2
+ describe "The CVE-2015-3227 vulnerability" do
3
+ before(:all) do
4
+ @check = Dawn::Kb::CVE_2015_3227.new
5
+ @check.debug = true
6
+ end
7
+ it "is reported when vulnerable active_support gem is used (4.1.11)" do
8
+ @check.dependencies = [{:name=>"activesupport", :version=>'4.1.11'}]
9
+ @check.vuln?.should == true
10
+ end
11
+ it "is reported when vulnerable active_support gem is used (4.2.2)" do
12
+ @check.dependencies = [{:name=>"activesupport", :version=>'4.2.2'}]
13
+ @check.vuln?.should == true
14
+ end
15
+ it "is not reported when safe active_support gem is used (4.1.12)" do
16
+ @check.dependencies = [{:name=>"activesupport", :version=>'4.1.12'}]
17
+ @check.vuln?.should == false
18
+ end
19
+ it "is not reported when safe active_support gem is used (4.2.3)" do
20
+ @check.dependencies = [{:name=>"activesupport", :version=>'4.2.3'}]
21
+ @check.vuln?.should == false
22
+ end
23
+ end