brakeman 0.9.2 → 1.0.rc1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (70) hide show
  1. data/bin/brakeman +20 -5
  2. data/lib/brakeman.rb +54 -14
  3. data/lib/brakeman/call_index.rb +204 -0
  4. data/lib/{checks.rb → brakeman/checks.rb} +27 -12
  5. data/lib/{checks → brakeman/checks}/base_check.rb +36 -15
  6. data/lib/{checks → brakeman/checks}/check_basic_auth.rb +3 -3
  7. data/lib/{checks → brakeman/checks}/check_cross_site_scripting.rb +22 -19
  8. data/lib/{checks → brakeman/checks}/check_default_routes.rb +7 -5
  9. data/lib/{checks → brakeman/checks}/check_escape_function.rb +3 -4
  10. data/lib/{checks → brakeman/checks}/check_evaluation.rb +8 -6
  11. data/lib/{checks → brakeman/checks}/check_execute.rb +14 -14
  12. data/lib/brakeman/checks/check_file_access.rb +52 -0
  13. data/lib/{checks → brakeman/checks}/check_filter_skipping.rb +3 -4
  14. data/lib/{checks → brakeman/checks}/check_forgery_setting.rb +3 -3
  15. data/lib/{checks → brakeman/checks}/check_mail_to.rb +7 -6
  16. data/lib/{checks → brakeman/checks}/check_mass_assignment.rb +27 -7
  17. data/lib/{checks → brakeman/checks}/check_model_attributes.rb +7 -7
  18. data/lib/{checks → brakeman/checks}/check_nested_attributes.rb +3 -4
  19. data/lib/{checks → brakeman/checks}/check_quote_table_name.rb +6 -5
  20. data/lib/{checks → brakeman/checks}/check_redirect.rb +31 -15
  21. data/lib/{checks → brakeman/checks}/check_render.rb +5 -3
  22. data/lib/{checks → brakeman/checks}/check_response_splitting.rb +3 -4
  23. data/lib/brakeman/checks/check_send_file.rb +17 -0
  24. data/lib/{checks → brakeman/checks}/check_session_settings.rb +16 -12
  25. data/lib/{checks → brakeman/checks}/check_sql.rb +29 -17
  26. data/lib/{checks → brakeman/checks}/check_strip_tags.rb +6 -5
  27. data/lib/{checks → brakeman/checks}/check_translate_bug.rb +7 -6
  28. data/lib/{checks → brakeman/checks}/check_validation_regex.rb +3 -3
  29. data/lib/{checks → brakeman/checks}/check_without_protection.rb +8 -8
  30. data/lib/brakeman/processor.rb +93 -0
  31. data/lib/{processors → brakeman/processors}/alias_processor.rb +9 -7
  32. data/lib/{processors → brakeman/processors}/base_processor.rb +5 -5
  33. data/lib/brakeman/processors/config_processor.rb +14 -0
  34. data/lib/{processors → brakeman/processors}/controller_alias_processor.rb +8 -8
  35. data/lib/{processors → brakeman/processors}/controller_processor.rb +6 -6
  36. data/lib/{processors → brakeman/processors}/erb_template_processor.rb +2 -2
  37. data/lib/{processors → brakeman/processors}/erubis_template_processor.rb +2 -3
  38. data/lib/{processors → brakeman/processors}/gem_processor.rb +3 -2
  39. data/lib/{processors → brakeman/processors}/haml_template_processor.rb +3 -3
  40. data/lib/brakeman/processors/lib/find_all_calls.rb +105 -0
  41. data/lib/{processors → brakeman/processors}/lib/find_call.rb +4 -4
  42. data/lib/{processors → brakeman/processors}/lib/processor_helper.rb +1 -1
  43. data/lib/{processors → brakeman/processors}/lib/rails2_config_processor.rb +10 -13
  44. data/lib/{processors → brakeman/processors}/lib/rails2_route_processor.rb +6 -5
  45. data/lib/{processors → brakeman/processors}/lib/rails3_config_processor.rb +7 -10
  46. data/lib/{processors → brakeman/processors}/lib/rails3_route_processor.rb +13 -5
  47. data/lib/{processors → brakeman/processors}/lib/render_helper.rb +12 -4
  48. data/lib/{processors → brakeman/processors}/lib/route_helper.rb +1 -1
  49. data/lib/{processors → brakeman/processors}/library_processor.rb +4 -4
  50. data/lib/{processors → brakeman/processors}/model_processor.rb +3 -3
  51. data/lib/{processors → brakeman/processors}/output_processor.rb +5 -6
  52. data/lib/{processors → brakeman/processors}/params_processor.rb +1 -2
  53. data/lib/brakeman/processors/route_processor.rb +17 -0
  54. data/lib/{processors → brakeman/processors}/template_alias_processor.rb +5 -5
  55. data/lib/{processors → brakeman/processors}/template_processor.rb +2 -2
  56. data/lib/{report.rb → brakeman/report.rb} +54 -48
  57. data/lib/{scanner.rb → brakeman/scanner.rb} +26 -17
  58. data/lib/{tracker.rb → brakeman/tracker.rb} +47 -38
  59. data/lib/{util.rb → brakeman/util.rb} +16 -1
  60. data/lib/brakeman/version.rb +3 -0
  61. data/lib/{warning.rb → brakeman/warning.rb} +9 -9
  62. metadata +81 -69
  63. data/lib/checks/check_file_access.rb +0 -48
  64. data/lib/checks/check_send_file.rb +0 -15
  65. data/lib/format/style.css +0 -105
  66. data/lib/processor.rb +0 -91
  67. data/lib/processors/config_processor.rb +0 -5
  68. data/lib/processors/lib/find_model_call.rb +0 -43
  69. data/lib/processors/route_processor.rb +0 -11
  70. data/lib/version.rb +0 -1
@@ -5,7 +5,7 @@ begin
5
5
  require 'sass'
6
6
  require 'erb'
7
7
  require 'erubis'
8
- require 'processor'
8
+ require 'brakeman/processor'
9
9
 
10
10
  #Load our own version of ruby_parser :(
11
11
  original_verbosity = $VERBOSE
@@ -20,23 +20,26 @@ rescue LoadError => e
20
20
  end
21
21
 
22
22
  #Erubis processor which ignores any output which is plain text.
23
- class ScannerErubis < Erubis::Eruby
23
+ class Brakeman::ScannerErubis < Erubis::Eruby
24
24
  include Erubis::NoTextEnhancer
25
25
  end
26
26
 
27
- class ErubisEscape < ScannerErubis
27
+ class Brakeman::ErubisEscape < Brakeman::ScannerErubis
28
28
  include Erubis::EscapeEnhancer
29
29
  end
30
30
 
31
31
  #Scans the Rails application.
32
- class Scanner
32
+ class Brakeman::Scanner
33
+ attr_reader :options
34
+
33
35
  RUBY_1_9 = !!(RUBY_VERSION =~ /^1\.9/)
34
36
 
35
37
  #Pass in path to the root of the Rails application
36
- def initialize path
37
- @path = path
38
- @app_path = File.join(path, "app")
39
- @processor = Processor.new
38
+ def initialize options
39
+ @options = options
40
+ @path = options[:app_path]
41
+ @app_path = File.join(@path, "app")
42
+ @processor = Brakeman::Processor.new options
40
43
  end
41
44
 
42
45
  #Returns the Tracker generated from the scan
@@ -62,6 +65,8 @@ class Scanner
62
65
  process_models
63
66
  warn "Processing controllers..."
64
67
  process_controllers
68
+ warn "Indexing call sites..."
69
+ index_call_sites
65
70
  tracker
66
71
  end
67
72
 
@@ -69,7 +74,7 @@ class Scanner
69
74
  #
70
75
  #Stores parsed information in tracker.config
71
76
  def process_config
72
- if OPTIONS[:rails3]
77
+ if options[:rails3]
73
78
  @processor.process_config(RubyParser.new.parse(File.read("#@path/config/application.rb")))
74
79
  @processor.process_config(RubyParser.new.parse(File.read("#@path/config/environments/production.rb")))
75
80
  else
@@ -82,7 +87,7 @@ class Scanner
82
87
  end
83
88
 
84
89
  if File.exists? "#@path/vendor/plugins/rails_xss" or
85
- OPTIONS[:rails3] or OPTIONS[:escape_html] or
90
+ options[:rails3] or options[:escape_html] or
86
91
  (File.exists? "#@path/Gemfile" and File.read("#@path/Gemfile").include? "rails_xss")
87
92
 
88
93
  tracker.config[:escape_html] = true
@@ -120,7 +125,7 @@ class Scanner
120
125
  #
121
126
  #Adds parsed information to tracker.libs.
122
127
  def process_libs
123
- if OPTIONS[:skip_libs]
128
+ if options[:skip_libs]
124
129
  warn '[Skipping]'
125
130
  return
126
131
  end
@@ -146,7 +151,7 @@ class Scanner
146
151
  rescue Exception => e
147
152
  tracker.error e.exception(e.message + "\nWhile processing routes.rb"), e.backtrace
148
153
  warn "[Notice] Error while processing routes - assuming all public controller methods are actions."
149
- OPTIONS[:assume_all_routes] = true
154
+ options[:assume_all_routes] = true
150
155
  end
151
156
  else
152
157
  warn "[Notice] No route information found"
@@ -192,14 +197,14 @@ class Scanner
192
197
  if type == :erb
193
198
  if tracker.config[:escape_html]
194
199
  type = :erubis
195
- if OPTIONS[:rails3]
196
- src = RailsXSSErubis.new(text).src
200
+ if options[:rails3]
201
+ src = Brakeman::RailsXSSErubis.new(text).src
197
202
  else
198
- src = ErubisEscape.new(text).src
203
+ src = Brakeman::ErubisEscape.new(text).src
199
204
  end
200
205
  elsif tracker.config[:erubis]
201
206
  type = :erubis
202
- src = ScannerErubis.new(text).src
207
+ src = Brakeman::ScannerErubis.new(text).src
203
208
  else
204
209
  src = ERB.new(text, nil, "-").src
205
210
  src.sub!(/^#.*\n/, '') if RUBY_1_9
@@ -254,10 +259,14 @@ class Scanner
254
259
  end
255
260
  end
256
261
  end
262
+
263
+ def index_call_sites
264
+ tracker.index_call_sites
265
+ end
257
266
  end
258
267
 
259
268
  #This is from Rails 3 version of the Erubis handler
260
- class RailsXSSErubis < ::Erubis::Eruby
269
+ class Brakeman::RailsXSSErubis < ::Erubis::Eruby
261
270
 
262
271
  def add_preamble(src)
263
272
  # src << "_buf = ActionView::SafeBuffer.new;\n"
@@ -1,14 +1,15 @@
1
1
  require 'set'
2
- require 'checks'
3
- require 'report'
4
- require 'processors/lib/find_call'
5
- require 'processors/lib/find_model_call'
2
+ require 'brakeman/call_index'
3
+ require 'brakeman/checks'
4
+ require 'brakeman/report'
5
+ require 'brakeman/processors/lib/find_call'
6
+ require 'brakeman/processors/lib/find_all_calls'
6
7
 
7
8
  #The Tracker keeps track of all the processed information.
8
- class Tracker
9
+ class Brakeman::Tracker
9
10
  attr_accessor :controllers, :templates, :models, :errors,
10
11
  :checks, :initializers, :config, :routes, :processor, :libs,
11
- :template_cache
12
+ :template_cache, :options
12
13
 
13
14
  #Place holder when there should be a model, but it is not
14
15
  #clear what model it will be.
@@ -18,8 +19,9 @@ class Tracker
18
19
  #
19
20
  #The Processor argument is only used by other Processors
20
21
  #that might need to access it.
21
- def initialize processor = nil
22
+ def initialize processor = nil, options = {}
22
23
  @processor = processor
24
+ @options = options
23
25
  @config = {}
24
26
  @templates = {}
25
27
  @controllers = {}
@@ -40,6 +42,7 @@ class Tracker
40
42
  @checks = nil
41
43
  @processed = nil
42
44
  @template_cache = Set.new
45
+ @call_index = nil
43
46
  end
44
47
 
45
48
  #Add an error to the list. If no backtrace is given,
@@ -56,7 +59,7 @@ class Tracker
56
59
  #Run a set of checks on the current information. Results will be stored
57
60
  #in Tracker#checks.
58
61
  def run_checks
59
- @checks = Checks.run_checks(self)
62
+ @checks = Brakeman::Checks.run_checks(self)
60
63
  end
61
64
 
62
65
  #Iterate over all methods in controllers and models.
@@ -95,26 +98,48 @@ class Tracker
95
98
 
96
99
  #Find a method call.
97
100
  #
98
- #See FindCall for details on arguments.
99
- def find_call target, method
100
- finder = FindCall.new target, method
101
+ #Options:
102
+ # * :target => target name(s)
103
+ # * :method => method name(s)
104
+ # * :chained => search in method chains
105
+ #
106
+ #If :target => false or :target => nil, searches for methods without a target.
107
+ #Targets and methods can be specified as a symbol, an array of symbols,
108
+ #or a regular expression.
109
+ #
110
+ #If :chained => true, matches target at head of method chain and method at end.
111
+ #
112
+ #For example:
113
+ #
114
+ # find_call :target => User, :method => :all, :chained => true
115
+ #
116
+ #could match
117
+ #
118
+ # User.human.active.all(...)
119
+ #
120
+ def find_call options
121
+ index_calls unless @call_index
122
+ @call_index.find_calls options
123
+ end
101
124
 
102
- self.each_method do |definition, set_name, method_name|
103
- finder.process_source definition, set_name, method_name
104
- end
125
+ #Similar to Tracker#find_call, but searches the initializers
126
+ def check_initializers target, method
127
+ finder = Brakeman::FindCall.new target, method, self
105
128
 
106
- self.each_template do |name, template|
107
- finder.process_source template[:src], nil, nil, template
129
+ initializers.each do |name, initializer|
130
+ finder.process_source initializer
108
131
  end
109
132
 
110
133
  finder.matches
111
134
  end
112
135
 
113
- #Finds method call on models.
114
- #
115
- #See FindCall for details on arguments.
116
- def find_model_find target
117
- finder = FindModelCall.new target
136
+ #Returns a Report with this Tracker's information
137
+ def report
138
+ Brakeman::Report.new(self)
139
+ end
140
+
141
+ def index_call_sites
142
+ finder = Brakeman::FindAllCalls.new self
118
143
 
119
144
  self.each_method do |definition, set_name, method_name|
120
145
  finder.process_source definition, set_name, method_name
@@ -124,22 +149,6 @@ class Tracker
124
149
  finder.process_source template[:src], nil, nil, template
125
150
  end
126
151
 
127
- finder.matches
128
- end
129
-
130
- #Similar to Tracker#find_call, but searches the initializers
131
- def check_initializers target, method
132
- finder = FindCall.new target, method
133
-
134
- initializers.each do |name, initializer|
135
- finder.process_source initializer
136
- end
137
-
138
- finder.matches
139
- end
140
-
141
- #Returns a Report with this Tracker's information
142
- def report
143
- Report.new(self)
152
+ @call_index = Brakeman::CallIndex.new finder.calls
144
153
  end
145
154
  end
@@ -3,7 +3,7 @@ require 'set'
3
3
  require 'active_support/inflector'
4
4
 
5
5
  #This is a mixin containing utility methods.
6
- module Util
6
+ module Brakeman::Util
7
7
 
8
8
  QUERY_PARAMETERS = Sexp.new(:call, Sexp.new(:call, nil, :request, Sexp.new(:arglist)), :query_parameters, Sexp.new(:arglist))
9
9
 
@@ -125,6 +125,11 @@ module Util
125
125
  exp.is_a? Sexp and exp.node_type == :lit and exp[1].is_a? Integer
126
126
  end
127
127
 
128
+ #Check if _exp_ represents a result: s(:result, ...)
129
+ def result? exp
130
+ exp.is_a? Sexp and exp.node_type == :result
131
+ end
132
+
128
133
  #Check if _exp_ is a params hash
129
134
  def params? exp
130
135
  if exp.is_a? Sexp
@@ -164,3 +169,13 @@ module Util
164
169
  exp.is_a? Sexp
165
170
  end
166
171
  end
172
+
173
+ class Sexp
174
+ def original_line line = nil
175
+ if line
176
+ @original_line = line
177
+ else
178
+ @original_line
179
+ end
180
+ end
181
+ end
@@ -0,0 +1,3 @@
1
+ module Brakeman
2
+ Version = "1.0.rc1"
3
+ end
@@ -1,11 +1,11 @@
1
1
  #The Warning class stores information about warnings
2
- class Warning
2
+ class Brakeman::Warning
3
3
  attr_reader :called_from, :check, :class, :confidence, :controller,
4
4
  :line, :method, :model, :template, :warning_set, :warning_type
5
5
 
6
6
  attr_accessor :code, :context, :file, :message
7
7
 
8
- #+options[:result]+ can be a result Sexp from FindCall. Otherwise, it can be +nil+.
8
+ #+options[:result]+ can be a result from Tracker#find_call. Otherwise, it can be +nil+.
9
9
  def initialize options = {}
10
10
  @view_name = nil
11
11
 
@@ -17,13 +17,13 @@ class Warning
17
17
 
18
18
  result = options[:result]
19
19
  if result
20
- if result.length == 3 #template result
21
- @template ||= result[1]
22
- @code ||= result[2]
20
+ if result[:location][0] == :template #template result
21
+ @template ||= result[:location][1]
22
+ @code ||= result[:call]
23
23
  else
24
- @class ||= result[1]
25
- @method ||= result[2]
26
- @code ||= result[3]
24
+ @class ||= result[:location][1]
25
+ @method ||= result[:location][2]
26
+ @code ||= result[:call]
27
27
  end
28
28
  end
29
29
 
@@ -58,7 +58,7 @@ class Warning
58
58
  #Return String of the code output from the OutputProcessor and
59
59
  #stripped of newlines and tabs.
60
60
  def format_code
61
- OutputProcessor.new.format(self.code).gsub(/(\t|\r|\n)+/, " ")
61
+ Brakeman::OutputProcessor.new.format(self.code).gsub(/(\t|\r|\n)+/, " ")
62
62
  end
63
63
 
64
64
  #Return formatted warning message
metadata CHANGED
@@ -1,12 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: brakeman
3
3
  version: !ruby/object:Gem::Version
4
- prerelease: false
4
+ hash: 447512930
5
+ prerelease: 4
5
6
  segments:
7
+ - 1
6
8
  - 0
7
- - 9
8
- - 2
9
- version: 0.9.2
9
+ - rc
10
+ - 1
11
+ version: 1.0.rc1
10
12
  platform: ruby
11
13
  authors:
12
14
  - Justin Collins
@@ -14,7 +16,7 @@ autorequire:
14
16
  bindir: bin
15
17
  cert_chain: []
16
18
 
17
- date: 2011-11-21 00:00:00 -08:00
19
+ date: 2011-12-05 00:00:00 -08:00
18
20
  default_executable:
19
21
  dependencies:
20
22
  - !ruby/object:Gem::Dependency
@@ -25,6 +27,7 @@ dependencies:
25
27
  requirements:
26
28
  - - ~>
27
29
  - !ruby/object:Gem::Version
30
+ hash: 35040058
28
31
  segments:
29
32
  - 2
30
33
  - 2
@@ -39,6 +42,7 @@ dependencies:
39
42
  requirements:
40
43
  - - ~>
41
44
  - !ruby/object:Gem::Version
45
+ hash: 199563509
42
46
  segments:
43
47
  - 1
44
48
  - 2
@@ -54,6 +58,7 @@ dependencies:
54
58
  requirements:
55
59
  - - ">="
56
60
  - !ruby/object:Gem::Version
61
+ hash: 349353174
57
62
  segments:
58
63
  - 2
59
64
  - 3
@@ -69,6 +74,7 @@ dependencies:
69
74
  requirements:
70
75
  - - ~>
71
76
  - !ruby/object:Gem::Version
77
+ hash: 443479320
72
78
  segments:
73
79
  - 1
74
80
  - 6
@@ -84,6 +90,7 @@ dependencies:
84
90
  requirements:
85
91
  - - ~>
86
92
  - !ruby/object:Gem::Version
93
+ hash: 576733947
87
94
  segments:
88
95
  - 2
89
96
  - 6
@@ -99,6 +106,7 @@ dependencies:
99
106
  requirements:
100
107
  - - ~>
101
108
  - !ruby/object:Gem::Version
109
+ hash: 359472903
102
110
  segments:
103
111
  - 3
104
112
  - 0
@@ -119,68 +127,68 @@ files:
119
127
  - WARNING_TYPES
120
128
  - FEATURES
121
129
  - README.md
122
- - lib/warning.rb
123
- - lib/processors/gem_processor.rb
124
- - lib/processors/params_processor.rb
125
- - lib/processors/controller_alias_processor.rb
126
- - lib/processors/base_processor.rb
127
- - lib/processors/controller_processor.rb
128
- - lib/processors/library_processor.rb
129
- - lib/processors/erb_template_processor.rb
130
- - lib/processors/haml_template_processor.rb
131
- - lib/processors/template_alias_processor.rb
132
- - lib/processors/route_processor.rb
133
- - lib/processors/model_processor.rb
134
- - lib/processors/lib/find_call.rb
135
- - lib/processors/lib/processor_helper.rb
136
- - lib/processors/lib/rails3_route_processor.rb
137
- - lib/processors/lib/route_helper.rb
138
- - lib/processors/lib/rails2_config_processor.rb
139
- - lib/processors/lib/rails2_route_processor.rb
140
- - lib/processors/lib/find_model_call.rb
141
- - lib/processors/lib/render_helper.rb
142
- - lib/processors/lib/rails3_config_processor.rb
143
- - lib/processors/alias_processor.rb
144
- - lib/processors/output_processor.rb
145
- - lib/processors/config_processor.rb
146
- - lib/processors/erubis_template_processor.rb
147
- - lib/processors/template_processor.rb
148
- - lib/checks/check_send_file.rb
149
- - lib/checks/check_translate_bug.rb
150
- - lib/checks/check_session_settings.rb
151
- - lib/checks/check_nested_attributes.rb
152
- - lib/checks/check_strip_tags.rb
153
- - lib/checks/check_sql.rb
154
- - lib/checks/check_without_protection.rb
155
- - lib/checks/check_mass_assignment.rb
156
- - lib/checks/check_escape_function.rb
157
- - lib/checks/check_cross_site_scripting.rb
158
- - lib/checks/check_model_attributes.rb
159
- - lib/checks/check_default_routes.rb
160
- - lib/checks/check_evaluation.rb
161
- - lib/checks/check_quote_table_name.rb
162
- - lib/checks/check_validation_regex.rb
163
- - lib/checks/check_execute.rb
164
- - lib/checks/check_filter_skipping.rb
165
- - lib/checks/check_mail_to.rb
166
- - lib/checks/base_check.rb
167
- - lib/checks/check_file_access.rb
168
- - lib/checks/check_response_splitting.rb
169
- - lib/checks/check_basic_auth.rb
170
- - lib/checks/check_redirect.rb
171
- - lib/checks/check_forgery_setting.rb
172
- - lib/checks/check_render.rb
173
- - lib/tracker.rb
174
- - lib/util.rb
175
- - lib/report.rb
130
+ - lib/brakeman.rb
176
131
  - lib/ruby_parser/ruby_lexer.rb
177
132
  - lib/ruby_parser/ruby_parser.rb
178
- - lib/version.rb
179
- - lib/brakeman.rb
180
- - lib/scanner.rb
181
- - lib/checks.rb
182
- - lib/processor.rb
183
- - lib/format/style.css
133
+ - lib/brakeman/warning.rb
134
+ - lib/brakeman/tracker.rb
135
+ - lib/brakeman/util.rb
136
+ - lib/brakeman/report.rb
137
+ - lib/brakeman/version.rb
138
+ - lib/brakeman/call_index.rb
139
+ - lib/brakeman/scanner.rb
140
+ - lib/brakeman/checks.rb
141
+ - lib/brakeman/processor.rb
142
+ - lib/brakeman/processors/gem_processor.rb
143
+ - lib/brakeman/processors/params_processor.rb
144
+ - lib/brakeman/processors/controller_alias_processor.rb
145
+ - lib/brakeman/processors/base_processor.rb
146
+ - lib/brakeman/processors/controller_processor.rb
147
+ - lib/brakeman/processors/library_processor.rb
148
+ - lib/brakeman/processors/erb_template_processor.rb
149
+ - lib/brakeman/processors/haml_template_processor.rb
150
+ - lib/brakeman/processors/template_alias_processor.rb
151
+ - lib/brakeman/processors/route_processor.rb
152
+ - lib/brakeman/processors/model_processor.rb
153
+ - lib/brakeman/processors/alias_processor.rb
154
+ - lib/brakeman/processors/output_processor.rb
155
+ - lib/brakeman/processors/config_processor.rb
156
+ - lib/brakeman/processors/erubis_template_processor.rb
157
+ - lib/brakeman/processors/template_processor.rb
158
+ - lib/brakeman/checks/check_send_file.rb
159
+ - lib/brakeman/checks/check_translate_bug.rb
160
+ - lib/brakeman/checks/check_session_settings.rb
161
+ - lib/brakeman/checks/check_nested_attributes.rb
162
+ - lib/brakeman/checks/check_strip_tags.rb
163
+ - lib/brakeman/checks/check_sql.rb
164
+ - lib/brakeman/checks/check_without_protection.rb
165
+ - lib/brakeman/checks/check_mass_assignment.rb
166
+ - lib/brakeman/checks/check_escape_function.rb
167
+ - lib/brakeman/checks/check_cross_site_scripting.rb
168
+ - lib/brakeman/checks/check_model_attributes.rb
169
+ - lib/brakeman/checks/check_default_routes.rb
170
+ - lib/brakeman/checks/check_evaluation.rb
171
+ - lib/brakeman/checks/check_quote_table_name.rb
172
+ - lib/brakeman/checks/check_validation_regex.rb
173
+ - lib/brakeman/checks/check_execute.rb
174
+ - lib/brakeman/checks/check_filter_skipping.rb
175
+ - lib/brakeman/checks/check_mail_to.rb
176
+ - lib/brakeman/checks/base_check.rb
177
+ - lib/brakeman/checks/check_file_access.rb
178
+ - lib/brakeman/checks/check_response_splitting.rb
179
+ - lib/brakeman/checks/check_basic_auth.rb
180
+ - lib/brakeman/checks/check_redirect.rb
181
+ - lib/brakeman/checks/check_forgery_setting.rb
182
+ - lib/brakeman/checks/check_render.rb
183
+ - lib/brakeman/processors/lib/find_all_calls.rb
184
+ - lib/brakeman/processors/lib/find_call.rb
185
+ - lib/brakeman/processors/lib/processor_helper.rb
186
+ - lib/brakeman/processors/lib/rails3_route_processor.rb
187
+ - lib/brakeman/processors/lib/route_helper.rb
188
+ - lib/brakeman/processors/lib/rails2_config_processor.rb
189
+ - lib/brakeman/processors/lib/rails2_route_processor.rb
190
+ - lib/brakeman/processors/lib/render_helper.rb
191
+ - lib/brakeman/processors/lib/rails3_config_processor.rb
184
192
  has_rdoc: true
185
193
  homepage: http://brakemanscanner.org
186
194
  licenses: []
@@ -195,21 +203,25 @@ required_ruby_version: !ruby/object:Gem::Requirement
195
203
  requirements:
196
204
  - - ">="
197
205
  - !ruby/object:Gem::Version
206
+ hash: 881230260
198
207
  segments:
199
208
  - 0
200
209
  version: "0"
201
210
  required_rubygems_version: !ruby/object:Gem::Requirement
202
211
  none: false
203
212
  requirements:
204
- - - ">="
213
+ - - ">"
205
214
  - !ruby/object:Gem::Version
215
+ hash: 357276212
206
216
  segments:
207
- - 0
208
- version: "0"
217
+ - 1
218
+ - 3
219
+ - 1
220
+ version: 1.3.1
209
221
  requirements: []
210
222
 
211
223
  rubyforge_project:
212
- rubygems_version: 1.3.7
224
+ rubygems_version: 1.5.2
213
225
  signing_key:
214
226
  specification_version: 3
215
227
  summary: Security vulnerability scanner for Ruby on Rails.