brakeman 1.5.3 → 1.6.0.pre1
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.
- data/bin/brakeman +20 -6
- data/lib/brakeman.rb +21 -1
- data/lib/brakeman/checks.rb +2 -7
- data/lib/brakeman/checks/base_check.rb +31 -26
- data/lib/brakeman/checks/check_basic_auth.rb +1 -7
- data/lib/brakeman/checks/check_cross_site_scripting.rb +38 -33
- data/lib/brakeman/checks/check_evaluation.rb +2 -1
- data/lib/brakeman/checks/check_execute.rb +5 -1
- data/lib/brakeman/checks/check_file_access.rb +6 -4
- data/lib/brakeman/checks/check_link_to.rb +8 -5
- data/lib/brakeman/checks/check_link_to_href.rb +6 -5
- data/lib/brakeman/checks/check_mail_to.rb +2 -4
- data/lib/brakeman/checks/check_mass_assignment.rb +12 -6
- data/lib/brakeman/checks/check_redirect.rb +17 -14
- data/lib/brakeman/checks/check_render.rb +4 -4
- data/lib/brakeman/checks/check_send.rb +4 -2
- data/lib/brakeman/checks/check_session_settings.rb +16 -21
- data/lib/brakeman/checks/check_skip_before_filter.rb +2 -4
- data/lib/brakeman/checks/check_sql.rb +8 -7
- data/lib/brakeman/checks/check_validation_regex.rb +2 -4
- data/lib/brakeman/checks/check_without_protection.rb +8 -9
- data/lib/brakeman/differ.rb +61 -0
- data/lib/brakeman/format/style.css +4 -0
- data/lib/brakeman/options.rb +8 -0
- data/lib/brakeman/processors/alias_processor.rb +5 -7
- data/lib/brakeman/processors/controller_alias_processor.rb +10 -3
- data/lib/brakeman/processors/erb_template_processor.rb +2 -0
- data/lib/brakeman/processors/erubis_template_processor.rb +2 -0
- data/lib/brakeman/processors/gem_processor.rb +8 -0
- data/lib/brakeman/processors/haml_template_processor.rb +2 -0
- data/lib/brakeman/processors/lib/rails2_route_processor.rb +2 -6
- data/lib/brakeman/processors/lib/rails3_route_processor.rb +2 -4
- data/lib/brakeman/processors/lib/render_helper.rb +3 -1
- data/lib/brakeman/processors/library_processor.rb +4 -6
- data/lib/brakeman/processors/template_alias_processor.rb +1 -1
- data/lib/brakeman/report.rb +257 -198
- data/lib/brakeman/rescanner.rb +112 -10
- data/lib/brakeman/scanner.rb +3 -4
- data/lib/brakeman/templates/controller_overview.html.erb +18 -0
- data/lib/brakeman/templates/controller_warnings.html.erb +17 -0
- data/lib/brakeman/templates/error_overview.html.erb +14 -0
- data/lib/brakeman/templates/header.html.erb +38 -0
- data/lib/brakeman/templates/model_warnings.html.erb +17 -0
- data/lib/brakeman/templates/overview.html.erb +28 -0
- data/lib/brakeman/templates/security_warnings.html.erb +28 -0
- data/lib/brakeman/templates/template_overview.html.erb +17 -0
- data/lib/brakeman/templates/view_warnings.html.erb +17 -0
- data/lib/brakeman/templates/warning_overview.html.erb +13 -0
- data/lib/brakeman/tracker.rb +1 -1
- data/lib/brakeman/util.rb +24 -4
- data/lib/brakeman/version.rb +1 -1
- data/lib/brakeman/warning.rb +11 -3
- data/lib/ruby_parser/bm_sexp.rb +5 -11
- metadata +84 -23
data/lib/brakeman/version.rb
CHANGED
data/lib/brakeman/warning.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
#The Warning class stores information about warnings
|
2
2
|
class Brakeman::Warning
|
3
3
|
attr_reader :called_from, :check, :class, :confidence, :controller,
|
4
|
-
:line, :method, :model, :template, :warning_set, :warning_type
|
4
|
+
:line, :method, :model, :template, :user_input, :warning_set, :warning_type
|
5
5
|
|
6
6
|
attr_accessor :code, :context, :file, :message
|
7
7
|
|
@@ -12,7 +12,7 @@ class Brakeman::Warning
|
|
12
12
|
@view_name = nil
|
13
13
|
|
14
14
|
[:called_from, :check, :class, :code, :confidence, :controller, :file, :line,
|
15
|
-
:message, :method, :model, :template, :warning_set, :warning_type].each do |option|
|
15
|
+
:message, :method, :model, :template, :user_input, :warning_set, :warning_type].each do |option|
|
16
16
|
|
17
17
|
self.instance_variable_set("@#{option}", options[option])
|
18
18
|
end
|
@@ -74,6 +74,12 @@ class Brakeman::Warning
|
|
74
74
|
Brakeman::OutputProcessor.new.format(self.code).gsub(/(\t|\r|\n)+/, " ")
|
75
75
|
end
|
76
76
|
|
77
|
+
#Return String of the user input formatted and
|
78
|
+
#stripped of newlines and tabs.
|
79
|
+
def format_user_input
|
80
|
+
Brakeman::OutputProcessor.new.format(self.user_input).gsub(/(\t|\r|\n)+/, " ")
|
81
|
+
end
|
82
|
+
|
77
83
|
#Return formatted warning message
|
78
84
|
def format_message
|
79
85
|
return @format_message if @format_message
|
@@ -91,7 +97,7 @@ class Brakeman::Warning
|
|
91
97
|
@format_message
|
92
98
|
end
|
93
99
|
|
94
|
-
#Generates a hash suitable for inserting into a
|
100
|
+
#Generates a hash suitable for inserting into a table
|
95
101
|
def to_row type = :warning
|
96
102
|
@row = { "Confidence" => self.confidence,
|
97
103
|
"Warning Type" => self.warning_type.to_s,
|
@@ -140,8 +146,10 @@ class Brakeman::Warning
|
|
140
146
|
{ :warning_type => self.warning_type,
|
141
147
|
:message => self.message,
|
142
148
|
:file => self.file,
|
149
|
+
:line => self.line,
|
143
150
|
:code => (@code && self.format_code),
|
144
151
|
:location => location,
|
152
|
+
:user_input => (@user_input && self.format_user_input),
|
145
153
|
:confidence => TEXT_CONFIDENCE[self.confidence]
|
146
154
|
}
|
147
155
|
end
|
data/lib/ruby_parser/bm_sexp.rb
CHANGED
@@ -20,7 +20,6 @@ class Sexp
|
|
20
20
|
alias :node_type :sexp_type
|
21
21
|
alias :values :sexp_body # TODO: retire
|
22
22
|
|
23
|
-
alias :old_init :initialize
|
24
23
|
alias :old_push :<<
|
25
24
|
alias :old_line :line
|
26
25
|
alias :old_line_set :line=
|
@@ -30,18 +29,13 @@ class Sexp
|
|
30
29
|
alias :old_fara :find_and_replace_all
|
31
30
|
alias :old_find_node :find_node
|
32
31
|
|
33
|
-
def initialize *args
|
34
|
-
old_init(*args)
|
35
|
-
@original_line = nil
|
36
|
-
@my_hash_value = nil
|
37
|
-
end
|
38
|
-
|
39
32
|
def original_line line = nil
|
40
33
|
if line
|
41
34
|
@my_hash_value = nil
|
42
35
|
@original_line = line
|
36
|
+
self
|
43
37
|
else
|
44
|
-
@original_line
|
38
|
+
@original_line ||= nil
|
45
39
|
end
|
46
40
|
end
|
47
41
|
|
@@ -53,9 +47,9 @@ class Sexp
|
|
53
47
|
@my_hash_value ||= super
|
54
48
|
end
|
55
49
|
|
56
|
-
def line
|
57
|
-
@my_hash_value = nil
|
58
|
-
old_line(
|
50
|
+
def line num = nil
|
51
|
+
@my_hash_value = nil if num
|
52
|
+
old_line(num)
|
59
53
|
end
|
60
54
|
|
61
55
|
def line= *args
|
metadata
CHANGED
@@ -1,13 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: brakeman
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
5
|
-
prerelease:
|
4
|
+
hash: -1001353691
|
5
|
+
prerelease: 6
|
6
6
|
segments:
|
7
7
|
- 1
|
8
|
-
-
|
9
|
-
-
|
10
|
-
|
8
|
+
- 6
|
9
|
+
- 0
|
10
|
+
- pre
|
11
|
+
- 1
|
12
|
+
version: 1.6.0.pre1
|
11
13
|
platform: ruby
|
12
14
|
authors:
|
13
15
|
- Justin Collins
|
@@ -15,7 +17,7 @@ autorequire:
|
|
15
17
|
bindir: bin
|
16
18
|
cert_chain: []
|
17
19
|
|
18
|
-
date: 2012-04-
|
20
|
+
date: 2012-04-19 00:00:00 Z
|
19
21
|
dependencies:
|
20
22
|
- !ruby/object:Gem::Dependency
|
21
23
|
name: activesupport
|
@@ -46,9 +48,25 @@ dependencies:
|
|
46
48
|
type: :runtime
|
47
49
|
version_requirements: *id002
|
48
50
|
- !ruby/object:Gem::Dependency
|
49
|
-
name:
|
51
|
+
name: ruby_parser
|
50
52
|
prerelease: false
|
51
53
|
requirement: &id003 !ruby/object:Gem::Requirement
|
54
|
+
none: false
|
55
|
+
requirements:
|
56
|
+
- - "="
|
57
|
+
- !ruby/object:Gem::Version
|
58
|
+
hash: 1
|
59
|
+
segments:
|
60
|
+
- 2
|
61
|
+
- 3
|
62
|
+
- 1
|
63
|
+
version: 2.3.1
|
64
|
+
type: :runtime
|
65
|
+
version_requirements: *id003
|
66
|
+
- !ruby/object:Gem::Dependency
|
67
|
+
name: ruby2ruby
|
68
|
+
prerelease: false
|
69
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
52
70
|
none: false
|
53
71
|
requirements:
|
54
72
|
- - ~>
|
@@ -59,11 +77,41 @@ dependencies:
|
|
59
77
|
- 2
|
60
78
|
version: "1.2"
|
61
79
|
type: :runtime
|
62
|
-
version_requirements: *
|
80
|
+
version_requirements: *id004
|
63
81
|
- !ruby/object:Gem::Dependency
|
64
|
-
name:
|
82
|
+
name: terminal-table
|
65
83
|
prerelease: false
|
66
|
-
requirement: &
|
84
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
85
|
+
none: false
|
86
|
+
requirements:
|
87
|
+
- - ~>
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
hash: 7
|
90
|
+
segments:
|
91
|
+
- 1
|
92
|
+
- 4
|
93
|
+
version: "1.4"
|
94
|
+
type: :runtime
|
95
|
+
version_requirements: *id005
|
96
|
+
- !ruby/object:Gem::Dependency
|
97
|
+
name: fastercsv
|
98
|
+
prerelease: false
|
99
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
100
|
+
none: false
|
101
|
+
requirements:
|
102
|
+
- - ~>
|
103
|
+
- !ruby/object:Gem::Version
|
104
|
+
hash: 5
|
105
|
+
segments:
|
106
|
+
- 1
|
107
|
+
- 5
|
108
|
+
version: "1.5"
|
109
|
+
type: :runtime
|
110
|
+
version_requirements: *id006
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: highline
|
113
|
+
prerelease: false
|
114
|
+
requirement: &id007 !ruby/object:Gem::Requirement
|
67
115
|
none: false
|
68
116
|
requirements:
|
69
117
|
- - ~>
|
@@ -74,11 +122,11 @@ dependencies:
|
|
74
122
|
- 6
|
75
123
|
version: "1.6"
|
76
124
|
type: :runtime
|
77
|
-
version_requirements: *
|
125
|
+
version_requirements: *id007
|
78
126
|
- !ruby/object:Gem::Dependency
|
79
127
|
name: erubis
|
80
128
|
prerelease: false
|
81
|
-
requirement: &
|
129
|
+
requirement: &id008 !ruby/object:Gem::Requirement
|
82
130
|
none: false
|
83
131
|
requirements:
|
84
132
|
- - ~>
|
@@ -89,11 +137,11 @@ dependencies:
|
|
89
137
|
- 6
|
90
138
|
version: "2.6"
|
91
139
|
type: :runtime
|
92
|
-
version_requirements: *
|
140
|
+
version_requirements: *id008
|
93
141
|
- !ruby/object:Gem::Dependency
|
94
142
|
name: haml
|
95
143
|
prerelease: false
|
96
|
-
requirement: &
|
144
|
+
requirement: &id009 !ruby/object:Gem::Requirement
|
97
145
|
none: false
|
98
146
|
requirements:
|
99
147
|
- - ~>
|
@@ -104,11 +152,11 @@ dependencies:
|
|
104
152
|
- 0
|
105
153
|
version: "3.0"
|
106
154
|
type: :runtime
|
107
|
-
version_requirements: *
|
155
|
+
version_requirements: *id009
|
108
156
|
- !ruby/object:Gem::Dependency
|
109
157
|
name: sass
|
110
158
|
prerelease: false
|
111
|
-
requirement: &
|
159
|
+
requirement: &id010 !ruby/object:Gem::Requirement
|
112
160
|
none: false
|
113
161
|
requirements:
|
114
162
|
- - ~>
|
@@ -119,7 +167,7 @@ dependencies:
|
|
119
167
|
- 0
|
120
168
|
version: "3.0"
|
121
169
|
type: :runtime
|
122
|
-
version_requirements: *
|
170
|
+
version_requirements: *id010
|
123
171
|
description: Brakeman detects security vulnerabilities in Ruby on Rails applications via static analysis.
|
124
172
|
email:
|
125
173
|
executables:
|
@@ -133,7 +181,6 @@ files:
|
|
133
181
|
- WARNING_TYPES
|
134
182
|
- FEATURES
|
135
183
|
- README.md
|
136
|
-
- lib/brakeman/brakeman.rake
|
137
184
|
- lib/ruby_parser/ruby18_parser.rb
|
138
185
|
- lib/ruby_parser/ruby_parser_extras.rb
|
139
186
|
- lib/ruby_parser/bm_sexp.rb
|
@@ -141,6 +188,7 @@ files:
|
|
141
188
|
- lib/ruby_parser/ruby_parser.rb
|
142
189
|
- lib/ruby_parser/ruby19_parser.rb
|
143
190
|
- lib/brakeman/warning.rb
|
191
|
+
- lib/brakeman/differ.rb
|
144
192
|
- lib/brakeman/processors/gem_processor.rb
|
145
193
|
- lib/brakeman/processors/params_processor.rb
|
146
194
|
- lib/brakeman/processors/controller_alias_processor.rb
|
@@ -166,6 +214,7 @@ files:
|
|
166
214
|
- lib/brakeman/processors/config_processor.rb
|
167
215
|
- lib/brakeman/processors/erubis_template_processor.rb
|
168
216
|
- lib/brakeman/processors/template_processor.rb
|
217
|
+
- lib/brakeman/format/style.css
|
169
218
|
- lib/brakeman/rescanner.rb
|
170
219
|
- lib/brakeman/checks/check_send_file.rb
|
171
220
|
- lib/brakeman/checks/check_translate_bug.rb
|
@@ -201,17 +250,27 @@ files:
|
|
201
250
|
- lib/brakeman/tracker.rb
|
202
251
|
- lib/brakeman/util.rb
|
203
252
|
- lib/brakeman/report.rb
|
253
|
+
- lib/brakeman/templates/header.html.erb
|
254
|
+
- lib/brakeman/templates/warning_overview.html.erb
|
255
|
+
- lib/brakeman/templates/overview.html.erb
|
256
|
+
- lib/brakeman/templates/controller_warnings.html.erb
|
257
|
+
- lib/brakeman/templates/error_overview.html.erb
|
258
|
+
- lib/brakeman/templates/controller_overview.html.erb
|
259
|
+
- lib/brakeman/templates/security_warnings.html.erb
|
260
|
+
- lib/brakeman/templates/model_warnings.html.erb
|
261
|
+
- lib/brakeman/templates/view_warnings.html.erb
|
262
|
+
- lib/brakeman/templates/template_overview.html.erb
|
204
263
|
- lib/brakeman/parsers/rails3_erubis.rb
|
205
264
|
- lib/brakeman/parsers/rails2_xss_plugin_erubis.rb
|
206
265
|
- lib/brakeman/parsers/rails2_erubis.rb
|
207
266
|
- lib/brakeman/version.rb
|
208
267
|
- lib/brakeman/call_index.rb
|
268
|
+
- lib/brakeman/brakeman.rake
|
209
269
|
- lib/brakeman/options.rb
|
210
270
|
- lib/brakeman/scanner.rb
|
211
271
|
- lib/brakeman/checks.rb
|
212
272
|
- lib/brakeman/processor.rb
|
213
273
|
- lib/brakeman.rb
|
214
|
-
- lib/brakeman/format/style.css
|
215
274
|
homepage: http://brakemanscanner.org
|
216
275
|
licenses: []
|
217
276
|
|
@@ -232,12 +291,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
232
291
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
233
292
|
none: false
|
234
293
|
requirements:
|
235
|
-
- - "
|
294
|
+
- - ">"
|
236
295
|
- !ruby/object:Gem::Version
|
237
|
-
hash:
|
296
|
+
hash: 25
|
238
297
|
segments:
|
239
|
-
-
|
240
|
-
|
298
|
+
- 1
|
299
|
+
- 3
|
300
|
+
- 1
|
301
|
+
version: 1.3.1
|
241
302
|
requirements: []
|
242
303
|
|
243
304
|
rubyforge_project:
|