dawnscanner 1.3.1 → 1.3.5

Sign up to get free protection for your applications and to get access to all the features.
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