brakeman-lib 3.3.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (159) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGES +872 -0
  3. data/FEATURES +16 -0
  4. data/README.md +169 -0
  5. data/WARNING_TYPES +95 -0
  6. data/bin/brakeman +89 -0
  7. data/lib/brakeman.rb +495 -0
  8. data/lib/brakeman/app_tree.rb +161 -0
  9. data/lib/brakeman/brakeman.rake +17 -0
  10. data/lib/brakeman/call_index.rb +219 -0
  11. data/lib/brakeman/checks.rb +191 -0
  12. data/lib/brakeman/checks/base_check.rb +518 -0
  13. data/lib/brakeman/checks/check_basic_auth.rb +88 -0
  14. data/lib/brakeman/checks/check_basic_auth_timing_attack.rb +33 -0
  15. data/lib/brakeman/checks/check_content_tag.rb +160 -0
  16. data/lib/brakeman/checks/check_create_with.rb +75 -0
  17. data/lib/brakeman/checks/check_cross_site_scripting.rb +385 -0
  18. data/lib/brakeman/checks/check_default_routes.rb +86 -0
  19. data/lib/brakeman/checks/check_deserialize.rb +57 -0
  20. data/lib/brakeman/checks/check_detailed_exceptions.rb +55 -0
  21. data/lib/brakeman/checks/check_digest_dos.rb +38 -0
  22. data/lib/brakeman/checks/check_dynamic_finders.rb +49 -0
  23. data/lib/brakeman/checks/check_escape_function.rb +21 -0
  24. data/lib/brakeman/checks/check_evaluation.rb +36 -0
  25. data/lib/brakeman/checks/check_execute.rb +167 -0
  26. data/lib/brakeman/checks/check_file_access.rb +63 -0
  27. data/lib/brakeman/checks/check_file_disclosure.rb +35 -0
  28. data/lib/brakeman/checks/check_filter_skipping.rb +31 -0
  29. data/lib/brakeman/checks/check_forgery_setting.rb +74 -0
  30. data/lib/brakeman/checks/check_header_dos.rb +31 -0
  31. data/lib/brakeman/checks/check_i18n_xss.rb +48 -0
  32. data/lib/brakeman/checks/check_jruby_xml.rb +38 -0
  33. data/lib/brakeman/checks/check_json_encoding.rb +47 -0
  34. data/lib/brakeman/checks/check_json_parsing.rb +107 -0
  35. data/lib/brakeman/checks/check_link_to.rb +132 -0
  36. data/lib/brakeman/checks/check_link_to_href.rb +115 -0
  37. data/lib/brakeman/checks/check_mail_to.rb +49 -0
  38. data/lib/brakeman/checks/check_mass_assignment.rb +198 -0
  39. data/lib/brakeman/checks/check_mime_type_dos.rb +39 -0
  40. data/lib/brakeman/checks/check_model_attr_accessible.rb +55 -0
  41. data/lib/brakeman/checks/check_model_attributes.rb +119 -0
  42. data/lib/brakeman/checks/check_model_serialize.rb +67 -0
  43. data/lib/brakeman/checks/check_nested_attributes.rb +38 -0
  44. data/lib/brakeman/checks/check_nested_attributes_bypass.rb +58 -0
  45. data/lib/brakeman/checks/check_number_to_currency.rb +74 -0
  46. data/lib/brakeman/checks/check_quote_table_name.rb +40 -0
  47. data/lib/brakeman/checks/check_redirect.rb +215 -0
  48. data/lib/brakeman/checks/check_regex_dos.rb +69 -0
  49. data/lib/brakeman/checks/check_render.rb +92 -0
  50. data/lib/brakeman/checks/check_render_dos.rb +37 -0
  51. data/lib/brakeman/checks/check_render_inline.rb +54 -0
  52. data/lib/brakeman/checks/check_response_splitting.rb +21 -0
  53. data/lib/brakeman/checks/check_route_dos.rb +42 -0
  54. data/lib/brakeman/checks/check_safe_buffer_manipulation.rb +31 -0
  55. data/lib/brakeman/checks/check_sanitize_methods.rb +79 -0
  56. data/lib/brakeman/checks/check_secrets.rb +40 -0
  57. data/lib/brakeman/checks/check_select_tag.rb +60 -0
  58. data/lib/brakeman/checks/check_select_vulnerability.rb +60 -0
  59. data/lib/brakeman/checks/check_send.rb +48 -0
  60. data/lib/brakeman/checks/check_send_file.rb +19 -0
  61. data/lib/brakeman/checks/check_session_manipulation.rb +36 -0
  62. data/lib/brakeman/checks/check_session_settings.rb +170 -0
  63. data/lib/brakeman/checks/check_simple_format.rb +59 -0
  64. data/lib/brakeman/checks/check_single_quotes.rb +101 -0
  65. data/lib/brakeman/checks/check_skip_before_filter.rb +60 -0
  66. data/lib/brakeman/checks/check_sql.rb +660 -0
  67. data/lib/brakeman/checks/check_sql_cves.rb +101 -0
  68. data/lib/brakeman/checks/check_ssl_verify.rb +49 -0
  69. data/lib/brakeman/checks/check_strip_tags.rb +89 -0
  70. data/lib/brakeman/checks/check_symbol_dos.rb +64 -0
  71. data/lib/brakeman/checks/check_symbol_dos_cve.rb +30 -0
  72. data/lib/brakeman/checks/check_translate_bug.rb +45 -0
  73. data/lib/brakeman/checks/check_unsafe_reflection.rb +51 -0
  74. data/lib/brakeman/checks/check_unscoped_find.rb +41 -0
  75. data/lib/brakeman/checks/check_validation_regex.rb +116 -0
  76. data/lib/brakeman/checks/check_weak_hash.rb +151 -0
  77. data/lib/brakeman/checks/check_without_protection.rb +80 -0
  78. data/lib/brakeman/checks/check_xml_dos.rb +51 -0
  79. data/lib/brakeman/checks/check_yaml_parsing.rb +121 -0
  80. data/lib/brakeman/differ.rb +66 -0
  81. data/lib/brakeman/file_parser.rb +50 -0
  82. data/lib/brakeman/format/style.css +133 -0
  83. data/lib/brakeman/options.rb +301 -0
  84. data/lib/brakeman/parsers/rails2_erubis.rb +6 -0
  85. data/lib/brakeman/parsers/rails2_xss_plugin_erubis.rb +48 -0
  86. data/lib/brakeman/parsers/rails3_erubis.rb +74 -0
  87. data/lib/brakeman/parsers/template_parser.rb +89 -0
  88. data/lib/brakeman/processor.rb +102 -0
  89. data/lib/brakeman/processors/alias_processor.rb +1013 -0
  90. data/lib/brakeman/processors/base_processor.rb +277 -0
  91. data/lib/brakeman/processors/config_processor.rb +14 -0
  92. data/lib/brakeman/processors/controller_alias_processor.rb +273 -0
  93. data/lib/brakeman/processors/controller_processor.rb +326 -0
  94. data/lib/brakeman/processors/erb_template_processor.rb +80 -0
  95. data/lib/brakeman/processors/erubis_template_processor.rb +104 -0
  96. data/lib/brakeman/processors/gem_processor.rb +57 -0
  97. data/lib/brakeman/processors/haml_template_processor.rb +190 -0
  98. data/lib/brakeman/processors/lib/basic_processor.rb +37 -0
  99. data/lib/brakeman/processors/lib/find_all_calls.rb +223 -0
  100. data/lib/brakeman/processors/lib/find_call.rb +183 -0
  101. data/lib/brakeman/processors/lib/find_return_value.rb +134 -0
  102. data/lib/brakeman/processors/lib/processor_helper.rb +75 -0
  103. data/lib/brakeman/processors/lib/rails2_config_processor.rb +145 -0
  104. data/lib/brakeman/processors/lib/rails2_route_processor.rb +313 -0
  105. data/lib/brakeman/processors/lib/rails3_config_processor.rb +132 -0
  106. data/lib/brakeman/processors/lib/rails3_route_processor.rb +308 -0
  107. data/lib/brakeman/processors/lib/render_helper.rb +181 -0
  108. data/lib/brakeman/processors/lib/render_path.rb +107 -0
  109. data/lib/brakeman/processors/lib/route_helper.rb +68 -0
  110. data/lib/brakeman/processors/lib/safe_call_helper.rb +16 -0
  111. data/lib/brakeman/processors/library_processor.rb +119 -0
  112. data/lib/brakeman/processors/model_processor.rb +191 -0
  113. data/lib/brakeman/processors/output_processor.rb +171 -0
  114. data/lib/brakeman/processors/route_processor.rb +17 -0
  115. data/lib/brakeman/processors/slim_template_processor.rb +107 -0
  116. data/lib/brakeman/processors/template_alias_processor.rb +116 -0
  117. data/lib/brakeman/processors/template_processor.rb +74 -0
  118. data/lib/brakeman/report.rb +78 -0
  119. data/lib/brakeman/report/config/remediation.yml +71 -0
  120. data/lib/brakeman/report/ignore/config.rb +135 -0
  121. data/lib/brakeman/report/ignore/interactive.rb +311 -0
  122. data/lib/brakeman/report/renderer.rb +24 -0
  123. data/lib/brakeman/report/report_base.rb +286 -0
  124. data/lib/brakeman/report/report_codeclimate.rb +70 -0
  125. data/lib/brakeman/report/report_csv.rb +55 -0
  126. data/lib/brakeman/report/report_hash.rb +23 -0
  127. data/lib/brakeman/report/report_html.rb +216 -0
  128. data/lib/brakeman/report/report_json.rb +42 -0
  129. data/lib/brakeman/report/report_markdown.rb +156 -0
  130. data/lib/brakeman/report/report_table.rb +107 -0
  131. data/lib/brakeman/report/report_tabs.rb +17 -0
  132. data/lib/brakeman/report/templates/controller_overview.html.erb +22 -0
  133. data/lib/brakeman/report/templates/controller_warnings.html.erb +21 -0
  134. data/lib/brakeman/report/templates/error_overview.html.erb +29 -0
  135. data/lib/brakeman/report/templates/header.html.erb +58 -0
  136. data/lib/brakeman/report/templates/ignored_warnings.html.erb +25 -0
  137. data/lib/brakeman/report/templates/model_warnings.html.erb +21 -0
  138. data/lib/brakeman/report/templates/overview.html.erb +38 -0
  139. data/lib/brakeman/report/templates/security_warnings.html.erb +23 -0
  140. data/lib/brakeman/report/templates/template_overview.html.erb +21 -0
  141. data/lib/brakeman/report/templates/view_warnings.html.erb +34 -0
  142. data/lib/brakeman/report/templates/warning_overview.html.erb +17 -0
  143. data/lib/brakeman/rescanner.rb +483 -0
  144. data/lib/brakeman/scanner.rb +317 -0
  145. data/lib/brakeman/tracker.rb +347 -0
  146. data/lib/brakeman/tracker/collection.rb +93 -0
  147. data/lib/brakeman/tracker/config.rb +101 -0
  148. data/lib/brakeman/tracker/constants.rb +101 -0
  149. data/lib/brakeman/tracker/controller.rb +161 -0
  150. data/lib/brakeman/tracker/library.rb +17 -0
  151. data/lib/brakeman/tracker/model.rb +90 -0
  152. data/lib/brakeman/tracker/template.rb +33 -0
  153. data/lib/brakeman/util.rb +481 -0
  154. data/lib/brakeman/version.rb +3 -0
  155. data/lib/brakeman/warning.rb +255 -0
  156. data/lib/brakeman/warning_codes.rb +111 -0
  157. data/lib/ruby_parser/bm_sexp.rb +610 -0
  158. data/lib/ruby_parser/bm_sexp_processor.rb +116 -0
  159. metadata +362 -0
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 7ddc7e6cb65aa8838c73a8052245d17b188059c2
4
+ data.tar.gz: 9e5e114ead150d6d8ac25cbe4d55f71ee4655f50
5
+ SHA512:
6
+ metadata.gz: d0555c9ee1835ccd8446cc81c4eb0f970cd2ce8966bf7ca3e0d71c81d74ff595aeb116f49b785f40acb4f57095d3a3dfc934d0b5418a8c42c59546ef8cad1dd1
7
+ data.tar.gz: 4d24f5a2e330ea82dc914175bb54e1a2db32bc7a41131e2fa7ea0facf9e6c6edf37588868a0f7e0257ad7589382b23599348ede3bca8e05a0154683050f2530f
data/CHANGES ADDED
@@ -0,0 +1,872 @@
1
+ # 3.3.1
2
+
3
+ * Delay loading vendored gems and modifying load path
4
+ * Avoid warning about SQL injection with `quoted_primary_key`
5
+ * Support more safe `&.` operations
6
+ * Allow multile line regex in `validates_format_of` (Dmitrij Fedorenko)
7
+ * Only consider `if` branches in templates
8
+ * Avoid overwriting instance/class methods with same name (Tim Wade)
9
+ * Add `--force-scan` option (Neil Matatall)
10
+ * Improved line number accuracy in ERB templates (Patrick Toomey)
11
+
12
+ # 3.3.0
13
+
14
+ * Skip processing obviously false if branches (more broadly)
15
+ * Skip if branches with `Rails.env.test?`
16
+ * Return exit code `4` if no Rails application is detected
17
+ * Avoid warning about mass assignment with `params.slice`
18
+ * Avoid warning about `u` helper (Chad Dollins)
19
+ * Add optional check for secrets in source code
20
+ * Process `Array#first`
21
+ * Allow non-Hash arguments in `protect_from_forgery` (Jason Yeo)
22
+ * Avoid warning on `popen` with array
23
+ * Bundle all dependencies in gem
24
+ * Track constants globally
25
+ * Handle HAML `find_and_preserve` with a block
26
+ * [Code Climate engine] When possible, output to /dev/stdout (Gordon Diggs)
27
+ * [Code Climate engine] Remove nil entries from include_paths (Gordon Diggs)
28
+ * [Code Climate engine] Report end lines for issues (Gordon Diggs)
29
+
30
+ # 3.2.1
31
+
32
+ * Remove `multi_json` dependency from `bin/brakeman`
33
+
34
+ # 3.2.0
35
+
36
+ * Skip Symbol DoS check on Rails 5
37
+ * Only update ignore config file on changes
38
+ * Sort ignore config file
39
+ * Support calls using `&.` operator
40
+ * Update ruby_parser dependency to 3.8.1
41
+ * Remove `fastercsv` dependency
42
+ * Fix finding calls with `targets: nil`
43
+ * Remove `multi_json` dependecy
44
+ * Handle CoffeeScript in HAML
45
+ * Avoid render warnings about params[:action]/params[:controller]
46
+ * Index calls in class bodies but outside methods
47
+
48
+ # 3.1.5
49
+
50
+ * Fix CodeClimate construction of --only-files (Will Fleming)
51
+ * Add check for denial of service via routes (CVE-2015-7581)
52
+ * Warn about RCE with `render params` (CVE-2016-0752)
53
+ * Add check for `strip_tags` XSS (CVE-2015-7579)
54
+ * Add check for `sanitize` XSS (CVE-2015-7578/80)
55
+ * Add check for `reject_if` proc bypass (CVE-2015-7577)
56
+ * Add check for mime-type denial of service (CVE-2016-0751)
57
+ * Add check for basic auth timing attack (CVE-2015-7576)
58
+ * Add initial Rails 5 support
59
+ * Check for implict integer comparison in dynamic finders
60
+ * Support directories better in --only-files and --skip-files (Patrick Toomey)
61
+ * Avoid warning about `permit` in SQL
62
+ * Handle guards using `detect`
63
+ * Avoid warning on user input in comparisons
64
+ * Handle module names with self methods
65
+ * Add session manipulation documentation
66
+
67
+ # 3.1.4
68
+
69
+ * Emit brakeman's native fingerprints for Code Climate engine (Noah Davis)
70
+ * Ignore secrets.yml if in .gitignore
71
+ * Clean up Ruby warnings (Andy Waite)
72
+ * Increase test coverage for option parsing (Zander Mackie)
73
+ * Work around safe_yaml error
74
+
75
+ # 3.1.3
76
+
77
+ * Check for session secret in secrets.yml
78
+ * Respect `exit_on_warn` in config file
79
+ * Avoid warning on `without_protection: true` with hash literals
80
+ * Make sure before_filter call with block is still a call
81
+ * CallIndex improvements
82
+ * Restore minimum Highline version (Kevin Glowacz)
83
+ * Add Code Climate output format (Ashley Baldwin-Hunter/Devon Blandin/John Pignata/Michael Bernstein)
84
+ * Iteratively replace values
85
+ * Output nil instead of false for user_input in JSON
86
+ * Depend on safe_yaml 1.0 or later
87
+ * Test coverage improvements for Brakema module (Bethany Rentz)
88
+
89
+ # 3.1.2
90
+
91
+ * Treat `current_user` like a model
92
+ * Set user input value for inline renders
93
+ * Avoid warning on inline renders with safe content types
94
+ * Handle empty interpolation in HAML filters
95
+ * Ignore filters that are not method names
96
+ * Avoid warning about model find/find_by* in hrefs
97
+ * Use SafeYAML to load configuration files
98
+ * Warn on SQL query keys, not values in hashes
99
+ * Allow inspection of recursive Sexps
100
+ * Add line numbers to class-level warnings
101
+ * Handle `private def ...`
102
+ * Catch divide-by-zero in alias processing
103
+ * Reduce string allocations in Warning#initialize
104
+ * Sortable tables in HTML report (David Lanner)
105
+ * Search for config file relative to application root
106
+
107
+ # 3.1.1
108
+
109
+ * Add optional check for use of MD5 and SHA1
110
+ * Avoid warning when linking to decorated models
111
+ * Add check for user input in session keys
112
+ * Fix chained assignment
113
+ * Treat a.try(&:b) like a.b()
114
+ * Consider j/escape_javascript safe inside HAML JavaScript blocks
115
+ * Better HAML processing of find_and_preserve calls
116
+ * Add more Arel methods to be ignored in SQL
117
+ * Fix absolute paths for Windows (Cody Frederick)
118
+ * Support newer terminal-table releases
119
+ * Allow searching call index methods by regex (Alex Ianus)
120
+
121
+ # 3.1.0
122
+
123
+ * Add support for gems.rb/gems.locked
124
+ * Update render path information in JSON reports
125
+ * Remove renaming of several Sexp nodes
126
+ * Convert YAML config keys to symbols (Karl Glaser)
127
+ * Use railties version if rails gem is missing (Lucas Mazza)
128
+ * Warn about unverified SSL mode in Net::HTTP.start
129
+ * Add Model, Controller, Template, Config classes internally
130
+ * Report file being parsed in debug output
131
+ * Update dependencies to Ruby 1.8 incompatible versions
132
+ * Treat Array.new and Hash.new as arrays/hashes
133
+ * Fix handling of string concatenation with existing string
134
+ * Treat html_safe like raw()
135
+ * Fix low confidence XSS warning code
136
+ * Avoid warning on path creation methods in link_to
137
+ * Expand safe methods to match methods with targets
138
+ * Avoid duplicate eval() warnings
139
+
140
+ # 3.0.5
141
+
142
+ * Fix check for CVE-2015-3227
143
+
144
+ # 3.0.4
145
+
146
+ * Add check for CVE-2015-3226 (XSS via JSON keys)
147
+ * Add check for CVE-2015-3227 (XML DoS)
148
+ * Treat `<%==` as unescaped output
149
+ * Update `ruby_parser` dependency to 3.7.0
150
+
151
+ # 3.0.3
152
+
153
+ * Ignore more Arel methods in SQL
154
+ * Warn about protect_from_forgery without exceptions (Neil Matatall)
155
+ * Handle lambdas as filters
156
+ * Ignore quoted_table_name in SQL (Gabriel Sobrinho)
157
+ * Warn about RCE and file access with `open`
158
+ * Handle array include? guard conditionals
159
+ * Do not ignore targets of `to_s` in SQL
160
+ * Add Rake task to exit with error code on warnings (masarakki)
161
+
162
+ # 3.0.2
163
+
164
+ * Alias process methods called in class scope on models
165
+ * Treat primary_key, table_name_prefix, table_name_suffix as safe in SQL
166
+ * Fix using --compare and --add-checks-path together
167
+ * Avoid warning about mass assignment with string literals
168
+ * Only report original regex DoS locations
169
+ * Improve render path information implementation
170
+ * Report correct file for simple_format usage CVE warning
171
+ * Remove URI.escape from HTML reports with GitHub repos
172
+ * Update ruby_parser to ~> 3.6.2
173
+ * Remove formatting newlines in HAML template output
174
+ * Ignore case value in XSS checks
175
+ * Fix CSV output when there are no warnings
176
+ * Handle processing of explictly shadowed block arguments
177
+
178
+ # 3.0.1
179
+
180
+ * Avoid protect_from_forgery warning unless ApplicationController inherits from ActionController::Base
181
+ * Properly format command interpolation (again)
182
+ * Remove Slim dependency (Casey West)
183
+ * Allow for controllers/models/templates in directories under `app/` (Neal Harris)
184
+ * Add `--add-libs-path` for additional libraries (Patrick Toomey)
185
+ * Properly process libraries (Patrick Toomey)
186
+
187
+ # 3.0.0
188
+
189
+ * Add check for CVE-2014-7829
190
+ * Add check for cross site scripting via inline renders
191
+ * Fix formatting of command interpolation
192
+ * Local variables are no longer formatted as `(local var)`
193
+ * Actually skip skipped before filters
194
+ * `--exit-on-warn --compare` only returns error code on new warnings (Jeff Yip)
195
+ * Fix parsing of `<%==` in ERB
196
+ * Sort warnings by fingerprint in JSON report (Jeff Yip)
197
+ * Handle symmetric multiple assignment
198
+ * Do not branch for self attribute assignment `x = x.y`
199
+ * Fix CVE for CVE-2011-2932
200
+ * Remove "fake filters" from warning fingerpints
201
+ * Index calls in `lib/` files
202
+ * Move Symbol DoS to optional checks
203
+ * CVEs report correct line and file name (Gemfile/Gemfile.lock) (Rob Fletcher)
204
+ * Change `--separate-models` to be the default
205
+
206
+ # 2.6.3
207
+
208
+ * Whitelist `exists` arel method from SQL injection check
209
+ * Avoid warning about Symbol DoS on safe parameters as method targets
210
+ * Fix stack overflow in ProcessHelper#class_name
211
+ * Add optional check for unscoped find queries (Ben Toews)
212
+ * Add framework for optional checks
213
+ * Fix stack overflow for cycles in class ancestors (Jeff Rafter)
214
+
215
+ # 2.6.2
216
+
217
+ * Add check for CVE-2014-3415
218
+ * Avoid warning about symbolizing safe parameters
219
+ * Update ruby2ruby dependency to 2.1.1
220
+ * Expand app path in one place instead of all over (Jeff Rafter)
221
+ * Add `--add-checks-path` option for external checks (Clint Gibler)
222
+ * Fix SQL injection detection in deep nested string building
223
+ * Add `-4` option to force Rails 4 mode
224
+ * Check entire call for `send`
225
+ * Check for .gitignore of secrets in subdirectories
226
+ * Fix block statment endings in Erubis
227
+ * Fix undefined variable in controller processing error (Jason Barnabe)
228
+
229
+ # 2.6.1
230
+
231
+ * Add check for CVE-2014-3482 and CVE-2014-3483
232
+ * Add support for keyword arguments in blocks
233
+ * Remove unused warning codes (Bill Fischer)
234
+
235
+ # 2.6.0
236
+
237
+ * Fix detection of `:host` setting in redirects with chained calls
238
+ * Add check for CVE-2014-0130
239
+ * Add `find_by`/`find_by!` to SQLi check for Rails 4
240
+ * Parse most files upfront instead of on demand
241
+ * Do not branch values for `+=`
242
+ * Update to use RubyParser 3.5.0 (Patrick Toomey)
243
+ * Improve default route detection in Rails 3/4 (Jeff Jarmoc)
244
+ * Handle controllers and models split across files (Patrick Toomey)
245
+ * Fix handling of `protected_attributes` gem in Rails 4 (Geoffrey Hichborn)
246
+ * Ignore more model methods in redirects
247
+ * Fix CheckRender with nested render calls
248
+
249
+ # 2.5.0
250
+
251
+ * Add support for RailsLTS 2.3.18.7 and 2.3.18.8
252
+ * Add support for Rails 4 `before_actions` and friends
253
+ * Move SQLi CVE checks to `CheckSQLCVEs`
254
+ * Check for protected_attributes gem
255
+ * Fix SQLi detection in chain calls in scopes
256
+ * Add GitHub-flavored Markdown output format (Greg Ose)
257
+ * Fix false positives when sanitize() is used in SQL (Jeff Yip)
258
+ * Add String#intern and Hash#symbolize_keys DoS check (Jan Rusnacko)
259
+ * Check all arguments in Model.select for SQLi
260
+ * Fix false positive when :host is specified in redirect
261
+ * Handle more non-literals in routes
262
+ * Add check for regex denial of service (Ben Toews)
263
+
264
+ # 2.4.3
265
+
266
+ No changes. 2.4.2 gem release was unsigned, 2.4.3 is signed.
267
+
268
+ # 2.4.2
269
+
270
+ * Remove `rescue Exception`
271
+ * Fix duplicate warnings about sanitize CVE
272
+ * Reuse duplicate call location information
273
+ * Only track original template output locations
274
+ * Skip identically rendered templates
275
+ * Fix HAML template processing
276
+
277
+ # 2.4.1
278
+
279
+ * Add check for CVE-2014-0082
280
+ * Add check for CVE-2014-0081, replaces CVE-2013-6415
281
+ * Add check for CVE-2014-0080
282
+
283
+ # 2.4.0
284
+
285
+ * Detect Rails LTS versions
286
+ * Reduce false positives for SQL injection in string building
287
+ * More accurate user input marking for SQL injection warnings
288
+ * Detect SQL injection in `delete_all`/`destroy_all`
289
+ * Detect SQL injection raw SQL queries using `connection`
290
+ * Parse exact versions from Gemfile.lock for all gems
291
+ * Ignore generators
292
+ * Update to RubyParser 3.4.0
293
+ * Fix false positives when SQL methods are not called on AR models (Aaron Bedra)
294
+ * Add check for uses of OpenSSL::SSL::VERIFY_NONE (Aaron Bedra)
295
+ * No longer raise exceptions if a class name cannot be determined
296
+ * Fingerprint attribute warnings individually (Case Taintor)
297
+
298
+ # 2.3.1
299
+
300
+ * Fix check for CVE-2013-4491 (i18n XSS) to detect workaround
301
+ * Fix link for CVE-2013-6415 (number_to_currency)
302
+
303
+ # 2.3.0
304
+
305
+ * Add check for Parameters#permit!
306
+ * Add check for CVE-2013-4491 (i18n XSS)
307
+ * Add check for CVE-2013-6414 (header DoS)
308
+ * Add check for CVE-2013-6415 (number_to_currency)
309
+ * Add check for CVE-2013-6416 (simple_format XSS)
310
+ * Add check for CVE-2013-6417 (query generation)
311
+ * Fix typos in reflection and translate bug messages
312
+ * Collapse send/try calls
313
+ * Fix Slim XSS false positives (Noah Davis)
314
+ * Whitelist `Model#create` for redirects
315
+ * Fix scoping issues with instance variables and blocks
316
+
317
+ # 2.2.0
318
+
319
+ * Reduce command injection false positives
320
+ * Use Rails version from Gemfile if it is available
321
+ * Only add routes with actual names
322
+ * Ignore redirects to models using friendly_id (AJ Ostrow)
323
+ * Support scanning Rails engines (Geoffrey Hichborn)
324
+ * Add check for detailed exceptions in production
325
+
326
+ # 2.1.2
327
+
328
+ * Do not attempt to load custom Haml filters
329
+ * Do not warn about `to_json` XSS in Rails 4
330
+ * Add --table-width option to set width of text reports (ssendev)
331
+ * Remove fuzzy matching on dangerous attr_accessible values
332
+
333
+ # 2.1.1
334
+
335
+ * New warning code for dangerous attributes in attr_accessible
336
+ * Do not warn on attr_accessible using roles
337
+ * More accurate results for model attribute warnings
338
+ * Use exit code zero with `-z` if all warnings ignored
339
+ * Respect ignored warnings in rescans
340
+ * Ignore dynamic controller names in routes
341
+ * Fix infinite loop when run as rake task (Matthew Shanley)
342
+ * Respect ignored warnings in tabs format reports
343
+
344
+ # 2.1.0
345
+
346
+ * Support non-native line endings in Gemfile.lock (Paul Deardorff)
347
+ * Support for ignoring warnings
348
+ * Check for dangerous model attributes defined in attr_accessible (Paul Deardorff)
349
+ * Update to ruby_parser 3.2.2
350
+ * Add brakeman-min gemspec
351
+ * Load gem dependencies on-demand
352
+ * Output JSON diff to file if -o option is used
353
+ * Add check for authenticate_or_request_with_http_basic
354
+ * Refactor of SQL injection check code (Bart ten Brinke)
355
+ * Fix detection of duplicate XSS warnings
356
+ * Refactor reports into separate classes
357
+ * Allow use of Slim 2.x (Ian Zabel)
358
+ * Return error exit code when application path is not found
359
+ * Add `--branch-limit` option, limit to 5 by default
360
+ * Add more methods to check for command injection
361
+ * Fix output format detection to be more strict again
362
+ * Allow empty Brakeman configuration file
363
+
364
+ # 2.0.0
365
+
366
+ * Add `--only-files` option to specify files/paths to scan (Ian Ehlert)
367
+ * Add Marshal/CSV deserialization check
368
+ * Combine deserialization checks into single check
369
+ * Avoid duplicate "Dangerous Send" and "Unsafe Reflection" warnings
370
+ * Avoid duplicate results for Symbol DoS check
371
+ * Medium confidence for mass assignment to attr_protected models
372
+ * Remove "timestamp" key from JSON reports
373
+ * Remove deprecated config file locations
374
+ * Relative paths are used by default in JSON reports
375
+ * `--absolute-paths` replaces `--relative-paths`
376
+ * Only treat classes with names containing `Controller` like controllers
377
+ * Better handling of classes nested inside controllers
378
+ * Better handling of controller classes nested in classes/modules
379
+ * Handle `->` lambdas with no arguments
380
+ * Handle explicit block argument destructuring
381
+ * Skip Rails config options that are real objects
382
+ * Detect Rails 3 JSON escape config option
383
+ * Much better tracking of warning file names
384
+ * Fix errors when using `--separate-models` (Noah Davis)
385
+ * Fix fingerprint generation to actually use the file path
386
+ * Fix text report console output in JRuby
387
+ * Fix false positives on `Model#id`
388
+ * Fix false positives on `params.to_json`
389
+ * Fix model path guesses to use "models/" instead of "controllers/"
390
+ * Clean up SQL CVE warning messages
391
+ * Use exceptions instead of abort in brakeman lib
392
+ * Update to Ruby2Ruby 2.0.5
393
+
394
+ # 1.9.5
395
+
396
+ * Add check for unsafe symbol creation
397
+ * Do not warn on mass assignment with `slice`/`only`
398
+ * Do not warn on session secret if in `.gitignore`
399
+ * Fix scoping for blocks and block arguments
400
+ * Fix error when modifying blocks in templates
401
+ * Fix session secret check for Rails 4
402
+ * Fix crash on `before_filter` outside controller
403
+ * Fix `Sexp` hash cache invalidation
404
+ * Respect `quiet` option in configuration file
405
+ * Convert assignment to simple `if` expressions to `or`
406
+ * More fixes for assignments inside branches
407
+ * Pin to ruby2ruby version 2.0.3
408
+
409
+ # 1.9.4
410
+
411
+ * Add check for CVE-2013-1854
412
+ * Add check for CVE-2013-1855
413
+ * Add check for CVE-2013-1856
414
+ * Add check for CVE-2013-1857
415
+ * Fix `--compare` to work with older versions
416
+ * Add "no-referrer' to HTML report links
417
+ * Don't warn when invoking `send` on user input
418
+ * Slightly faster cloning of Sexps
419
+ * Detect another way to add `strong_parameters`
420
+
421
+ # 1.9.3
422
+
423
+ * Add render path to JSON report
424
+ * Add warning fingerprints
425
+ * Add check for unsafe reflection (Gabriel Quadros)
426
+ * Add check for skipping authentication methods with blacklist
427
+ * Add support for Slim templates
428
+ * Remove empty tables from reports (Owen Ben Davies)
429
+ * Handle `prepend/append_before_filter`
430
+ * Performance improvements when handling branches
431
+ * Fix processing of `production.rb`
432
+ * Fix version check for Ruby 2.0
433
+ * Expand HAML dependency to include 4.0
434
+ * Scroll errors into view when expanding in HTML report
435
+
436
+ # 1.9.2
437
+
438
+ * Add check for CVE-2013-0269
439
+ * Add check for CVE-2013-0276
440
+ * Add check for CVE-2013-0277
441
+ * Add check for CVE-2013-0333
442
+ * Check for more send-like methods
443
+ * Check for more SQL injection locations
444
+ * Check for more dangerous YAML methods
445
+ * Support MultiJSON 1.2 for Rails 3.0 and 3.1
446
+
447
+ # 1.9.1
448
+
449
+ * Update to RubyParser 3.1.1 (neersighted)
450
+ * Remove ActiveSupport dependency (Neil Matatall)
451
+ * Do not warn on arrays passed to `link_to` (Neil Matatall)
452
+ * Warn on secret tokens
453
+ * Warn on more mass assignment methods
454
+ * Add check for CVE-2012-5664
455
+ * Add check for CVE-2013-0155
456
+ * Add check for CVE-2013-0156
457
+ * Add check for unsafe `YAML.load`
458
+
459
+ # 1.9.0
460
+
461
+ * Update to RubyParser 3
462
+ * Ignore route information by default
463
+ * Support `strong_parameters`
464
+ * Support newer `validates :format` call
465
+ * Add scan time to reports
466
+ * Add Brakeman version to reports
467
+ * Fix `CheckExecute` to warn on all string interpolation
468
+ * Fix false positive on `to_sql` calls
469
+ * Don't mangle whitespace in JSON code formatting
470
+ * Add AppTree as facade for filesystem (brynary)
471
+ * Add link for translate vulnerability warning (grosser)
472
+ * Rename LICENSE to MIT-LICENSE, remove from README (grosser)
473
+ * Add Rakefile to run tests (grosser)
474
+ * Better default config file locations (grosser)
475
+ * Reduce Sexp creation
476
+ * Handle empty model files
477
+ * Remove "find by regex" feature from `CallIndex`
478
+
479
+ # 1.8.3
480
+
481
+ * Use `multi_json` gem for better harmony
482
+ * Performance improvement for call indexing
483
+ * Fix issue with processing HAML files
484
+ * Handle pre-release versions when processing `Gemfile.lock`
485
+ * Only check first argument of `redirect_to`
486
+ * Fix false positives from `Model.arel_table` accesses
487
+ * Fix false positives on redirects to models decorated with Draper gem
488
+ * Fix false positive on redirect to model association
489
+ * Fix false positive on `YAML.load`
490
+ * Fix false positive XSS on any `to_i` output
491
+ * Fix error on Rails 2 name routes with no args
492
+ * Fix error in rescan of mixins with symbols in method name
493
+ * Do not rescan non-Ruby files in config/
494
+
495
+ # 1.8.2
496
+
497
+ * Fixed rescanning problems caused by 1.8.0 changes
498
+ * Fix scope calls with single argument
499
+ * Report specific model name in rendered collections
500
+ * Handle overwritten JSON escape settings
501
+ * Much improved test coverage
502
+ * Add CHANGES to gemspec
503
+
504
+ # 1.8.1
505
+
506
+ * Recover from errors in output formatting
507
+ * Fix false positive in redirect_to (Neil Matatall)
508
+ * Fix problems with removal of `Sexp#method_missing`
509
+ * Fix array indexing in alias processing
510
+ * Fix old mail_to vulnerability check
511
+ * Fix rescans when only controller action changes
512
+ * Allow comparison of versions with unequal lengths
513
+ * Handle super calls with blocks
514
+ * Respect `-q` flag for "Rails 3 detected" message
515
+
516
+ # 1.8.0
517
+
518
+ * Support relative paths in reports (fsword)
519
+ * Allow Brakeman to be run without tty (fsword)
520
+ * Fix exit code with `--compare` (fsword)
521
+ * Fix `--rake` option (Deepak Kumar)
522
+ * Add high confidence warnings for `to_json` XSS (Neil Matatall)
523
+ * Fix `redirect_to` false negative
524
+ * Fix duplicate warnings with `raw` calls
525
+ * Fix shadowing of rendered partials
526
+ * Add "render chain" to HTML reports
527
+ * Add check for XSS in `content_tag`
528
+ * Add full backtrace for errors in debug mode
529
+ * Treat model attributes in `or` expressions as immediate values
530
+ * Switch to method access for Sexp nodes
531
+
532
+ # 1.7.1
533
+
534
+ * Add check for CVE-2012-3463
535
+ * Add check for CVE-2012-3464
536
+ * Add check for CVE-2012-3465
537
+ * Add charset to HTML report (hooopo)
538
+ * Report XSS in select() for Rails 2
539
+
540
+ # 1.7.0
541
+
542
+ * Add check for CVE-2012-3424
543
+ * Link report types to descriptions on website
544
+ * Report errors raised while running check
545
+ * Improve processing of Rails 3 routes
546
+ * Fix "empty char-class" error
547
+ * Improve file access check
548
+ * Avoid warning on non-ActiveModel models
549
+ * Speed improvements by stripping down SexpProcessor
550
+ * Fix how `params[:x] ||=` is handled
551
+ * Treat user input in `or` expressions as immediate values
552
+ * Fix processing of negative array indexes
553
+ * Add line breaks to truncated table rows
554
+
555
+ # 1.6.2
556
+
557
+ * Add checks for CVE-2012-2660, CVE-2012-2661, CVE-2012-2694, CVE-2012-2695 (Dave Worth)
558
+ * Avoid warning when redirecting to a model instance
559
+ * Add `request.parameters` as a parameters hash
560
+ * Raise confidence level for model attributes in redirects
561
+ * Return non-zero exit code when missing dependencies
562
+ * Fix `before_filter :except` logic
563
+ * Only accept symbol literals as before_filter names
564
+ * Cache before_filter lookups
565
+ * Turn off quiet mode by default for `--compare`
566
+
567
+ # 1.6.1
568
+
569
+ * Major rewrite of CheckSQL
570
+ * Fix rescanning of deleted templates
571
+ * Process actions mixed into controllers
572
+ * Handle `render :template => ...`
573
+ * Check for inherited attr_accessible (Neil Matatall)
574
+ * Fix highlighting of HTML escaped values in HTML report
575
+ * Report line number of highlighted value, if available
576
+
577
+ # 1.6.0
578
+
579
+ * Remove the Ruport dependency (Neil Matatall)
580
+ * Add more informational JSON output (Neil Matatall)
581
+ * Add comparison to previous JSON report (Neil Matatall)
582
+ * Add highlighting of dangerous values in HTML/text reports
583
+ * Model#update_attribute should not raise mass assignment warning (Dave Worth)
584
+ * Don't check `find_by_*` method for SQL injection
585
+ * Fix duplicate reporting of mass assignment and SQL injection
586
+ * Fix rescanning of deleted files
587
+ * Properly check for rails_xss in Gemfile
588
+
589
+ # 1.5.3
590
+
591
+ * Add check for user input in Object#send (Neil Matatall)
592
+ * Handle render :layout in views
593
+ * Support output to multiple formats (Nick Green)
594
+ * Prevent infinite loops in mutually recursive templates
595
+ * Only check eval arguments for user input, not targets
596
+ * Search subdirectories for models
597
+ * Set values in request hashes and propagate to views
598
+ * Add rake task file to gemspec (Anton Ageev)
599
+ * Filter rescanning of templates (Neil Matatall)
600
+ * Improve handling of modules and nesting
601
+ * Test for zero errors in test reports
602
+
603
+ # 1.5.2
604
+
605
+ * Fix link_to checks for Rails 2.0 and 2.3
606
+ * Fix rescanning of lib files (Neil Matatall)
607
+ * Output stack trace on interrupt when debugging
608
+ * Ignore user input in if statement conditions
609
+ * Fix --skip-files option
610
+ * Only warn on user input in render paths
611
+ * Fix handling of views when using rails_xss
612
+ * Revert to ruby_parser 2.3.1 for Ruby 1.8 parsing
613
+
614
+ # 1.5.1
615
+
616
+ * Fix detection of global mass assignment setting
617
+ * Fix partial rendering in Rails 3
618
+ * Show backtrace when interrupt received (Ruby 1.9 only)
619
+ * More debug output
620
+ * Remove duplicate method in Brakeman::Rails2XSSErubis
621
+ * Add tracking of module and class to Brakeman::BaseProcessor
622
+ * Report module when using Brakeman::FindCall
623
+
624
+ # 1.5.0
625
+
626
+ * Add version check for SafeBuffer vulnerability
627
+ * Add check for select vulnerability in Rails 3
628
+ * select() is no longer considered safe in Rails 2
629
+ * Add check for skipping CSRF protection with a blacklist
630
+ * Add JSON report format
631
+ * Model#id should not be considered XSS
632
+ * Standardize methods to check for SQL injection
633
+ * Fix Rails 2 route parsing issue with nested routes
634
+
635
+ # 1.4.0
636
+
637
+ * Add check for user input in link_to href parameter
638
+ * Match ERB processing to rails_xss plugin when plugin used
639
+ * Add Brakeman::Report#to_json, Brakeman::Warning#to_json
640
+ * Warnings below minimum confidence are dropped completely
641
+ * Brakeman.run always returns a Tracker
642
+
643
+ # 1.3.0
644
+
645
+ * Add file paths to HTML report
646
+ * Add caching of filters
647
+ * Add --skip-files option
648
+ * Add support for attr_protected
649
+ * Add detection of request.env as user input
650
+ * Descriptions of checks in -k output
651
+ * Improved processing of named scopes
652
+ * Check for mass assignment in ActiveRecord::Associations::AssociationCollection#build
653
+ * Better variable substitution
654
+ * Table output option for rescan reports
655
+
656
+ # 1.2.2
657
+
658
+ * --no-progress works again
659
+ * Make CheckLinkTo a separate check
660
+ * Don't fail on unknown options to resource(s)
661
+ * Handle empty resource(s) blocks
662
+ * Add RescanReport#existing_warnings
663
+
664
+ ## 1.2.1
665
+
666
+ * Remove link_to warning for Rails 3.x or when using rails_xss
667
+ * Don't warn if first argument to link_to is escaped
668
+ * Detect usage of attr_accessible with no arguments
669
+ * Fix error when rendering a partial from a view but not through a controller
670
+ * Fix some issues with rails_xss, CheckCrossSiteScripting, and CheckTranslateBug
671
+ * Simplify Brakeman Rake task
672
+ * Avoid modifying $VERBOSE
673
+ * Add Brakeman::RescanReport#to_s
674
+ * Add Brakeman::Warning#to_s
675
+
676
+ ## 1.2.0
677
+
678
+ * Speed improvements for CheckExecute and CheckRender
679
+ * Check named_scope() and scope() for SQL injection
680
+ * Add --rake option to create rake task to run Brakeman
681
+ * Add experimental support for rescanning a subset of files
682
+ * Add --summary option to only output summary
683
+ * Fix a problem with Rails 3 routes
684
+
685
+ ## 1.1.0
686
+
687
+ * Relax required versions for dependencies
688
+ * Performance improvements for source processing
689
+ * Better progress reporting
690
+ * Handle basic operators like << + - * /
691
+ * Rescue more errors to prevent complete crashes
692
+ * Compatibility with newer Haml versions
693
+ * Fix some warnings
694
+
695
+ ## 1.0.0
696
+
697
+ * Better handling of assignments inside ifs
698
+ * Check more expressions for SQL injection
699
+ * Use latest ruby_parser for better 1.9 syntax support
700
+ * Better behavior for Brakeman as a library
701
+
702
+ ## 1.0.0rc1
703
+
704
+ * Brakeman can now be used as a library
705
+ * Faster call search
706
+ * Add option to return error code if warnings are found (tw-ngreen)
707
+ * Allow truncated messages to be expanded in HTML
708
+ * Fix summary when using warning thresholds
709
+ * Better support for Rails 3 routes
710
+ * Reduce SQL injection duplicate warnings
711
+ * Lower confidence on mass assignment with no user input
712
+ * Ignore mass assignment using all literal arguments
713
+ * Keep expanded context in view with HTML output
714
+
715
+ ## 0.9.2
716
+
717
+ * Fix Rails 3 configuration parsing
718
+ * Add t() helper to check for translate XSS bug
719
+
720
+ ## 0.9.1
721
+
722
+ * Add warning for translator helper XSS vulnerability
723
+
724
+ ## 0.9.0
725
+
726
+ * Process Rails 3 configuration files
727
+ * Fix CSV output
728
+ * Check for config.active_record.whitelist_attributes = true
729
+ * Always produce a warning for without_protection => true
730
+
731
+ ## 0.8.4
732
+
733
+ * Option for separate attr_accessible warnings
734
+ * Option to set CSS file for HTML output
735
+ * Add file names for version-specific warnings
736
+ * Add line number for default routes in a controller
737
+ * Fix hash_insert()
738
+ * Remove use of Queue from threaded checks
739
+
740
+ ## 0.8.3
741
+
742
+ * Respect -w flag in .tabs format (tw-ngreen)
743
+ * Escape HTML output of error messages
744
+ * Add --skip-libs option
745
+
746
+ ## 0.8.2
747
+
748
+ * Run checks in parallel threads by default
749
+ * Fix compatibility with ruby_parser 2.3.1
750
+
751
+ ## 0.8.1
752
+
753
+ * Add option to assume all controller methods are actions
754
+ * Recover from errors when parsing routes
755
+
756
+ ## 0.8.0
757
+
758
+ * Add check for mass assignment using without_protection
759
+ * Add check for password in http_basic_authenticate_with
760
+ * Warn on user input in hash argument with mass assignment
761
+ * auto_link is now considered safe for Rails >= 3.0.6
762
+ * Output detected Rails version in report
763
+ * Keep track of methods called in class definition
764
+ * Add ruby_parser hack for Ruby 1.9 hash syntax
765
+ * Add a few Rails 3.1 tests
766
+
767
+ ## 0.7.2
768
+
769
+ * Fix handling of params and cookies with nested access
770
+ * Add CVEs for checks added in 0.7.0
771
+
772
+ ## 0.7.1
773
+
774
+ * Require BaseProcessor for GemProcessor
775
+
776
+ ## 0.7.0
777
+
778
+ * Allow local variable as a class name
779
+ * Add checks for vulnerabilities fixed in Rails 2.3.14 and 3.0.10
780
+ * Check for default routes in Rails 3 apps
781
+ * Look in Gemfile or Gemfile.lock for Rails version
782
+
783
+ ## 0.6.1
784
+
785
+ * Fix XSS check for cookies as parameters in output
786
+ * Don't bother calling super in CheckSessionSettings
787
+ * Add escape_once as a safe method
788
+ * Accept '\Z' or '\z' in model validations
789
+
790
+ ## 0.6.0
791
+
792
+ * Tests are in place and fully functional
793
+ * Hide errors by default in HTML output
794
+ * Warn if routes.rb cannot be found
795
+ * Narrow methods assumed to be file access
796
+ * Increase confidence for methods known to not escape output
797
+ * Fixes to output processing for Erubis
798
+ * Fixes for Rails 3 XSS checks
799
+ * Fixes to line numbers with Erubis
800
+ * Fixes to escaped output scanning
801
+ * Update CSRF CVE-2011-0447 message to be less assertive
802
+
803
+ ## 0.5.2
804
+
805
+ * Output report file name when finished
806
+ * Add initial tests for Rails 2.x
807
+ * Fix ERB line numbers when using Ruby 1.9
808
+
809
+ ## 0.5.1
810
+
811
+ * Fix issue with 'has_one' => in routes
812
+
813
+ ## 0.5.0
814
+
815
+ * Add support for routes like get 'x/y', :to => 'ctrlr#whatever'
816
+ * Allow empty blocks in Rails 3 routes
817
+ * Check initializer for session settings
818
+ * Add line numbers to session setting warnings
819
+ * Add --checks option to list checks
820
+
821
+ ## 0.4.1
822
+
823
+ * Fix reported line numbers when using new Erubis parser
824
+ (Mostly affects Rails 3 apps)
825
+
826
+ ## 0.4.0
827
+
828
+ * Handle Rails XSS protection properly
829
+ * More detection options for rails_xss
830
+ * Add --escape-html option
831
+
832
+ ## 0.3.2
833
+
834
+ * Autodetect Rails 3 applications
835
+ * Turn on auto-escaping for Rails 3 apps
836
+ * Check Model.create() for mass assignment
837
+
838
+ ## 0.3.1
839
+
840
+ * Always output a line number in tabbed output format
841
+ * Restrict characters in category name in tabbed output format to
842
+ word characters and spaces, for Hudson/Jenkins plugin
843
+
844
+ ## 0.3.0
845
+
846
+ * Check for SQL injection in calls using constantize()
847
+ * Check for SQL injection in calls to count_by_sql()
848
+
849
+ ## 0.2.2
850
+
851
+ * Fix version_between? when no Rails version is specified
852
+
853
+ ## 0.2.1
854
+
855
+ * Add code snippet to tab output messages
856
+
857
+ ## 0.2.0
858
+
859
+ * Add check for mail_to vulnerability - CVE-2011-0446
860
+ * Add check for CSRF weakness - CVE-2011-0447
861
+
862
+ ## 0.1.1
863
+
864
+ * Be more permissive with ActiveSupport version
865
+
866
+ ## 0.1.0
867
+
868
+ * Check link_to for XSS (because arguments are not escaped)
869
+ * Process layouts better (although not perfectly yet)
870
+ * Load custom Haml filters if they are in lib/
871
+ * Tab separated output via .tabs output extension
872
+ * Switch to normal versioning scheme