brakeman 7.1.2 → 8.0.0
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 +4 -4
- data/CHANGES.md +11 -0
- data/README.md +1 -1
- data/bundle/load.rb +2 -2
- data/bundle/ruby/3.2.0/gems/erubi-1.13.1/CHANGELOG +111 -0
- data/bundle/ruby/3.2.0/gems/{erubis-2.7.0 → erubi-1.13.1}/MIT-LICENSE +1 -0
- data/bundle/ruby/3.2.0/gems/erubi-1.13.1/README.rdoc +151 -0
- data/bundle/ruby/3.2.0/gems/erubi-1.13.1/lib/erubi/capture_block.rb +91 -0
- data/bundle/ruby/3.2.0/gems/erubi-1.13.1/lib/erubi/capture_end.rb +58 -0
- data/bundle/ruby/3.2.0/gems/erubi-1.13.1/lib/erubi.rb +299 -0
- data/bundle/ruby/3.2.0/gems/{tilt-2.6.1 → tilt-2.7.0}/lib/tilt/asciidoc.rb +12 -5
- data/bundle/ruby/3.2.0/gems/{tilt-2.6.1 → tilt-2.7.0}/lib/tilt/babel.rb +5 -0
- data/bundle/ruby/3.2.0/gems/{tilt-2.6.1 → tilt-2.7.0}/lib/tilt/builder.rb +4 -0
- data/bundle/ruby/3.2.0/gems/{tilt-2.6.1 → tilt-2.7.0}/lib/tilt/coffee.rb +14 -4
- data/bundle/ruby/3.2.0/gems/{tilt-2.6.1 → tilt-2.7.0}/lib/tilt/commonmarker.rb +41 -0
- data/bundle/ruby/3.2.0/gems/tilt-2.7.0/lib/tilt/csv.rb +63 -0
- data/bundle/ruby/3.2.0/gems/tilt-2.7.0/lib/tilt/erb.rb +130 -0
- data/bundle/ruby/3.2.0/gems/{tilt-2.6.1 → tilt-2.7.0}/lib/tilt/erubi.rb +41 -8
- data/bundle/ruby/3.2.0/gems/{tilt-2.6.1 → tilt-2.7.0}/lib/tilt/etanni.rb +7 -0
- data/bundle/ruby/3.2.0/gems/{tilt-2.6.1 → tilt-2.7.0}/lib/tilt/haml.rb +67 -1
- data/bundle/ruby/3.2.0/gems/tilt-2.7.0/lib/tilt/kramdown.rb +59 -0
- data/bundle/ruby/3.2.0/gems/tilt-2.7.0/lib/tilt/liquid.rb +93 -0
- data/bundle/ruby/3.2.0/gems/{tilt-2.6.1 → tilt-2.7.0}/lib/tilt/livescript.rb +11 -4
- data/bundle/ruby/3.2.0/gems/{tilt-2.6.1 → tilt-2.7.0}/lib/tilt/mapping.rb +8 -8
- data/bundle/ruby/3.2.0/gems/{tilt-2.6.1 → tilt-2.7.0}/lib/tilt/markaby.rb +11 -2
- data/bundle/ruby/3.2.0/gems/{tilt-2.6.1 → tilt-2.7.0}/lib/tilt/nokogiri.rb +13 -2
- data/bundle/ruby/3.2.0/gems/tilt-2.7.0/lib/tilt/pandoc.rb +81 -0
- data/bundle/ruby/3.2.0/gems/{tilt-2.6.1 → tilt-2.7.0}/lib/tilt/pipeline.rb +6 -1
- data/bundle/ruby/3.2.0/gems/{tilt-2.6.1 → tilt-2.7.0}/lib/tilt/plain.rb +5 -1
- data/bundle/ruby/3.2.0/gems/{tilt-2.6.1 → tilt-2.7.0}/lib/tilt/prawn.rb +17 -6
- data/bundle/ruby/3.2.0/gems/tilt-2.7.0/lib/tilt/radius.rb +96 -0
- data/bundle/ruby/3.2.0/gems/tilt-2.7.0/lib/tilt/rdiscount.rb +82 -0
- data/bundle/ruby/3.2.0/gems/tilt-2.7.0/lib/tilt/rdoc.rb +33 -0
- data/bundle/ruby/3.2.0/gems/tilt-2.7.0/lib/tilt/redcarpet.rb +73 -0
- data/bundle/ruby/3.2.0/gems/tilt-2.7.0/lib/tilt/redcloth.rb +40 -0
- data/bundle/ruby/3.2.0/gems/tilt-2.7.0/lib/tilt/rst-pandoc.rb +33 -0
- data/bundle/ruby/3.2.0/gems/{tilt-2.6.1 → tilt-2.7.0}/lib/tilt/sass.rb +16 -3
- data/bundle/ruby/3.2.0/gems/tilt-2.7.0/lib/tilt/slim.rb +18 -0
- data/bundle/ruby/3.2.0/gems/{tilt-2.6.1 → tilt-2.7.0}/lib/tilt/string.rb +10 -2
- data/bundle/ruby/3.2.0/gems/{tilt-2.6.1 → tilt-2.7.0}/lib/tilt/template.rb +5 -5
- data/bundle/ruby/3.2.0/gems/{tilt-2.6.1 → tilt-2.7.0}/lib/tilt/typescript.rb +5 -0
- data/bundle/ruby/3.2.0/gems/tilt-2.7.0/lib/tilt/yajl.rb +91 -0
- data/bundle/ruby/3.2.0/gems/{tilt-2.6.1 → tilt-2.7.0}/lib/tilt.rb +1 -2
- data/lib/brakeman/app_tree.rb +7 -2
- data/lib/brakeman/checks/check_model_attributes.rb +1 -1
- data/lib/brakeman/checks/check_render.rb +1 -27
- data/lib/brakeman/checks/check_render_rce.rb +43 -0
- data/lib/brakeman/checks/check_session_settings.rb +1 -1
- data/lib/brakeman/checks.rb +31 -25
- data/lib/brakeman/commandline.rb +6 -1
- data/lib/brakeman/file_parser.rb +3 -2
- data/lib/brakeman/logger.rb +264 -0
- data/lib/brakeman/options.rb +0 -9
- data/lib/brakeman/parsers/rails_erubi.rb +82 -0
- data/lib/brakeman/parsers/template_parser.rb +7 -15
- data/lib/brakeman/processor.rb +2 -2
- data/lib/brakeman/processors/controller_alias_processor.rb +1 -1
- data/lib/brakeman/processors/controller_processor.rb +3 -3
- data/lib/brakeman/processors/{erubis_template_processor.rb → erubi_template_procesor.rb} +3 -3
- data/lib/brakeman/processors/lib/rails2_config_processor.rb +4 -3
- data/lib/brakeman/processors/lib/rails2_route_processor.rb +1 -1
- data/lib/brakeman/processors/lib/render_helper.rb +1 -1
- data/lib/brakeman/processors/lib/render_path.rb +1 -1
- data/lib/brakeman/processors/model_processor.rb +1 -1
- data/lib/brakeman/report/ignore/config.rb +1 -1
- data/lib/brakeman/scanner.rb +25 -49
- data/lib/brakeman/tracker/collection.rb +12 -2
- data/lib/brakeman/tracker/config.rb +17 -13
- data/lib/brakeman/tracker/constants.rb +17 -2
- data/lib/brakeman/tracker/controller.rb +1 -1
- data/lib/brakeman/tracker.rb +7 -15
- data/lib/brakeman/version.rb +1 -1
- data/lib/brakeman.rb +89 -49
- metadata +51 -80
- data/bundle/ruby/3.2.0/gems/erubis-2.7.0/CHANGES.txt +0 -828
- data/bundle/ruby/3.2.0/gems/erubis-2.7.0/README.txt +0 -102
- data/bundle/ruby/3.2.0/gems/erubis-2.7.0/contrib/erubis +0 -3468
- data/bundle/ruby/3.2.0/gems/erubis-2.7.0/contrib/erubis-run.rb +0 -132
- data/bundle/ruby/3.2.0/gems/erubis-2.7.0/contrib/inline-require +0 -179
- data/bundle/ruby/3.2.0/gems/erubis-2.7.0/lib/erubis/context.rb +0 -83
- data/bundle/ruby/3.2.0/gems/erubis-2.7.0/lib/erubis/converter.rb +0 -357
- data/bundle/ruby/3.2.0/gems/erubis-2.7.0/lib/erubis/engine/ec.rb +0 -117
- data/bundle/ruby/3.2.0/gems/erubis-2.7.0/lib/erubis/engine/ecpp.rb +0 -113
- data/bundle/ruby/3.2.0/gems/erubis-2.7.0/lib/erubis/engine/ejava.rb +0 -110
- data/bundle/ruby/3.2.0/gems/erubis-2.7.0/lib/erubis/engine/ejavascript.rb +0 -119
- data/bundle/ruby/3.2.0/gems/erubis-2.7.0/lib/erubis/engine/enhanced.rb +0 -126
- data/bundle/ruby/3.2.0/gems/erubis-2.7.0/lib/erubis/engine/eperl.rb +0 -95
- data/bundle/ruby/3.2.0/gems/erubis-2.7.0/lib/erubis/engine/ephp.rb +0 -99
- data/bundle/ruby/3.2.0/gems/erubis-2.7.0/lib/erubis/engine/eruby.rb +0 -125
- data/bundle/ruby/3.2.0/gems/erubis-2.7.0/lib/erubis/engine/escheme.rb +0 -114
- data/bundle/ruby/3.2.0/gems/erubis-2.7.0/lib/erubis/engine/optimized.rb +0 -127
- data/bundle/ruby/3.2.0/gems/erubis-2.7.0/lib/erubis/engine.rb +0 -120
- data/bundle/ruby/3.2.0/gems/erubis-2.7.0/lib/erubis/enhancer.rb +0 -723
- data/bundle/ruby/3.2.0/gems/erubis-2.7.0/lib/erubis/error.rb +0 -23
- data/bundle/ruby/3.2.0/gems/erubis-2.7.0/lib/erubis/evaluator.rb +0 -88
- data/bundle/ruby/3.2.0/gems/erubis-2.7.0/lib/erubis/generator.rb +0 -85
- data/bundle/ruby/3.2.0/gems/erubis-2.7.0/lib/erubis/helper.rb +0 -47
- data/bundle/ruby/3.2.0/gems/erubis-2.7.0/lib/erubis/helpers/rails_form_helper.rb +0 -197
- data/bundle/ruby/3.2.0/gems/erubis-2.7.0/lib/erubis/helpers/rails_helper.rb +0 -353
- data/bundle/ruby/3.2.0/gems/erubis-2.7.0/lib/erubis/local-setting.rb +0 -9
- data/bundle/ruby/3.2.0/gems/erubis-2.7.0/lib/erubis/main.rb +0 -516
- data/bundle/ruby/3.2.0/gems/erubis-2.7.0/lib/erubis/preprocessing.rb +0 -58
- data/bundle/ruby/3.2.0/gems/erubis-2.7.0/lib/erubis/tiny.rb +0 -144
- data/bundle/ruby/3.2.0/gems/erubis-2.7.0/lib/erubis/util.rb +0 -22
- data/bundle/ruby/3.2.0/gems/erubis-2.7.0/lib/erubis.rb +0 -73
- data/bundle/ruby/3.2.0/gems/erubis-2.7.0/setup.rb +0 -1331
- data/bundle/ruby/3.2.0/gems/tilt-2.6.1/lib/tilt/creole.rb +0 -16
- data/bundle/ruby/3.2.0/gems/tilt-2.6.1/lib/tilt/csv.rb +0 -53
- data/bundle/ruby/3.2.0/gems/tilt-2.6.1/lib/tilt/erb.rb +0 -65
- data/bundle/ruby/3.2.0/gems/tilt-2.6.1/lib/tilt/kramdown.rb +0 -13
- data/bundle/ruby/3.2.0/gems/tilt-2.6.1/lib/tilt/liquid.rb +0 -37
- data/bundle/ruby/3.2.0/gems/tilt-2.6.1/lib/tilt/pandoc.rb +0 -39
- data/bundle/ruby/3.2.0/gems/tilt-2.6.1/lib/tilt/radius.rb +0 -41
- data/bundle/ruby/3.2.0/gems/tilt-2.6.1/lib/tilt/rdiscount.rb +0 -23
- data/bundle/ruby/3.2.0/gems/tilt-2.6.1/lib/tilt/rdoc.rb +0 -11
- data/bundle/ruby/3.2.0/gems/tilt-2.6.1/lib/tilt/redcarpet.rb +0 -31
- data/bundle/ruby/3.2.0/gems/tilt-2.6.1/lib/tilt/redcloth.rb +0 -13
- data/bundle/ruby/3.2.0/gems/tilt-2.6.1/lib/tilt/rst-pandoc.rb +0 -10
- data/bundle/ruby/3.2.0/gems/tilt-2.6.1/lib/tilt/slim.rb +0 -5
- data/bundle/ruby/3.2.0/gems/tilt-2.6.1/lib/tilt/yajl.rb +0 -81
- data/lib/brakeman/parsers/erubis_patch.rb +0 -11
- data/lib/brakeman/parsers/rails2_erubis.rb +0 -9
- data/lib/brakeman/parsers/rails2_xss_plugin_erubis.rb +0 -52
- data/lib/brakeman/parsers/rails3_erubis.rb +0 -85
- /data/bundle/ruby/3.2.0/gems/{tilt-2.6.1 → tilt-2.7.0}/COPYING +0 -0
- /data/bundle/ruby/3.2.0/gems/{tilt-2.6.1 → tilt-2.7.0}/lib/tilt/_emacs_org.rb +0 -0
- /data/bundle/ruby/3.2.0/gems/{tilt-2.6.1 → tilt-2.7.0}/lib/tilt/_handlebars.rb +0 -0
- /data/bundle/ruby/3.2.0/gems/{tilt-2.6.1 → tilt-2.7.0}/lib/tilt/_jbuilder.rb +0 -0
- /data/bundle/ruby/3.2.0/gems/{tilt-2.6.1 → tilt-2.7.0}/lib/tilt/_org.rb +0 -0
- /data/bundle/ruby/3.2.0/gems/{tilt-2.6.1 → tilt-2.7.0}/lib/tilt/cli.rb +0 -0
data/lib/brakeman.rb
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
require 'set'
|
|
2
|
+
require 'brakeman/logger'
|
|
2
3
|
require 'brakeman/version'
|
|
3
4
|
|
|
4
5
|
module Brakeman
|
|
@@ -32,6 +33,7 @@ module Brakeman
|
|
|
32
33
|
@quiet = false
|
|
33
34
|
@loaded_dependencies = []
|
|
34
35
|
@vendored_paths = false
|
|
36
|
+
@logger = nil
|
|
35
37
|
|
|
36
38
|
#Run Brakeman scan. Returns Tracker object.
|
|
37
39
|
#
|
|
@@ -52,7 +54,6 @@ module Brakeman
|
|
|
52
54
|
# * :highlight_user_input - highlight user input in reported warnings (default: true)
|
|
53
55
|
# * :html_style - path to CSS file
|
|
54
56
|
# * :ignore_model_output - consider models safe (default: false)
|
|
55
|
-
# * :index_libs - add libraries to call index (default: true)
|
|
56
57
|
# * :interprocedural - limited interprocedural processing of method calls (default: false)
|
|
57
58
|
# * :message_limit - limit length of messages
|
|
58
59
|
# * :min_confidence - minimum confidence (0-2, 0 is highest)
|
|
@@ -71,7 +72,6 @@ module Brakeman
|
|
|
71
72
|
# * :safe_methods - array of methods to consider safe
|
|
72
73
|
# * :show_ignored - Display warnings that are usually ignored
|
|
73
74
|
# * :sql_safe_methods - array of sql sanitization methods to consider safe
|
|
74
|
-
# * :skip_libs - do not process lib/ directory (default: false)
|
|
75
75
|
# * :skip_vendor - do not process vendor/ directory (default: true)
|
|
76
76
|
# * :skip_checks - checks not to run (run all if not specified)
|
|
77
77
|
# * :absolute_paths - show absolute path of each file (default: false)
|
|
@@ -79,6 +79,10 @@ module Brakeman
|
|
|
79
79
|
#
|
|
80
80
|
#Alternatively, just supply a path as a string.
|
|
81
81
|
def self.run options
|
|
82
|
+
if not $stderr.tty? and options[:report_progress].nil?
|
|
83
|
+
options[:report_progress] = false
|
|
84
|
+
end
|
|
85
|
+
|
|
82
86
|
options = set_options options
|
|
83
87
|
|
|
84
88
|
@quiet = !!options[:quiet]
|
|
@@ -88,18 +92,37 @@ module Brakeman
|
|
|
88
92
|
options[:report_progress] = false
|
|
89
93
|
end
|
|
90
94
|
|
|
95
|
+
@logger = options[:logger] || set_default_logger(options)
|
|
96
|
+
|
|
91
97
|
if options[:use_prism]
|
|
92
98
|
begin
|
|
93
99
|
require 'prism'
|
|
94
|
-
notify '[Notice] Using Prism parser'
|
|
95
100
|
rescue LoadError => e
|
|
96
|
-
Brakeman.
|
|
101
|
+
Brakeman.alert "Asked to use Prism, but failed to load: #{e}"
|
|
97
102
|
end
|
|
98
103
|
end
|
|
99
104
|
|
|
105
|
+
Brakeman.announce "Brakeman v#{Brakeman::Version}"
|
|
106
|
+
|
|
100
107
|
scan options
|
|
101
108
|
end
|
|
102
109
|
|
|
110
|
+
def self.logger
|
|
111
|
+
@logger
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
def self.logger= log
|
|
115
|
+
@logger = log
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
def self.set_default_logger(options = {})
|
|
119
|
+
@logger = Brakeman::Logger.get_logger(options)
|
|
120
|
+
end
|
|
121
|
+
|
|
122
|
+
def self.cleanup(newline = true)
|
|
123
|
+
@logger.cleanup(newline) if @logger
|
|
124
|
+
end
|
|
125
|
+
|
|
103
126
|
#Sets up options for run, checks given application path
|
|
104
127
|
def self.set_options options
|
|
105
128
|
if options.is_a? String
|
|
@@ -152,6 +175,9 @@ module Brakeman
|
|
|
152
175
|
require 'yaml'
|
|
153
176
|
options = YAML.safe_load_file config, permitted_classes: [Symbol], symbolize_names: true
|
|
154
177
|
|
|
178
|
+
# Brakeman.logger is probably not set yet
|
|
179
|
+
logger = Brakeman::Logger.get_logger(options || line_options)
|
|
180
|
+
|
|
155
181
|
if options
|
|
156
182
|
options.each { |k, v| options[k] = Set.new v if v.is_a? Array }
|
|
157
183
|
|
|
@@ -162,15 +188,16 @@ module Brakeman
|
|
|
162
188
|
if options.include? :additional_checks_path
|
|
163
189
|
options.delete :additional_checks_path
|
|
164
190
|
|
|
165
|
-
|
|
191
|
+
logger.alert 'Ignoring additional check paths in config file. Use --allow-check-paths-in-config to allow' unless (options[:quiet] || quiet)
|
|
166
192
|
end
|
|
167
193
|
end
|
|
168
194
|
|
|
169
195
|
# notify if options[:quiet] and quiet is nil||false
|
|
170
|
-
|
|
196
|
+
# potentially remove these checks now that logger is used
|
|
197
|
+
logger.alert "Using configuration in #{config}" unless (options[:quiet] || quiet)
|
|
171
198
|
options
|
|
172
199
|
else
|
|
173
|
-
|
|
200
|
+
logger.alert "Empty configuration file: #{config}" unless quiet
|
|
174
201
|
{}
|
|
175
202
|
end
|
|
176
203
|
else
|
|
@@ -209,7 +236,6 @@ module Brakeman
|
|
|
209
236
|
:html_style => "#{File.expand_path(File.dirname(__FILE__))}/brakeman/format/style.css",
|
|
210
237
|
:ignore_model_output => false,
|
|
211
238
|
:ignore_redirect_to_model => true,
|
|
212
|
-
:index_libs => true,
|
|
213
239
|
:message_limit => 100,
|
|
214
240
|
:min_confidence => 2,
|
|
215
241
|
:output_color => true,
|
|
@@ -367,6 +393,12 @@ module Brakeman
|
|
|
367
393
|
|
|
368
394
|
options.delete :create_config
|
|
369
395
|
|
|
396
|
+
if options[:logger]
|
|
397
|
+
@logger = options.delete(:logger)
|
|
398
|
+
else
|
|
399
|
+
set_default_logger(options)
|
|
400
|
+
end
|
|
401
|
+
|
|
370
402
|
options.each do |k,v|
|
|
371
403
|
if v.is_a? Set
|
|
372
404
|
options[k] = v.to_a
|
|
@@ -377,9 +409,10 @@ module Brakeman
|
|
|
377
409
|
File.open file, "w" do |f|
|
|
378
410
|
YAML.dump options, f
|
|
379
411
|
end
|
|
380
|
-
|
|
412
|
+
|
|
413
|
+
announce "Output configuration to #{file}"
|
|
381
414
|
else
|
|
382
|
-
|
|
415
|
+
$stdout.puts YAML.dump(options)
|
|
383
416
|
end
|
|
384
417
|
end
|
|
385
418
|
|
|
@@ -394,43 +427,39 @@ module Brakeman
|
|
|
394
427
|
#Run a scan. Generally called from Brakeman.run instead of directly.
|
|
395
428
|
def self.scan options
|
|
396
429
|
#Load scanner
|
|
397
|
-
|
|
430
|
+
scanner, tracker = nil
|
|
398
431
|
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
432
|
+
process_step 'Loading scanner' do
|
|
433
|
+
begin
|
|
434
|
+
require 'brakeman/scanner'
|
|
435
|
+
rescue LoadError
|
|
436
|
+
raise NoBrakemanError, 'Cannot find lib/ directory.'
|
|
437
|
+
end
|
|
404
438
|
|
|
405
|
-
|
|
439
|
+
add_external_checks options
|
|
406
440
|
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
441
|
+
#Start scanning
|
|
442
|
+
scanner = Scanner.new options
|
|
443
|
+
tracker = scanner.tracker
|
|
410
444
|
|
|
411
|
-
|
|
445
|
+
check_for_missing_checks options[:run_checks], options[:skip_checks], options[:enable_checks]
|
|
446
|
+
end
|
|
412
447
|
|
|
413
|
-
|
|
448
|
+
logger.announce "Scanning #{tracker.app_path}"
|
|
414
449
|
scanner.process
|
|
415
450
|
|
|
416
|
-
if options[:parallel_checks]
|
|
417
|
-
notify "Running checks in parallel..."
|
|
418
|
-
else
|
|
419
|
-
notify "Running checks..."
|
|
420
|
-
end
|
|
421
|
-
|
|
422
451
|
tracker.run_checks
|
|
423
452
|
|
|
424
453
|
self.filter_warnings tracker, options
|
|
425
454
|
|
|
426
455
|
if options[:output_files]
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
456
|
+
process_step 'Generating report' do
|
|
457
|
+
write_report_to_files tracker, options[:output_files]
|
|
458
|
+
end
|
|
430
459
|
elsif options[:print_report]
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
460
|
+
process_step 'Generating report' do
|
|
461
|
+
write_report_to_formats tracker, options[:output_formats]
|
|
462
|
+
end
|
|
434
463
|
end
|
|
435
464
|
|
|
436
465
|
tracker
|
|
@@ -449,7 +478,8 @@ module Brakeman
|
|
|
449
478
|
File.open output_file, "w" do |f|
|
|
450
479
|
f.write tracker.report.format(tracker.options[:output_formats][idx])
|
|
451
480
|
end
|
|
452
|
-
|
|
481
|
+
|
|
482
|
+
logger.announce "Report saved in '#{output_file}'"
|
|
453
483
|
end
|
|
454
484
|
end
|
|
455
485
|
private_class_method :write_report_to_files
|
|
@@ -493,12 +523,16 @@ module Brakeman
|
|
|
493
523
|
Rescanner.new(options, tracker.processor, files).recheck
|
|
494
524
|
end
|
|
495
525
|
|
|
496
|
-
def self.
|
|
497
|
-
|
|
526
|
+
def self.announce message
|
|
527
|
+
logger.announce message
|
|
528
|
+
end
|
|
529
|
+
|
|
530
|
+
def self.alert message
|
|
531
|
+
logger.alert message
|
|
498
532
|
end
|
|
499
533
|
|
|
500
534
|
def self.debug message
|
|
501
|
-
|
|
535
|
+
logger.debug message
|
|
502
536
|
end
|
|
503
537
|
|
|
504
538
|
# Compare JSON output from a previous scan and return the diff of the two scans
|
|
@@ -510,7 +544,7 @@ module Brakeman
|
|
|
510
544
|
begin
|
|
511
545
|
previous_results = JSON.parse(File.read(options[:previous_results_json]), :symbolize_names => true)[:warnings]
|
|
512
546
|
rescue JSON::ParserError
|
|
513
|
-
self.
|
|
547
|
+
self.alert "Error parsing comparison file: #{options[:previous_results_json]}"
|
|
514
548
|
exit!
|
|
515
549
|
end
|
|
516
550
|
|
|
@@ -565,6 +599,7 @@ module Brakeman
|
|
|
565
599
|
|
|
566
600
|
def self.filter_warnings tracker, options
|
|
567
601
|
require 'brakeman/report/ignore/config'
|
|
602
|
+
config = nil
|
|
568
603
|
|
|
569
604
|
app_tree = Brakeman::AppTree.from_options(options)
|
|
570
605
|
|
|
@@ -576,16 +611,17 @@ module Brakeman
|
|
|
576
611
|
return
|
|
577
612
|
end
|
|
578
613
|
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
614
|
+
process_step "Filtering warnings..." do
|
|
615
|
+
if options[:interactive_ignore]
|
|
616
|
+
require 'brakeman/report/ignore/interactive'
|
|
617
|
+
logger.cleanup
|
|
618
|
+
config = InteractiveIgnorer.new(file, tracker.warnings).start
|
|
619
|
+
else
|
|
620
|
+
logger.announce "Using '#{file}' to filter warnings"
|
|
621
|
+
config = IgnoreConfig.new(file, tracker.warnings)
|
|
622
|
+
config.read_from_file
|
|
623
|
+
config.filter_ignored
|
|
624
|
+
end
|
|
589
625
|
end
|
|
590
626
|
|
|
591
627
|
tracker.ignored_filter = config
|
|
@@ -615,6 +651,10 @@ module Brakeman
|
|
|
615
651
|
@quiet = val
|
|
616
652
|
end
|
|
617
653
|
|
|
654
|
+
def self.process_step(description, &)
|
|
655
|
+
logger.context(description, &)
|
|
656
|
+
end
|
|
657
|
+
|
|
618
658
|
class DependencyError < RuntimeError; end
|
|
619
659
|
class NoBrakemanError < RuntimeError; end
|
|
620
660
|
class NoApplication < RuntimeError; end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: brakeman
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version:
|
|
4
|
+
version: 8.0.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Justin Collins
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2026-01-29 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: racc
|
|
@@ -50,39 +50,12 @@ files:
|
|
|
50
50
|
- bundle/ruby/3.2.0/gems/csv-3.3.5/lib/csv/table.rb
|
|
51
51
|
- bundle/ruby/3.2.0/gems/csv-3.3.5/lib/csv/version.rb
|
|
52
52
|
- bundle/ruby/3.2.0/gems/csv-3.3.5/lib/csv/writer.rb
|
|
53
|
-
- bundle/ruby/3.2.0/gems/
|
|
54
|
-
- bundle/ruby/3.2.0/gems/
|
|
55
|
-
- bundle/ruby/3.2.0/gems/
|
|
56
|
-
- bundle/ruby/3.2.0/gems/
|
|
57
|
-
- bundle/ruby/3.2.0/gems/
|
|
58
|
-
- bundle/ruby/3.2.0/gems/
|
|
59
|
-
- bundle/ruby/3.2.0/gems/erubis-2.7.0/lib/erubis.rb
|
|
60
|
-
- bundle/ruby/3.2.0/gems/erubis-2.7.0/lib/erubis/context.rb
|
|
61
|
-
- bundle/ruby/3.2.0/gems/erubis-2.7.0/lib/erubis/converter.rb
|
|
62
|
-
- bundle/ruby/3.2.0/gems/erubis-2.7.0/lib/erubis/engine.rb
|
|
63
|
-
- bundle/ruby/3.2.0/gems/erubis-2.7.0/lib/erubis/engine/ec.rb
|
|
64
|
-
- bundle/ruby/3.2.0/gems/erubis-2.7.0/lib/erubis/engine/ecpp.rb
|
|
65
|
-
- bundle/ruby/3.2.0/gems/erubis-2.7.0/lib/erubis/engine/ejava.rb
|
|
66
|
-
- bundle/ruby/3.2.0/gems/erubis-2.7.0/lib/erubis/engine/ejavascript.rb
|
|
67
|
-
- bundle/ruby/3.2.0/gems/erubis-2.7.0/lib/erubis/engine/enhanced.rb
|
|
68
|
-
- bundle/ruby/3.2.0/gems/erubis-2.7.0/lib/erubis/engine/eperl.rb
|
|
69
|
-
- bundle/ruby/3.2.0/gems/erubis-2.7.0/lib/erubis/engine/ephp.rb
|
|
70
|
-
- bundle/ruby/3.2.0/gems/erubis-2.7.0/lib/erubis/engine/eruby.rb
|
|
71
|
-
- bundle/ruby/3.2.0/gems/erubis-2.7.0/lib/erubis/engine/escheme.rb
|
|
72
|
-
- bundle/ruby/3.2.0/gems/erubis-2.7.0/lib/erubis/engine/optimized.rb
|
|
73
|
-
- bundle/ruby/3.2.0/gems/erubis-2.7.0/lib/erubis/enhancer.rb
|
|
74
|
-
- bundle/ruby/3.2.0/gems/erubis-2.7.0/lib/erubis/error.rb
|
|
75
|
-
- bundle/ruby/3.2.0/gems/erubis-2.7.0/lib/erubis/evaluator.rb
|
|
76
|
-
- bundle/ruby/3.2.0/gems/erubis-2.7.0/lib/erubis/generator.rb
|
|
77
|
-
- bundle/ruby/3.2.0/gems/erubis-2.7.0/lib/erubis/helper.rb
|
|
78
|
-
- bundle/ruby/3.2.0/gems/erubis-2.7.0/lib/erubis/helpers/rails_form_helper.rb
|
|
79
|
-
- bundle/ruby/3.2.0/gems/erubis-2.7.0/lib/erubis/helpers/rails_helper.rb
|
|
80
|
-
- bundle/ruby/3.2.0/gems/erubis-2.7.0/lib/erubis/local-setting.rb
|
|
81
|
-
- bundle/ruby/3.2.0/gems/erubis-2.7.0/lib/erubis/main.rb
|
|
82
|
-
- bundle/ruby/3.2.0/gems/erubis-2.7.0/lib/erubis/preprocessing.rb
|
|
83
|
-
- bundle/ruby/3.2.0/gems/erubis-2.7.0/lib/erubis/tiny.rb
|
|
84
|
-
- bundle/ruby/3.2.0/gems/erubis-2.7.0/lib/erubis/util.rb
|
|
85
|
-
- bundle/ruby/3.2.0/gems/erubis-2.7.0/setup.rb
|
|
53
|
+
- bundle/ruby/3.2.0/gems/erubi-1.13.1/CHANGELOG
|
|
54
|
+
- bundle/ruby/3.2.0/gems/erubi-1.13.1/MIT-LICENSE
|
|
55
|
+
- bundle/ruby/3.2.0/gems/erubi-1.13.1/README.rdoc
|
|
56
|
+
- bundle/ruby/3.2.0/gems/erubi-1.13.1/lib/erubi.rb
|
|
57
|
+
- bundle/ruby/3.2.0/gems/erubi-1.13.1/lib/erubi/capture_block.rb
|
|
58
|
+
- bundle/ruby/3.2.0/gems/erubi-1.13.1/lib/erubi/capture_end.rb
|
|
86
59
|
- bundle/ruby/3.2.0/gems/haml-6.4.0/CHANGELOG.md
|
|
87
60
|
- bundle/ruby/3.2.0/gems/haml-6.4.0/FAQ.md
|
|
88
61
|
- bundle/ruby/3.2.0/gems/haml-6.4.0/Gemfile
|
|
@@ -408,46 +381,45 @@ files:
|
|
|
408
381
|
- bundle/ruby/3.2.0/gems/terminal-table-4.0.0/lib/terminal-table/util.rb
|
|
409
382
|
- bundle/ruby/3.2.0/gems/terminal-table-4.0.0/lib/terminal-table/version.rb
|
|
410
383
|
- bundle/ruby/3.2.0/gems/terminal-table-4.0.0/terminal-table.gemspec
|
|
411
|
-
- bundle/ruby/3.2.0/gems/tilt-2.
|
|
412
|
-
- bundle/ruby/3.2.0/gems/tilt-2.
|
|
413
|
-
- bundle/ruby/3.2.0/gems/tilt-2.
|
|
414
|
-
- bundle/ruby/3.2.0/gems/tilt-2.
|
|
415
|
-
- bundle/ruby/3.2.0/gems/tilt-2.
|
|
416
|
-
- bundle/ruby/3.2.0/gems/tilt-2.
|
|
417
|
-
- bundle/ruby/3.2.0/gems/tilt-2.
|
|
418
|
-
- bundle/ruby/3.2.0/gems/tilt-2.
|
|
419
|
-
- bundle/ruby/3.2.0/gems/tilt-2.
|
|
420
|
-
- bundle/ruby/3.2.0/gems/tilt-2.
|
|
421
|
-
- bundle/ruby/3.2.0/gems/tilt-2.
|
|
422
|
-
- bundle/ruby/3.2.0/gems/tilt-2.
|
|
423
|
-
- bundle/ruby/3.2.0/gems/tilt-2.
|
|
424
|
-
- bundle/ruby/3.2.0/gems/tilt-2.
|
|
425
|
-
- bundle/ruby/3.2.0/gems/tilt-2.
|
|
426
|
-
- bundle/ruby/3.2.0/gems/tilt-2.
|
|
427
|
-
- bundle/ruby/3.2.0/gems/tilt-2.
|
|
428
|
-
- bundle/ruby/3.2.0/gems/tilt-2.
|
|
429
|
-
- bundle/ruby/3.2.0/gems/tilt-2.
|
|
430
|
-
- bundle/ruby/3.2.0/gems/tilt-2.
|
|
431
|
-
- bundle/ruby/3.2.0/gems/tilt-2.
|
|
432
|
-
- bundle/ruby/3.2.0/gems/tilt-2.
|
|
433
|
-
- bundle/ruby/3.2.0/gems/tilt-2.
|
|
434
|
-
- bundle/ruby/3.2.0/gems/tilt-2.
|
|
435
|
-
- bundle/ruby/3.2.0/gems/tilt-2.
|
|
436
|
-
- bundle/ruby/3.2.0/gems/tilt-2.
|
|
437
|
-
- bundle/ruby/3.2.0/gems/tilt-2.
|
|
438
|
-
- bundle/ruby/3.2.0/gems/tilt-2.
|
|
439
|
-
- bundle/ruby/3.2.0/gems/tilt-2.
|
|
440
|
-
- bundle/ruby/3.2.0/gems/tilt-2.
|
|
441
|
-
- bundle/ruby/3.2.0/gems/tilt-2.
|
|
442
|
-
- bundle/ruby/3.2.0/gems/tilt-2.
|
|
443
|
-
- bundle/ruby/3.2.0/gems/tilt-2.
|
|
444
|
-
- bundle/ruby/3.2.0/gems/tilt-2.
|
|
445
|
-
- bundle/ruby/3.2.0/gems/tilt-2.
|
|
446
|
-
- bundle/ruby/3.2.0/gems/tilt-2.
|
|
447
|
-
- bundle/ruby/3.2.0/gems/tilt-2.
|
|
448
|
-
- bundle/ruby/3.2.0/gems/tilt-2.
|
|
449
|
-
- bundle/ruby/3.2.0/gems/tilt-2.
|
|
450
|
-
- bundle/ruby/3.2.0/gems/tilt-2.6.1/lib/tilt/yajl.rb
|
|
384
|
+
- bundle/ruby/3.2.0/gems/tilt-2.7.0/COPYING
|
|
385
|
+
- bundle/ruby/3.2.0/gems/tilt-2.7.0/lib/tilt.rb
|
|
386
|
+
- bundle/ruby/3.2.0/gems/tilt-2.7.0/lib/tilt/_emacs_org.rb
|
|
387
|
+
- bundle/ruby/3.2.0/gems/tilt-2.7.0/lib/tilt/_handlebars.rb
|
|
388
|
+
- bundle/ruby/3.2.0/gems/tilt-2.7.0/lib/tilt/_jbuilder.rb
|
|
389
|
+
- bundle/ruby/3.2.0/gems/tilt-2.7.0/lib/tilt/_org.rb
|
|
390
|
+
- bundle/ruby/3.2.0/gems/tilt-2.7.0/lib/tilt/asciidoc.rb
|
|
391
|
+
- bundle/ruby/3.2.0/gems/tilt-2.7.0/lib/tilt/babel.rb
|
|
392
|
+
- bundle/ruby/3.2.0/gems/tilt-2.7.0/lib/tilt/builder.rb
|
|
393
|
+
- bundle/ruby/3.2.0/gems/tilt-2.7.0/lib/tilt/cli.rb
|
|
394
|
+
- bundle/ruby/3.2.0/gems/tilt-2.7.0/lib/tilt/coffee.rb
|
|
395
|
+
- bundle/ruby/3.2.0/gems/tilt-2.7.0/lib/tilt/commonmarker.rb
|
|
396
|
+
- bundle/ruby/3.2.0/gems/tilt-2.7.0/lib/tilt/csv.rb
|
|
397
|
+
- bundle/ruby/3.2.0/gems/tilt-2.7.0/lib/tilt/erb.rb
|
|
398
|
+
- bundle/ruby/3.2.0/gems/tilt-2.7.0/lib/tilt/erubi.rb
|
|
399
|
+
- bundle/ruby/3.2.0/gems/tilt-2.7.0/lib/tilt/etanni.rb
|
|
400
|
+
- bundle/ruby/3.2.0/gems/tilt-2.7.0/lib/tilt/haml.rb
|
|
401
|
+
- bundle/ruby/3.2.0/gems/tilt-2.7.0/lib/tilt/kramdown.rb
|
|
402
|
+
- bundle/ruby/3.2.0/gems/tilt-2.7.0/lib/tilt/liquid.rb
|
|
403
|
+
- bundle/ruby/3.2.0/gems/tilt-2.7.0/lib/tilt/livescript.rb
|
|
404
|
+
- bundle/ruby/3.2.0/gems/tilt-2.7.0/lib/tilt/mapping.rb
|
|
405
|
+
- bundle/ruby/3.2.0/gems/tilt-2.7.0/lib/tilt/markaby.rb
|
|
406
|
+
- bundle/ruby/3.2.0/gems/tilt-2.7.0/lib/tilt/nokogiri.rb
|
|
407
|
+
- bundle/ruby/3.2.0/gems/tilt-2.7.0/lib/tilt/pandoc.rb
|
|
408
|
+
- bundle/ruby/3.2.0/gems/tilt-2.7.0/lib/tilt/pipeline.rb
|
|
409
|
+
- bundle/ruby/3.2.0/gems/tilt-2.7.0/lib/tilt/plain.rb
|
|
410
|
+
- bundle/ruby/3.2.0/gems/tilt-2.7.0/lib/tilt/prawn.rb
|
|
411
|
+
- bundle/ruby/3.2.0/gems/tilt-2.7.0/lib/tilt/radius.rb
|
|
412
|
+
- bundle/ruby/3.2.0/gems/tilt-2.7.0/lib/tilt/rdiscount.rb
|
|
413
|
+
- bundle/ruby/3.2.0/gems/tilt-2.7.0/lib/tilt/rdoc.rb
|
|
414
|
+
- bundle/ruby/3.2.0/gems/tilt-2.7.0/lib/tilt/redcarpet.rb
|
|
415
|
+
- bundle/ruby/3.2.0/gems/tilt-2.7.0/lib/tilt/redcloth.rb
|
|
416
|
+
- bundle/ruby/3.2.0/gems/tilt-2.7.0/lib/tilt/rst-pandoc.rb
|
|
417
|
+
- bundle/ruby/3.2.0/gems/tilt-2.7.0/lib/tilt/sass.rb
|
|
418
|
+
- bundle/ruby/3.2.0/gems/tilt-2.7.0/lib/tilt/slim.rb
|
|
419
|
+
- bundle/ruby/3.2.0/gems/tilt-2.7.0/lib/tilt/string.rb
|
|
420
|
+
- bundle/ruby/3.2.0/gems/tilt-2.7.0/lib/tilt/template.rb
|
|
421
|
+
- bundle/ruby/3.2.0/gems/tilt-2.7.0/lib/tilt/typescript.rb
|
|
422
|
+
- bundle/ruby/3.2.0/gems/tilt-2.7.0/lib/tilt/yajl.rb
|
|
451
423
|
- bundle/ruby/3.2.0/gems/unicode-display_width-3.2.0/CHANGELOG.md
|
|
452
424
|
- bundle/ruby/3.2.0/gems/unicode-display_width-3.2.0/MIT-LICENSE.txt
|
|
453
425
|
- bundle/ruby/3.2.0/gems/unicode-display_width-3.2.0/README.md
|
|
@@ -568,6 +540,7 @@ files:
|
|
|
568
540
|
- lib/brakeman/checks/check_render.rb
|
|
569
541
|
- lib/brakeman/checks/check_render_dos.rb
|
|
570
542
|
- lib/brakeman/checks/check_render_inline.rb
|
|
543
|
+
- lib/brakeman/checks/check_render_rce.rb
|
|
571
544
|
- lib/brakeman/checks/check_response_splitting.rb
|
|
572
545
|
- lib/brakeman/checks/check_reverse_tabnabbing.rb
|
|
573
546
|
- lib/brakeman/checks/check_route_dos.rb
|
|
@@ -610,14 +583,12 @@ files:
|
|
|
610
583
|
- lib/brakeman/file_parser.rb
|
|
611
584
|
- lib/brakeman/file_path.rb
|
|
612
585
|
- lib/brakeman/format/style.css
|
|
586
|
+
- lib/brakeman/logger.rb
|
|
613
587
|
- lib/brakeman/messages.rb
|
|
614
588
|
- lib/brakeman/options.rb
|
|
615
|
-
- lib/brakeman/parsers/erubis_patch.rb
|
|
616
589
|
- lib/brakeman/parsers/haml6_embedded.rb
|
|
617
590
|
- lib/brakeman/parsers/haml_embedded.rb
|
|
618
|
-
- lib/brakeman/parsers/
|
|
619
|
-
- lib/brakeman/parsers/rails2_xss_plugin_erubis.rb
|
|
620
|
-
- lib/brakeman/parsers/rails3_erubis.rb
|
|
591
|
+
- lib/brakeman/parsers/rails_erubi.rb
|
|
621
592
|
- lib/brakeman/parsers/slim_embedded.rb
|
|
622
593
|
- lib/brakeman/parsers/template_parser.rb
|
|
623
594
|
- lib/brakeman/processor.rb
|
|
@@ -627,7 +598,7 @@ files:
|
|
|
627
598
|
- lib/brakeman/processors/controller_alias_processor.rb
|
|
628
599
|
- lib/brakeman/processors/controller_processor.rb
|
|
629
600
|
- lib/brakeman/processors/erb_template_processor.rb
|
|
630
|
-
- lib/brakeman/processors/
|
|
601
|
+
- lib/brakeman/processors/erubi_template_procesor.rb
|
|
631
602
|
- lib/brakeman/processors/gem_processor.rb
|
|
632
603
|
- lib/brakeman/processors/haml6_template_processor.rb
|
|
633
604
|
- lib/brakeman/processors/haml_template_processor.rb
|