dawnscanner 2.0.0.rc1 → 2.0.0.rc2

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: fedb521a49d75d72343489c68b9871fea0df9de953a3907dbe57e1ca375d5f65
4
- data.tar.gz: b1e3c420155adf6c0ed829fad272970bca0c17245fcfea1da38ebd2f69d6043c
3
+ metadata.gz: 2b6bee4d3b7a5f1fd9189a556dccfe88631e1eed526de637cc0d74dbecea9a71
4
+ data.tar.gz: f8ad2cf91ce1e212abcfd9732534512aa54794512853f8a200a6d8d0396d5c53
5
5
  SHA512:
6
- metadata.gz: f5f5496969dd2f55cde87c9156e2d4ee55b70516af1b73a08fad3b8c140ad008c77cfb12d701229539ef430caabb4cbfc4cd27413ebe13c4d19d38de8ca87b59
7
- data.tar.gz: 0727f9f752bbb2f99e977ae893cafd765fe602241894a793bfe8000e5327f92932059669313ed7bb0c167b9102d60afc4f3cdfaf229d702f42c750e828eb4b90
6
+ metadata.gz: 547d98cc3af2c146a7ad987e98c9b67f1f6f7237a669ed509dc08bbbc885d4c4638598b683624ce9efd627e70c6500d42f5d11204caa45a9c3f916a44c863ac5
7
+ data.tar.gz: b75df8fc99cee42cba08919c7a56ff4eb41e1b0c234502f779d5957ab40efde8f4bbd5ef1c562cc113dee4489d8c718fccb615dc2bf3688526b832c2c6bc9e28
@@ -14,6 +14,9 @@ _latest update: mer 28 nov 2018, 11.03.53, CET_
14
14
  invoke dawn the right way or use the 'dawn help' command
15
15
  * Added a new debug\_verbosely API for engines and checks
16
16
  * Removed rake osvdb[name] and rake cve[name] tasks
17
+ * Adding telemetry
18
+ * Dawn::Utils include refactory. Now it's available application wide
19
+ * debug information refactory.
17
20
 
18
21
  ## Version 1.6.9 - codename: Tow Mater (2018-11-28)
19
22
 
data/README.md CHANGED
@@ -12,6 +12,15 @@ box:
12
12
  * [Sinatra](http://www.sinatrarb.com)
13
13
  * [Padrino](http://www.padrinorb.com)
14
14
 
15
+ ## Quick update from April, 2019
16
+
17
+ We just released version 2.0.0 release candidate 1 with a YAML powered revamped
18
+ knowledge base. Please note that dawnscanner will include a telemetry facility
19
+ sending a POST on https://dawnscanner.org/telemetry with an application id and
20
+ some information about version and knowledge base.
21
+
22
+ We won't now and ever collect your source code on our side.
23
+
15
24
  ## Quick update from November, 2018
16
25
 
17
26
  As you can see dawnscanner is on hold since more then an year. Sorry for that.
data/VERSION CHANGED
@@ -12,4 +12,4 @@
12
12
  # | "Guido" | x.x.0 |
13
13
  # | "Luigi" | x.x.0 |
14
14
  # | "Doc Hudson" | x.x.0 |
15
- 2.0.0.rc1 - Finn McMissile
15
+ 2.0.0.rc2 - Finn McMissile
data/bin/dawn CHANGED
@@ -19,215 +19,22 @@ VALID_OUTPUT_FORMAT = %w(console json csv html)
19
19
 
20
20
  require 'logger'
21
21
  $logger = Logger.new(STDOUT)
22
- $logger.datetime_format = '%Y-%m-%d %H:%M:%S'
22
+ $logger.formatter = proc do |severity, datetime, progname, msg|
23
+ date_format = datetime.strftime("%Y-%m-%d %H:%M:%S")
24
+ if severity == "INFO" or severity == "WARN"
25
+ "[#{date_format}] #{severity} (dawn): #{msg}\n"
26
+ else
27
+ "[#{date_format}] #{severity} (dawn): #{msg}\n"
28
+ end
29
+ end
23
30
 
24
31
  engine = nil
25
32
  $debug=false
26
33
  $verbose=false
27
34
 
28
35
 
29
- options = Dawn::Core.read_conf(Dawn::Core.find_conf(true))
30
36
  check = ""
31
37
  guess = {:name=>"", :version=>"", :connected_gems=>[]}
32
38
 
33
39
  Dawn::Cli::DawnCli.start
34
- $logger.bye
35
40
  Kernel.exit(0)
36
-
37
- ###############################################################################
38
- # CLI argument start.
39
- #
40
- # Refactoring is necessary here
41
- ###############################################################################
42
- begin
43
- opts.each do |opt, val|
44
- case opt
45
- when '--version'
46
- puts "#{Dawn::VERSION} [#{Dawn::CODENAME}]"
47
- Kernel.exit(0)
48
- when '--config-file'
49
- options = Dawn::Core.read_conf(val)
50
- when '--disable-cve-bulletins'
51
- options[:enabled_checks].delete(:bulletin)
52
- when '--disable-code-quality'
53
- options[:enabled_checks].delete(:code_quality)
54
- when '--disable-code-style'
55
- options[:enabled_checks].delete(:code_style)
56
- when '--disable-owasp-ror-cheatsheet'
57
- options[:enabled_checks].delete(:owasp_ror_cheatsheet)
58
- when '--disable-owasp-top-10'
59
- options[:enabled_checks].delete(:owasp_top_10_1)
60
- options[:enabled_checks].delete(:owasp_top_10_2)
61
- options[:enabled_checks].delete(:owasp_top_10_3)
62
- options[:enabled_checks].delete(:owasp_top_10_4)
63
- options[:enabled_checks].delete(:owasp_top_10_5)
64
- options[:enabled_checks].delete(:owasp_top_10_6)
65
- options[:enabled_checks].delete(:owasp_top_10_7)
66
- options[:enabled_checks].delete(:owasp_top_10_8)
67
- options[:enabled_checks].delete(:owasp_top_10_9)
68
- options[:enabled_checks].delete(:owasp_top_10_10)
69
- when '--list-known-families'
70
- printf "Dawn supports following check families:\n\n"
71
- puts Dawn::Kb::BasicCheck.families
72
- Kernel.exit(0)
73
- when '--json'
74
- options[:output] = "json"
75
- when '--console'
76
- options[:output] = "console"
77
- when '--tabular'
78
- options[:output] = "tabular"
79
- when '--ascii-tabular-report'
80
- $logger.warn "--ascii-tabular-report' it has been deprecated. It will be removed in version 2.0.0. Please use '--tabular' instead"
81
- options[:output] = "tabular"
82
- when '--html'
83
- options[:output] = "html"
84
- when '--file'
85
- options[:filename] = val
86
- when '--gem-lock'
87
- options[:gemfile_scan] = true
88
- $logger.warn "--gem-lock flag it has been deprecated. It will be removed in version 2.0.0. Please use '--dependencies' instead"
89
- unless val.empty?
90
- options[:gemfile_name] = val
91
- guess = Dawn::Core.guess_mvc(val)
92
- end
93
- when '--dependencies'
94
- options[:gemfile_scan] = true
95
- unless val.empty?
96
- options[:gemfile_name] = val
97
- guess = Dawn::Core.guess_mvc(val)
98
- end
99
-
100
- when '--verbose'
101
- options[:verbose]=true
102
- when '--count-only'
103
- options[:output] = "count"
104
- when '--debug'
105
- options[:debug] = true
106
- when '--exit-on-warn'
107
- options[:exit_on_warn] = true
108
-
109
- when '--search-knowledge-base'
110
- found = Dawn::KnowledgeBase.find(nil, val)
111
- puts "#{val} found in knowledgebase." if found
112
- puts "#{val} not found in knowledgebase" if ! found
113
- Kernel.exit(0)
114
- when '--list-scan-registry'
115
- puts "#{APPNAME} scan registry\n\n"
116
- Dawn::Registry.dump
117
- Kernel.exit(0)
118
-
119
- when '--list-knowledge-base'
120
- Dawn::KnowledgeBase.dump(options[:verbose])
121
- Kernel.exit(0)
122
- when '--list-known-framework'
123
- puts "Ruby MVC framework supported by #{APPNAME}:"
124
- LIST_KNOWN_FRAMEWORK.each do |mvc|
125
- puts "* #{mvc}"
126
- end
127
- Kernel.exit(0)
128
- when '--help'
129
- Kernel.exit(Dawn::Core.help)
130
- end
131
- end
132
- rescue GetoptLong::InvalidOption => e
133
- $logger.helo APPNAME, Dawn::VERSION
134
- $logger.error e.message
135
- Kernel.exit(Dawn::Core.help)
136
- end
137
- ###############################################################################
138
- # CLI argument stop
139
- ###############################################################################
140
-
141
- target=ARGV.shift
142
-
143
- target = File.expand_path(".") if target == "."
144
-
145
-
146
- ## It will be migrated to active record in 2019
147
- # r = Dawn::Registry.new
148
-
149
- # unless Dir.exist?(Dawn::Core.registry_db_folder)
150
- # FileUtils.mkdir_p(Dawn::Core.registry_db_folder)
151
- # $logger.info "#{Dawn::Core.registry_db_folder} created" if Dir.exist?(Dawn::Core.registry_db_folder)
152
- # end
153
-
154
- trap("INT") { $logger.die('[INTERRUPTED]') }
155
- $logger.die("missing target") if target.nil? && options[:gemfile_name].empty?
156
- $logger.die("invalid directory (#{target})") if options[:gemfile_name].empty? &&! Dawn::Core.is_good_target?(target)
157
- $logger.debug("security check enabled: #{options[:enabled_checks]}") if options[:debug]
158
-
159
- ## MVC auto detect.
160
-
161
- # Skipping MVC autodetect if it's already been done by guess_mvc when choosing
162
- # Gemfile.lock scan
163
-
164
- unless options[:gemfile_scan]
165
- begin
166
- engine = Dawn::Core.detect_mvc(target)
167
- $logger.debug("using #{engine.class.name} engine via autodect") if options[:debug]
168
- rescue ArgumentError => e
169
- # r.do_save({:target=>File.basename(target), :scan_started=>DateTime.now, :scan_duration => 0, :issues_found=> -1, :output_dir=> "", :message=>e.message, :scan_status=>:failed})
170
- $logger.die(e.message)
171
- end
172
- else
173
- engine = Dawn::GemfileLock.new(target, options[:gemfile_name], guess) # if options[:gemfile_scan]
174
- end
175
-
176
-
177
- if engine.nil?
178
- $logger.error("MVC detection failure. Please open an issue at https://github.com/thesp0nge/dawnscanner/issues")
179
- # r.do_save({:target=>File.basename(target), :message=>"MVC detection failure. Please open an issue at https://github.com/thesp0nge/dawnscanner/issues", :scan_status=>:failed})
180
- $logger.die('ruby framework auto detect failed.')
181
- end
182
- ## end MVC auto detect.
183
-
184
- if options[:exit_on_warn]
185
- Kernel.at_exit do
186
- if engine.count_vulnerabilities != 0
187
- Kernel.exit(engine.count_vulnerabilities)
188
- end
189
- end
190
- end
191
-
192
- if options[:debug]
193
- $logger.warn "putting engine in debug mode"
194
- engine.debug = true
195
- end
196
-
197
- $logger.warn "this is a development Dawn version" if Dawn::RELEASE == "(development)"
198
-
199
- if engine.nil?
200
- # r.do_save({:target=>File.basename(target), :message=>"missing target framework option", :scan_status=>:failed})
201
- $logger.die "missing target framework option"
202
- end
203
-
204
- if ! options[:gemfile_scan] && ! engine.can_apply?
205
- # r.do_save({:target=>File.basename(target), :message=>"nothing to do on #{target}", :scan_status=>:failed})
206
- $logger.die "nothing to do on #{target}"
207
- end
208
-
209
- engine.load_knowledge_base(options[:enabled_checks])
210
- ret = engine.apply_all
211
-
212
- if options[:output] == "count"
213
- STDERR.puts (ret)? engine.vulnerabilities.count : "-1" unless options[:output] == "json"
214
- STDERR.puts (ret)? {:status=>"OK", :vulnerabilities_count=>engine.count_vulnerabilities}.to_json : {:status=>"KO", :vulnerabilities_count=>-1}.to_json if options[:output] == "json"
215
-
216
- # r.do_save({:target=>engine.target, :scan_started=>engine.scan_start, :scan_duration => engine.scan_time.round(3), :issues_found=>engine.vulnerabilities.count, :output_dir=>engine.output_dir_name, :scan_status=>:completed})
217
- $logger.bye
218
- Kernel.exit(0)
219
- end
220
-
221
- Dawn::Reporter.new({:engine=>engine, :apply_all_code=>ret, :format=>options[:output].to_sym, :filename=>options[:filename]}).report
222
- #if (r.do_save({:target=>File.basename(engine.target),
223
- # :scan_started=>engine.scan_start,
224
- # :scan_duration => engine.scan_time.round(3),
225
- # :issues_found=>engine.vulnerabilities.count,
226
- # :output_dir=>engine.output_dir_name,
227
- # :scan_status=>:completed}))
228
- # $logger.info "#{Dawn::Core.registry_db_name} updated with scan infos"
229
- #else
230
- # r.errors.each do |error|
231
- # $logger.error error
232
- # end
233
- #end
@@ -0,0 +1 @@
1
+ 04dc5b15006b4ee5912b789160756c57b4c9036a
@@ -1,4 +1,5 @@
1
1
  require 'thor'
2
+ require 'dawn/utils'
2
3
 
3
4
  module Dawn
4
5
  module Cli
@@ -6,6 +7,7 @@ module Dawn
6
7
  # This class is responsible for the "dawn kb" command and related
7
8
  # subcommands.
8
9
  class Kb < Thor
10
+ package_name "dawnscanner"
9
11
  desc "search", "Searches the knowledge base for a given security test"
10
12
  def search(string)
11
13
  kb = Dawn::KnowledgeBase.instance
@@ -19,14 +21,13 @@ module Dawn
19
21
  Dawn::KnowledgeBase.enabled_checks=[:bulletin, :generic_check]
20
22
  kb = Dawn::KnowledgeBase.instance
21
23
  kb.load
24
+ if kb.security_checks.empty?
25
+ $logger.error(kb.error)
26
+ end
27
+
28
+ $logger.info("" + kb.security_checks.count.to_s + " security checks loaded")
22
29
  if kb.is_packed?
23
30
  $logger.error "The knowledge base is packed. It must be unpacked with the 'unpack' command before it can be used"
24
- else
25
- if kb.is_valid?
26
- $logger.info "Good Knowledge base found"
27
- else
28
- $logger.error "Invalid knowledge base found"
29
- end
30
31
  end
31
32
  $logger.bye
32
33
  Kernel.exit(0)
@@ -34,7 +35,9 @@ module Dawn
34
35
  end
35
36
 
36
37
  class DawnCli < Thor
38
+ package_name "dawnscanner"
37
39
  class_option :verbose, :type=>:boolean
40
+ class_option :debug, :type=>:boolean
38
41
 
39
42
  map %w[--version -v] => :__print_version
40
43
 
@@ -48,16 +51,14 @@ module Dawn
48
51
  subcommand "kb", Dawn::Cli::Kb
49
52
 
50
53
  desc "scan", "scans a folder for security issues"
54
+ option :config_file
51
55
  option :gemfile, :type=>:boolean
52
56
  option :exit_on_warn, :type=>:boolean
53
- option :debug, :type=>:boolean
54
- option :verbose, :type=>:boolean
55
57
  option :count, :type=>:boolean
56
58
  option :output
57
59
 
58
60
  def scan(target)
59
61
  $logger.helo APPNAME, Dawn::VERSION
60
- $logger.debug "scanning #{target}"
61
62
  trap("INT") { $logger.die('[INTERRUPTED]') }
62
63
 
63
64
  $logger.die("invalid directory (#{target})") unless Dawn::Core.is_good_target?(target)
@@ -65,7 +66,19 @@ module Dawn
65
66
  $debug = true if options[:debug]
66
67
  $verbose = true if options[:verbose]
67
68
 
68
-
69
+ debug_me("scanning #{target}")
70
+
71
+ $config_file= Dawn::Core.find_conf(true) if options[:config_file].nil?
72
+ $config = Dawn::Core.read_conf($config_file)
73
+
74
+ $telemetry_url = $config[:telemetry][:endpoint] if $config[:telemetry][:enabled]
75
+ debug_me("telemetry url is " + $telemetry_url) unless @telemetry_url.nil?
76
+ $telemetry_id = $config[:telemetry][:id] if $config[:telemetry][:enabled]
77
+
78
+ debug_me("telemetry id is " + $telemetry_id) unless @telemetry_id.nil?
79
+ $logger.info("telemetry is disabled in config file") unless $config[:telemetry][:enabled]
80
+
81
+ engine = Dawn::Core.detect_mvc(target) unless options[:gemfile]
69
82
  engine = Dawn::GemfileLock.new(target) if options[:gemfile]
70
83
 
71
84
  if engine.nil?
@@ -83,17 +96,17 @@ module Dawn
83
96
 
84
97
 
85
98
  engine.load_knowledge_base
99
+
86
100
  ret = engine.apply_all
87
101
  if options[:output]
88
102
  STDERR.puts (ret)? engine.vulnerabilities.count : "-1" unless options[:output] == "json"
89
103
  STDERR.puts (ret)? {:status=>"OK", :vulnerabilities_count=>engine.count_vulnerabilities}.to_json : {:status=>"KO", :vulnerabilities_count=>-1}.to_json if options[:output] == "json"
90
-
91
- # r.do_save({:target=>engine.target, :scan_started=>engine.scan_start, :scan_duration => engine.scan_time.round(3), :issues_found=>engine.vulnerabilities.count, :output_dir=>engine.output_dir_name, :scan_status=>:completed})
92
104
  $logger.bye
93
105
  Kernel.exit(0)
94
106
  end
95
107
 
96
108
  Dawn::Reporter.new({:engine=>engine, :apply_all_code=>ret}).report
109
+ $logger.bye
97
110
 
98
111
  Kernel.exit(0)
99
112
 
@@ -112,6 +112,7 @@ module Dawn
112
112
  fn = p + conf_name if p.start_with?('/')
113
113
  # if outside $HOME the config file must be hidden
114
114
  fn = File.expand_path(p) + '/.'+conf_name if ! p.start_with?('/')
115
+ debug_me("found a config file: " + fn) if File.exist?(fn)
115
116
  return fn if File.exist?(fn)
116
117
  end
117
118
 
@@ -122,7 +123,7 @@ module Dawn
122
123
 
123
124
  # If create_if_none flag is set to true, than I'll create a config file
124
125
  # on the current directory with the default configuration.
125
- conf = {"config"=>{:verbose=>false, :output=>"tabular", :mvc=>"", :gemfile_scan=>false, :gemfile_name=>"", :filename=>nil, :debug=>false, :exit_on_warn => false, :enabled_checks=> Dawn::Kb::BasicCheck::ALLOWED_FAMILIES}}
126
+ conf = {:verbose=>false, :output=>"tabular", :mvc=>"", :gemfile_scan=>false, :gemfile_name=>"", :filename=>nil, :debug=>false, :exit_on_warn => false, :enabled_checks=> Dawn::Kb::BasicCheck::ALLOWED_FAMILIES}
126
127
 
127
128
  # Calculate the conf file path
128
129
  conf_path = File.expand_path('~') +'/.'+conf_name
@@ -131,6 +132,7 @@ module Dawn
131
132
  File.open(conf_path, 'w') do |f|
132
133
  rv = f.write(YAML.dump(conf))
133
134
  end
135
+ debug_me(conf_path)
134
136
 
135
137
  conf_path
136
138
  end
@@ -138,6 +140,7 @@ module Dawn
138
140
  def self.read_conf(file=nil)
139
141
  conf = {:verbose=>false, :output=>"tabular", :mvc=>"", :gemfile_scan=>false, :gemfile_name=>"", :filename=>nil, :debug=>false, :exit_on_warn => false, :enabled_checks=> Dawn::Kb::BasicCheck::ALLOWED_FAMILIES}
140
142
  begin
143
+ debug_me("returning a default config") if file.nil? or ! File.exist?(file)
141
144
  return conf if file.nil?
142
145
  file = file.chop if (not file.nil? and file.end_with? '/')
143
146
  return conf if ! File.exist?(file)
@@ -146,9 +149,9 @@ module Dawn
146
149
  return conf
147
150
  end
148
151
 
149
- c = YAML.load_file(file)
152
+ cf = YAML.load_file(file)
150
153
 
151
- cf = c["config"]
154
+ tm = cf[:telemetry]
152
155
  cc = cf[:enabled_checks]
153
156
 
154
157
  # TODO
@@ -157,6 +160,7 @@ module Dawn
157
160
  conf[:debug] = cf["debug"] unless cf["debug"].nil?
158
161
  conf[:output] = cf["output"] unless cf["output"].nil?
159
162
  conf[:enabled_checks] = cc unless cc.nil?
163
+ conf[:telemetry] = tm unless tm.nil?
160
164
 
161
165
  return conf
162
166
  end
@@ -1,9 +1,11 @@
1
+ require 'net/http'
2
+ require 'json'
3
+ require 'socket'
1
4
  # Statistics stuff
2
5
  # require 'code_metrics/statistics'
3
6
 
4
7
  module Dawn
5
8
  module Engine
6
- include Dawn::Utils
7
9
 
8
10
  attr_reader :target
9
11
  attr_reader :name
@@ -66,6 +68,9 @@ module Dawn
66
68
  @gemfile_lock_sudo = false
67
69
 
68
70
  set_target(dir) unless dir.nil?
71
+
72
+
73
+
69
74
  @ruby_version = get_ruby_version if dir.nil?
70
75
  @gemfile_lock = options[:gemfile_name] unless options[:gemfile_name].nil?
71
76
 
@@ -106,6 +111,8 @@ module Dawn
106
111
  # load_knowledge_base
107
112
  end
108
113
 
114
+
115
+
109
116
  def detect_views
110
117
  []
111
118
  end
@@ -264,6 +271,8 @@ module Dawn
264
271
  # otherwise
265
272
  def apply(name)
266
273
 
274
+ telemetry
275
+
267
276
  # FIXME.20140325
268
277
  # Now if no checks are loaded because knowledge base was not previously called, apply and apply_all proudly refuse to run.
269
278
  # Reason is simple, load_knowledge_base now needs enabled check array
@@ -285,10 +294,57 @@ module Dawn
285
294
  false
286
295
  end
287
296
 
297
+ def have_a_telemetry_id?
298
+ debug_me ($telemetry_id != "" and ! $telemetry_id.nil?)
299
+ return ($telemetry_id != "" and ! $telemetry_id.nil?)
300
+
301
+ end
302
+
303
+ def get_a_telemetry_id
304
+ return "" if ($telemetry_url == "" or $telemetry_url.nil?)
305
+ debug_me("T: " + $telemetry_url)
306
+
307
+ url = URI.parse($telemetry_url+"/new")
308
+ res = Net::HTTP.get_response(url)
309
+
310
+ return "" unless res.code.to_i == 200
311
+ return JSON.parse(res.body)["uuid"]
312
+ end
313
+
314
+ def telemetry
315
+ unless have_a_telemetry_id?
316
+ $telemetry_id = get_a_telemetry_id
317
+ $config[:telemetry][:id] = $telemetry_id
318
+ debug_me($config)
319
+ debug_me("saving config to " + $config_name)
320
+ File.open($config_name, 'w') { |f| f.write $config.to_yaml }
321
+ end
322
+
323
+ debug_me("Telemetry ID is: " + $telemetry_id)
324
+
325
+ uri=URI.parse($telemetry_url+"/"+$telemetry_id)
326
+ header = {'Content-Type': 'text/json'}
327
+ tele = { "kb_version" => Dawn::KnowledgeBase::VERSION ,
328
+ "ip" => Socket.ip_address_list.detect{|intf| intf.ipv4_private?}.ip_address,
329
+ "message"=> Dawn::KnowledgeBase
330
+ }
331
+ http = Net::HTTP.new(uri.host, uri.port)
332
+ request = Net::HTTP::Post.new(uri.request_uri, header)
333
+ request.body = tele.to_json
334
+
335
+ response=http.request(request)
336
+ debug_me(response.inspect)
337
+
338
+ return true
339
+
340
+ end
341
+
288
342
  def apply_all
289
343
  @scan_start = Time.now
290
344
  debug_me("SCAN STARTED: #{@scan_start}")
291
345
 
346
+ telemetry
347
+
292
348
  # FIXME.20140325
293
349
  # Now if no checks are loaded because knowledge base was not previously called, apply and apply_all proudly refuse to run.
294
350
  # Reason is simple, load_knowledge_base now needs enabled check array
@@ -4,8 +4,6 @@ module Dawn
4
4
  module Kb
5
5
  module BasicCheck
6
6
 
7
- include Dawn::Utils
8
-
9
7
  attr_reader :title
10
8
  attr_reader :name
11
9
  attr_reader :cve
@@ -56,11 +56,10 @@ module Dawn
56
56
  #
57
57
  # Last update: gio 29 nov 2018, 17.34.57, CET
58
58
  class KnowledgeBase
59
- include Dawn::Utils
60
59
  include Singleton
61
60
 
62
61
  @@path = ""
63
- @@error = ""
62
+ @error = ""
64
63
  @@enabled_checks = [:generic_check, :code_quality, :bulletin, :code_style, :owasp_top_10]
65
64
 
66
65
 
@@ -80,6 +79,7 @@ module Dawn
80
79
  attr_reader :security_checks
81
80
  attr_reader :descriptor
82
81
  attr_reader :path
82
+ attr_reader :error
83
83
 
84
84
  def initialize(options={})
85
85
  if $logger.nil?
@@ -90,7 +90,7 @@ module Dawn
90
90
  @path=@@path
91
91
  @enabled_checks = @@enabled_checks
92
92
 
93
- $logger.debug "KB root path is #{@path}"
93
+ debug_me "KB root path is #{@path}"
94
94
  end
95
95
 
96
96
  def self.enabled_checks= checks
@@ -112,7 +112,7 @@ module Dawn
112
112
 
113
113
 
114
114
  def find(name)
115
- $logger.debug "I'm asked to find #{name}"
115
+ debug_me "I'm asked to find #{name}"
116
116
  end
117
117
 
118
118
  def unpack
@@ -158,12 +158,12 @@ module Dawn
158
158
  # $path = File.join(Dir.pwd, "db")
159
159
 
160
160
  unless __valid?
161
- @@error = "An invalid library it has been found. Please use --recovery flag to force fresh install from dawnscanner.org"
161
+ @error = "An invalid library it has been found. Please use --recovery flag to force fresh install from dawnscanner.org"
162
162
  return []
163
163
  end
164
164
 
165
165
  unless __load?
166
- @@error = "The library must be consumed with dawnscanner up to v#{@descriptor[:kb][:api]}. You are using dawnscanner v#{Dawn::VERSION}"
166
+ @error = "The library must be consumed with dawnscanner up to v#{@descriptor[:kb][:api]}. You are using dawnscanner v#{Dawn::VERSION}"
167
167
  return []
168
168
  end
169
169
 
@@ -187,7 +187,7 @@ module Dawn
187
187
 
188
188
  end
189
189
 
190
- $logger.debug "#{@security_checks.count}"
190
+ debug_me "#{@security_checks.count}"
191
191
  return @security_checks
192
192
  end
193
193
 
@@ -236,7 +236,7 @@ module Dawn
236
236
 
237
237
  v = __verify_hash(hash_orig, hash_file)
238
238
  if v
239
- $logger.info("good kb.yaml file found. Reading knowledge base descriptor")
239
+ debug_me("good kb.yaml file found. Reading knowledge base descriptor")
240
240
  @descriptor = YAML.load(lines)
241
241
  else
242
242
  $logger.error("kb.yaml signature mismatch. Found #{hash_file} while expecting #{hash_orig}. Giving up")
@@ -263,7 +263,7 @@ module Dawn
263
263
  require "dawn/kb/version_check"
264
264
 
265
265
  vc = Dawn::Kb::VersionCheck.new
266
- return true if vc.is_higher?(api, v) # => true if v > api
266
+ return true if vc.is_higher?(v, api) # => true if v > api
267
267
  return false
268
268
  end
269
269
 
@@ -1,7 +1,7 @@
1
1
  module Dawn
2
- VERSION = "2.0.0.rc1"
3
- CODENAME = "Finn McMissile"
4
- RELEASE = "(development)"
5
- BUILD = "7"
6
- COMMIT = "g653723d"
2
+ VERSION = "2.0.0.rc2"
3
+ CODENAME = "Finn McMissile"
4
+ RELEASE = "(development)"
5
+ BUILD = "4"
6
+ COMMIT = "g95c13be"
7
7
  end
@@ -1,4 +1,3 @@
1
- require "dawn/utils"
2
1
  require "dawn/core"
3
2
  require "dawn/version"
4
3
  require "dawn/rails"
@@ -12,6 +11,7 @@ require "dawn/cli/dawn_cli"
12
11
 
13
12
  # KB
14
13
  require "dawn/knowledge_base"
15
- # Datamapper classes
16
- #require 'data_mapper'
17
- #require "dawn/registry"
14
+
15
+ # General purpose utilities
16
+ require "dawn/utils"
17
+ include Dawn::Utils
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dawnscanner
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0.rc1
4
+ version: 2.0.0.rc2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Paolo Perego
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-04-09 00:00:00.000000000 Z
11
+ date: 2019-04-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: cvss
@@ -287,6 +287,7 @@ files:
287
287
  - checksum/dawnscanner-1.6.6.gem.sha1
288
288
  - checksum/dawnscanner-1.6.7.gem.sha1
289
289
  - checksum/dawnscanner-1.6.8.gem.sha1
290
+ - checksum/dawnscanner-2.0.0.rc1.gem.sha1
290
291
  - code_of_conduct.md
291
292
  - dawnscanner.gemspec
292
293
  - doc/change.sh